'패턴'에 해당되는 글 1건

  1. 2008.04.28 디자인 패턴이란...

패턴의 3가지 유형
1. 생성 패턴 : 직접 객체의 인스턴스를 생성하게 하는 대신에 간접적으로 객체를 생성하게 한다. 이것은 어떤 특정한 경우에 어떤 객체를 생성할 필요가 있는지를 결정할 때 프로그램에 유연성을 부여해준다.
2. 구조 패턴 : 객체의 그룹을 복잡한 사용자 인터페이스나 회계 데이터와 같이 더 큰 구조로 구성할 수 있게 한다. 3. 행위 패턴 : 시스템의 객체들 사이에 커뮤니케이션과 복잡한 프로그램에서의 흐름을 제어하는 방법을 정의할 수 있게 한다.

객체지향 접근 방법에 대한 노트
디자인 패턴을 사용하는 기본적인 이유는 클래스를 분리하여 서로에 대하여 너무 많은 것을 알지 못하도록 하는데 있다. 이와 함께 이들 패턴을 사용하는 것은 다시 고안해야하는 수고를 덜어주며, 다른 프로그래머가 쉽게 이해할 수 있는 용어로 간결하게 여러분의 프로그래밍 접근 방법을 설명할 수 있게 한다.
객체지향 프로그래머는 클래스를 분리하기 위해 여러 전략을 사용하며, 여기에는 캡슐화와 상속성이 포함된다. 객체지향 기능을 제고하는 거의 모든 언어는 상속성을 지원한다. 부모 클래스에서 상속되는 클래스는 해당 부모 클래스의 모든 메서드에 접근할 수 있다. 또한 비공개가 아닌 모든 변수에도 접근할 수 있다. 그러나 클래스를 상속성 계층도로 시작하면 지나치게 여러분 스스로를 제한 할수 있을뿐만 아니라, 특정한 메서드 구현이라는 짐을 져야 하는 경우도 있다. 이걸을 우려하여 이 책은 다음과 같이 제안한다.

[구현 자체에 프로그램하는 것이 아니라 인터페이스에 프로그램 하라.]
이것을 간단하게 설명하면, 클래스 계층도 상위에는 추상 클래스나 인터페이스를 정의해야 한다는 것이다. 추상클래스나 인터페이스는 어떠한 메서드도 구현하고 있지 않으며, 단지 해당 클래스가 지원하는 메서드를 정의 할 뿐이다. 이렇게 하면, 모든 파생클래스에서는 좀더 자유롭게 자신의 목적에 적합한 방식으로 이들 메서드를 구현할 수 있게 된다. 그리고 C#은 단지 인터페이스만 지원하고 상속성을 지원하지 않기 때문에 C#구문에서 이것은 아주 잘 적용될 수 있다.

객체 합성(Object composition)
단순히 다른 객체를 포함하는 객체를 생성하는 것이다. 즉, 다른 객체에 여러 객체를 캡슐화 하는 것이다. 많은 초보 객체지향 프로그래머들이 상속성을 사용하여 모든 문제를 해결하려고 하지만, 좀 더 정교한 프로그램을 작성하려고 할때 객체 합성의 이점에 감사한 마음을 갖게 될 것이다. 여러분의 새로운 객체는 부모 클래스의 모든 메서드를 가질 필요없이 목적에 맞는 인터페이스를 제공할 수 있다.

[상속성 보다는 객체 합성을 사용하라.]
결국은 개발에 있어 프로그래머들이 재사용 가능하게끔 아키텍처를 설계하는것. ==> 디자인

패턴
프레임웍 초기에 자주 나오는 개념
스몰토크모델-뷰-컨트롤러 프레임웍(Model-View-Controller Framework for Smalltalk) MVC패턴이다. 컨트롤러, 뷰, 데이터 모델 이 세가지가 제한된 연결 방식으로 서로 대화하는 위의 세 객체는 강력한 디자인 패턴의 예이다.
디자인 패턴은 객체들이 각자의 데이터 모델과 메서드에 얽히지 않고 서로 커뮤니테이션하는 방법을 기술한다. 이러한 분할을 유지하는 것은 항상 좋은 객체지향프로그래밍의 목표였으며, 객체가 자신의 일에만 집중할 수 있도록 했다면 이미 여러분은 몇개의 공통적인 디자인 패턴을 사용해본 것이다.
디자인 패턴은 1990년 초에 GUI 애플리케이션 프레임웍인 ET++에 포함된 패턴을 기술하였던 Erich Gamma에 의해 좀 더 공식적으로 논의 되기 시작하였다.(1992).

디자인 패턴의 정의
 생활속에서 어떤 일을 하는 방식에 대해 이야기하며 항상 어떤 패턴이 반복되고 있다는 걸 알것이다.

- 디자인 패턴은 반복적으로 발견하게 되는 걸계 문제에 대한 반복적인 솔루션이다.
- 디자인 패턴은 소프트웨어 개발 영역에서 일정한 작업을 수행하는 방법을 설명하는 규칙의 집합을 구성한다.
- 디자인 패턴은 반복적인 아키텍처 설계 주제들의 재사용성에 대해 초점을 맞추며, 프레임웍은 세부 설계와 구현에 초점을 맞춘다.
- 패턴은 특정한 설계 상황에서 야기되는 반복적인 설계 문제를 설명하고 이에 대한 솔류션을 제시한다.
- 패턴은 하나의 클래스와 인스턴스 또는 컴포넌트의 단계를 뛰어넘는 추상화를 식별하고 상세화한다.


==>객체들간의 상화작용에 대한것.





Posted by 사나에