4-4. 객체지향 (Object-Oriented)
• 객체지향
각 요소들을 객체로 만든 후, 객체들을 조립해서 소프트웨어를 개발하는 기법
‣ 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
‣ 소프트웨어의 재사용 및 확장 용이
‣ 고품질의 소프트웨어를 빠르게 개발
‣ 유지보수가 쉬움
• 객체지향의 구성 요소 : 객체, 클래스, 메시지
• 1. 객체 (Object)
데이터와 이를 처리하기 위한 함수를 묶어 놓은 소프트웨어 모듈
| 데이터 (속성, 상태, 변수, 상수, 자료구조) |
객체가 가지고 있는 정보 속성, 상태, 분류 등 |
| 함수 (메소드, 서비스, 동작, 연산) |
객체가 상태를 참조하거나 변경하는 수단 객체가 수행하는 기능으로 데이터를 처리하는 알고리즘 |
• 2. 클래스 (Class)
공통된 속성과 연산을 갖는 객체의 집합
‣ 하나 이상의 유사한 객체를 묶어서 하나의 공통된 특성을 표현한 것
‣ 각각의 객체들이 갖는 속성과 연산을 정의하고 있는 틀
‣ 데이터를 추상화하는 단위
‣ 인스턴스(Instance) : 클래스에 속한 각각의 객체
• 3. 메시지 (Message)
객체들 간의 상호작용에 사용되는 수단
‣ 객체의 동작이나 연산을 일으키는 외부의 요구 사항
• 객체지향의 특징 : 캡슐화, 상속, 다형성, 연관성
• 1. 캡슐화 (Encapsulation)
외부에서의 접근을 제한하기 위해 인터페이스를 제외한 세부 내용을 은닉하는 것
‣ 외부 모듈의 변경으로 인한 파급 효과가 적음
‣ 객체끼리 메시지를 주고 받을 때, 상대 객체의 세부 내용은 알 필요가 없음
→ 인터페이스 단순, 객체간의 결합도 감소
✓ 캡슐화와 정보은닉
캡슐화는 관련된 요소들을 묶어 외부와 내부를 구별해주는 장치로, 데이터와 함수를 묶어주는 장치
정보은닉은 캡슐 내 세부 요소들에 대한 세부 구현사항을 외부로에 숨기는 장치로, 데이터와 함수를 내부에 숨기는 장치
캡슐화가 되어있다고 해서 반드시 정보 은닉이 되는 것은 아님
• 2. 상속 (Inheritance)
상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
‣ 하위 클래스는 물려받은 속성과 연산을 즉시 자신의 속성으로 사용 가능
‣ 하위 클래스는 상속받은 속성과 연산 외에 새로운 속상과 연산을 첨가하여 사용 가능
‣ 상위 클래스 = 부모 클래스, 하위 클래스 = 자식 클래스
• 3. 다형성 (Polymorphism)
하나의 메시지에 대해 각각의 객체가 고유한 방법으로 응답할 수 있는 능력
‣ 하나의 메시지에 대해 여러 가지 형태의 응답이 존재
‣ 객체들은 동일한 메소드명 사용 및 같은 의미의 응답
‣ 예) '+'의 경우 숫자 클래스에서는 덧셈, 문자 클래스에서는 문자열의 연결 기능으로 사용
• 4. 연관성 (Relationship)
두 개 이상의 객체들이 상호 참조하는 관계
| 종류 | 의미 | 특징 |
| is member of | 연관화 (Association) | 2개 이상의 객체가 상호 관련되어 있음 |
| is instance of | 분류화 (Classfication) | 동일한 형의 특성을 갖는 객체들을 모아 구성 |
| is part of | 집단화 (Aggregation) | 공통적인 성질들로 추상화한 상위 객체를 구성 |
| is a | 일반화 (Generalization) | 공통적인 성질들로 추상화한 상위 객체를 구성 |
| 특수화/상세화 (Specialization) | 상위 객체를 구체화하여 하위 객체를 구성 |
4-5. 객체지향 분석 및 설계
• 객체지향 분석 (OOA ; Object Oriented Analysis)
사용자의 요구사항과 관련된 객체, 속성, 연ㄴ산, 관계 등을 정의하여 모델링하는 작업
‣ 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석
‣ 객체지향 분석의 주요 목적 : 클래스를 식별
• 객체지향 분석의 방법론
| Rumbaugh(럼바우) 방법 | 객체 모델, 동적 모델, 기능 모델로 나누어 분석활동 수행 |
| Booch(부치) 방법 | 클래스와 객체들을 분석 및 식별하고, 클래스의 속성과 연산을 정의 미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스 모두 사용 |
| Jacobson 방법 | 유스케이스 (Use Case)를 강조하여 사용 |
| Coad와 Youtdon 방법 | E-R 다이어그램 사용 → 객체의 행위를 모델링 객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등 |
| Wirfs-Brock 방법 | 고객 명세서를 평가 → 설계 작업까지 연속적으로 수행 분석과 설계 간의 구분이 없음 |
• 럼바우 (Rumbaugh)의 분석 기법
모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법
‣ 객체 모델링 기법 (OMT ; Object-Modeling Technique)
‣ 객체 모델링 → 동적 모델링 → 기능 모델링 순으로 분석 활동 진행
- 럼바우 분석 활동
| 객체 모델링 (Object Modeling) |
시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정 |
| 객체 다이어그램 이용 | |
| 정보 모델링 (Information Modeling) | |
| 동적 모델링 (Dynamic Modeling) |
시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현 |
| 상태 다이어그램 이용 | |
| 기능 모델링 (Function Modeling) |
다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현 |
| 자료 흐름도 (DFD) 이용 |
• 객체 지향 설계 원칙 (SOLID 원칙)
변경이나 확장에 유연한 시스템을 설계하기 위해 지켜져야 할 원칙
| 단일 책임 원칙 (SRP) | 객체는 단 하나의 책임만 가져야 한다. |
| 개방-폐쇄 원칙 (OCP) | 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야 한다. |
| 리스코프 치환 원칙 (LSP) | 자식 클래스는 최소한 부모 클래스의 기능은 수행할 수 있어야 한다. |
| 인터페이스 분리 원칙 (ISP) | 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다. |
| 의존 역전 원칙 (DIP) | 의존 관계 성립 시 추상성이 높은 클래스와 의존 관계를 맺어야 한다. |
참조 : 캡슐화와 정보은닉
캡슐화와 정보은닉
캡슐화클래스 혹은 객체라는 개념을 접할 때 가장 먼저 생각나게 하는 용어 가운데 바로 캡슐화 -캡슐화는 관련된 데이터와 함수를 묶는 장치이다. 관련된 데이터와 관련된 함수들을 클래스라
frontierdev.tistory.com
'Study > 정보처리기사' 카테고리의 다른 글
| 정보처리기사 실기 4장. 서버 프로그램 구현_4 (1) | 2023.09.25 |
|---|---|
| 정보처리기사 실기 4장. 서버 프로그램 구현_3 (0) | 2023.09.25 |
| 정보처리기사 실기 4장. 서버 프로그램 구현_1 (0) | 2023.09.25 |
| 정보처리기사 실기 2장. 데이터 입출력 구현_9 (0) | 2023.09.22 |
| 정보처리기사 실기 2장. 데이터 입출력 구현_8 (0) | 2023.09.22 |