아키텍처 패턴 / 객체지향

2023. 2. 14. 18:35정처기 필기/1과목 - 소프트웨어 설계

아키택처 패턴

* 아키택처란 ? 전체 시스템의 밑그림

 

1. 레이어 패턴(Layers Pattern)

-  시스템을 계층(Layer)으로 구분하여 구성하는 고전적 방법

 

2. 클라이언트 - 서버 패턴

- 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴

- 클라이언트나 서버는 독립적이다.

- 다만, 응답을 받기 위해 동기화 되는 경우 제외

* 컴포넌트 : 독립적인 기능을 수행하는 실행코드 기반으로 작성된 모듈

 

3. 파이프-필터 패턴

- 데이터 스트림 절차의 각 단계를 필터 컴포넌트로 캡슐화파이프를 통해 데이터를 전송하는 패턴

- 필터 컴포넌트는 재사용이 좋고, 확장에 용이하다.

- 필터 컴포넌트를 재배치하여 다양한 파이프라인 구축이 가능

 

4. 모델-뷰-컨트롤러 패턴

- 모델 : 핵심 기능과 데이터를 보관 (Entity)

- 뷰 : 사용자에게 정보를 표시

- 컨트롤러 : 입력 처리 / 뷰 제어 / UI 

- 각 파트는 별도의 컴포넌트로 분리되어 서로 영향 받지 않고 개발 작업을 수행하는 것이 중요하다.

- 대화형 애플리케이션에 적합하다.

 

5. 마스터-슬레이브 패턴

- 마스터 컴포넌트에서 슬레이브 컴포넌트로 분할한 후,

슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식

* 장애 허용 시스템 , 병렬 컴퓨터 시스템

 

6. 브로커 패턴

- 컴포넌트와 사용자를 연결해주는 패턴

* 분산 환경 시스템

 

7. 피어-투-피어 패턴

- 피어를 하나의 컴포넌트로 간주하며, 각 피어는 서비스를 호출하는 클라이언트가 될 수도,

서비스를 제공하는 서버가 될 수도 있는 패턴

* 멀티스레딩 사용

 

8. 이벤트 - 버스 패턴

- 소스가 특정 채널에 이벤트 메시지를 발행하면, 해당 채널을 구독한 리스너들이 메시지를 받아 이벤트를 처리하는 방식

- 이벤트를 생성하는 소스, 이벤트를 수행하는 리스너

- 이벤트의 통로인 채널, 채널을 관리하는 버스

 

9. 블랙보드 패턴

- 해결책이 명확하지 않은 문제를 처리하는데 유용한 패턴

* 음성인식, 차량 식별, 신호 해석

 

10. 인터프리터 패턴

- 특정 언어로 작성된 프로그램 코드를 해석하는 컴포넌트를 설계할 때 사용


객체 지향

1. 객체(Object)

- 독립적으로 식별 가능한 이름을 가지고 있다. (hashcode)

- 상태(State)는 일반적으로 시간에 따라 변한다. 

- 객체와 객체는 상호 연관성에 의한 관계가 형성됨

- 객체가 반응할 수 있는 메시지의 집합을 행위(연산, Method)라고 하며, 객체는 행위의 특성을 나타냄

- 객체 일정한 기억장소를 가지고 있음.

 

2. 클래스(Class) 

- 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현한 것

- 공통된 속성과 연산(행위)를 갖는 객체의 집합

- 객체지향 프로그램에서 데이터를 추상화하는 단위

- 각각의 객체들이 갖는 속성과 연산(Method)을 정의하고 있는 틀

- 슈퍼 클래스는 특정 클래스의 상위 클래스

- 서브 클래스는 특정 클래스의 하위 클래스

 

3. 인스턴스

- 클래스에 속한 각각의 객체

- 클래스로부터 새로운 객체를 생성하는 것을 인스턴스화라고 한다.

 

4. 메서드

- 클래스로부터 생성된 객체를 사용하는 방법

- 함수(Function) or 프로시저(Procedure)에 해당하는 연산

 

5. 메시지

- 객체에게 어떤 행위를 하도록 지시하기 위한 방법

 

6. 캡슐화(encapsulation)

- 데이터와 데이터를 처리하는 함수를 하나로 묶는 것

- 인터페이스를 제외한 세부 내용이 은폐(정보 은닉)되어 외부 접근이 제한됨

- 정보 은닉 측면과 가장 밀접한 관계

- 외부 모듈의 변경으로 인한 파급 효과가 적음

- 재사용 용이, 인터페이스 단순해짐

- 결합도 Down / 응집도 Up

 

7. 상속(Inheritance)

- 상위 클래스의 모든 속성/연산을 하위 클래스가 물려 받는 것

- 재사용 !

 

8. 다중 상속

- 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속 받는 것

 

9. 다형성(Polymorphism)

- 똑같은(하나의) 메시지로 각각의 객체가 가진 고유한 방법으로 응답하는 능력