본문 바로가기
728x90

Core5

디자인 패턴 디자인 원칙 - 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리한다. - 구현이 아닌 인터페이스에 맞춰서 프로그래밍한다. - 상속보다는 구성을 활용한다. - 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결한하는 디자인을 사용해야 한다. - 클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 대해서는 닫혀 있어야 한다. (OCP : Open-Closed Principle) - 추상화된 것에 의존하도록 만들어라. 구상클래스에 의존하도록 만들지 않도록 한다. - 최소 지식 원칙 - 정말 친한 친구하고만 얘기하라. (다음 네 종류의 객체의 메서드만 호출한다. 1. 객체 자체 / 2. 메서드에 매개변수로 전달된 객체 / 3. 그 메서드에서 생성하거나 인스턴스를 만든 객체.. 2024. 3. 20.
디자인 패턴 범주 생성 패턴 : 객체 인스턴스를 생성하는 패턴으로, 클라이언트와 그 클라이언트가 생성해야 하는 객체 인스턴스 사이의 연결을 끊어주는 패턴입니다. (싱글턴, 빌더, 프로토 타입, 추상 팩토리, 팩토리 메소드) 행동 패턴 : 클래스와 객체들이 상호작용하는 방법과 역할을 분담하는 방법을 다루는 패턴입니다. (템플릿 메소드, 비지터, 중재자, 반복자, 싱글턴, 인터프리터, 역할변경, 전략, 상태, 옵저버, 메먼토) 구조 패턴 : 클래스와 객체를 더 큰 구조로 만들 수 있게 구성을 사용하는 패턴입니다.(데코레이터, 컴포지트, 프록시, 퍼사드, 플라이웨이트, 어댑터, 브리지) 클래스 패턴 : 클래스 사이의 관계가 상속으로 어떻게 정의되는지를 다룹니다. 클래스 사이의 관계는 대부분 컴파일할 때 결정됩니다. (템플릿 메.. 2022. 5. 8.
객체 지향 원칙 바뀌는 부분은 캡슐화한다. 상속보다는 구성을 활용한다 구현보다는 인터페이스에 맞춰서 프로그래밍한다 서로 상호작용하는 객체사이에는 가능하면 느슨한 결합을 사용해야 하낟 확장에는 열려 있어야 하지만, 변경에는 닫혀 있어야 한다(OCP) 추상화된 것에 의존하게 만들고, 구상 클래스에 의존하지 않게 만든다 어떤 클래스가 바뀌는 이유는 하나뿐이어야만 한다. 반복자 패턴 : 컬렉션의 구현 방법을 노출하지 않으면서 집합체내의 모든 항목에 접근하는 방법을 제공한다. 컴포지트 패턴 : 객체를 트리구조로 구성해서 부분-전체 계층구조를 구현한다. 컴포지트 패턴을 사용하면 클라이언트에서 개별객체와 복합객체를 똑같은 방법으로 다룰 수 있다. 2022. 4. 17.
2진수와 음수 10진수간의 변환 (signed int) 2진수 11110111을 10진수로 표현 (signed int) 1단계, 1은 0으로, 0은 1으로 변환한다.(1의보수) 00001000 2단계, 1단계에서 나온 결과에 1을 더한다. (2의보수 : 1의 보수에 1을 더하는것) 00001001 3단계, 2단계 결과를 10진수화하여 '-'기호를 붙인다. -9 결론 : 2진수 11110111 은 10진수로 -9 이다. 10진수 -9를 2진수로 표현 1단계, 9를 8비트로 만든다. 00001001 2단계, -9는 음수이기 때문에, 첫번째 부호비트를 1로 바꾼다. 10001001 3단계, 0은 1로, 1은 0으로 바꾼다. (1의보수) 단, 부호비트는 그대로 유지. 11110110 4단계, 3단계 결과값에 1을 더한다. (2의 보수 : 1의 보수에 1을 더하는것).. 2020. 6. 25.
UML 스테레오타입(Stereotype) 개념 스테레오타입(Stereotype) 개념 UML을 처음 접하면서 가장 명쾌하게 이해되지 않는 개념 중 하나가 바로 스테레오타입(stereotype)일 것이다. 사전을 찾아보면 "연판, 관례, 고정 관념, 상투적인 문구, ..." 등의 의미로 나오지만 이미 의미를 알고 있다면 그런 용어가 알쏭 달쏭할 수는 있지만 그것으로부터 의미를 이해하기에는 불가능해 보인다. UML 명세에 나와있는 설명은 더 어렵다. 모델링 타임에 정의된 새로운 메타클래스(metaclass)라는 등, 사용상의 구별(usage distinction)이라는 등 역시 이미 UML 하부구조를 알고 있어야 하는 설명들이다. 스테레오타입은 그 정의로써 이해하기에는 다소 마음에 와 닿지 않을 것이므로 먼저 예를 들어보자. 윈도우 기반의 UI를 가지고.. 2009. 6. 25.
728x90