객체지향(Object-Oriented)이란?
- 현실 세계를 그대로 모형화
- 소프트웨어 개발 시 객체들을 조립해 작성 가능
- 소프트웨어 재사용 및 확장이 용이, 유지보수가 쉬움
- 주요 요소와 개념에는 객체, 클래스, 캡슐화, 상속, 다형성이 존재함
1. 객체
- 객체란, 데이터와 데이터를 처리하는 함수를 캡슐화한 하나의 모듈이다.
- 함수는 객체가 수행하는 기능, 객체가 갖는 데이터를 처리하는 알고리즘
- 함수는 객체가 메시지를 받아 실행해야 할 객체의 구체적 연산을 정의
- 함수를 메소드, 서비스, 동작, 연산이라고도 함
2. 클래스
- 클래스란, 유사한 객체를 정의한 집합으로 속성+행위를 정의한 것으로 일반적인 Type을 의미한다.
- 인스턴스: 클래스에 속한 각 객체를 의미
- 메시지: 객체들 간에 상호작용을 하는데 사용되는 수단으로 객체에 어떤 행위를 하도록 지시하는 명령을 말한다.
3. 객체지향의 주요 개념
1) 캡슐화(Encapsulation)
- 데이터와 데이터를 처리하는 함수를 하나로 묶은 것
- 캡슐화된 객체의 세부 내용이 은폐되어 변경이 발생해도 오류의 파급 효과가 적음
- 캡슐화된 객체들은 재사용이 용이함
- 인터페이스가 단순해지고 객체간의 결합도가 낮아짐
2) 상속성(Inheritance)
- 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려 받는 것
- 하위 클래스는 상위 클래스로부터 받은 속성과 연산 외에도 새로운 것을 첨가할 수 있음
- 클래스의 재사용, 소프트웨어의 재사용을 높이는 중요한 개념
* 다중상속성: 한 개의 클래스가 2개 이상의 클래스로부터 속서오가 연산을 상속받는 것
3) 다형성(Polymorphism)
- 하나의 메시지에 대해 각 객체가 갖고 있는 고유한 방법대로 응답하는 것을 의미
- 하나의 클래스나 메서드가 다양한 방식으로 동작이 가능한 것을 의미
- 오버로딩과 오버라이딩이 존재
4) 정보 은닉(Information Hiding)
- 캡슐화에서 가장 중요한 개념으로 다른 객체에 자신의 정보를 숨기는 것
- 연산만을 통해 접근을 허용함
- 각 객체의 수정이 다른 객체에 주는 Side Efrrect를 최소화하는 기술
5) 추상화(Abstraction)
- 불필요한 부분을 생략, 객체 속성 중 가장 중요한 것에 중점을 두어 모델화하는 것
- 완전한 시스템 구축 전, 그 시스템과 유사한 모델을 만들어 여러 요인들을 테스트할 수 있음
4. 객체지향 설계 원칙(SOLID)
1) 단일 책임 원칙
- 모든 클래스는 단일 목적으로 생성되고, 하나의 책임만 가져야 한다.
2) 개방-폐쇄의 원칙
- 소프트웨어 구성 요소는 확장에 대해서는 개방되어야 하나 수정에 대해서는 폐쇄적이어야 한다.
3) 리스코프치환 원칙
- 부모 클래스가 들어갈 자리에 자식 클래스를 대체하여도 계획대로 작동해야 한다.
4) 인터페이스 분리 원칙
- 한 인터페이스는 자신이 사용하지 않는 인터페이스를 클라이언트에 특화되도록 분리해야 한다.
5) 의존 역전 원칙
- 의존관계를 맺으면 변하기 쉽고 변화 빈도가 높은 것보다 변하기 어렵고 변화 빈도가 낮은 것에 의존한다.
5. 럼바우(Rumbaugh) 객체지향 분석 기법
- 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 객체지향 분석 기법
1) 럼바우(Rumbaugh) 객체지향 분석 절차
(1) 객체 모델링(Object Modeling): 객체를 다이어그램으로 표시
(2) 동적 모델링(Dynamic Modeling): 상태를 시간 흐름에 다라 다이어그램으로 표시
(3) 기능 모델링(Functional Modeling): 자료흐름도(DFD)를 이용하여 여러 프로세스 간의 자료 흐름을 표시
객체 모델링 -> 동적 모델링 -> 기능 모델링
# 객동기
6. Coad와 Yourdon 방법
- E-R 다이어그램을 사용하여 객체의 행위를 모델링하는 객체지향 분석 방법
'자격증 > 정보처리기사(필기)' 카테고리의 다른 글
아키텍처 설계 (0) | 2023.05.11 |
---|---|
미들웨어(Middleware) (0) | 2023.05.11 |
UI(User Interface, 사용자 인터페이스) (0) | 2023.05.10 |
요구사항 분석 (0) | 2023.05.10 |
UML(Unifield Modeling Language) (0) | 2023.05.09 |
댓글