객체 지향
실세계의 개체를 속성과 메서드가 결합한 형태의 객체로 표현하는 기법
객체 지향 구성요소
1. 클래스
- 특정 객체 내의 변수와 매서드를 정의하는 일종의 틀(붕어빵 틀)
- 데이터를 추상화 하는 단위
- 속성은 변수 형태로, 행위는 매서드 형태로 선언
2. 객체
- 물리, 추상적으로 자신과 다른 것을 식별 가능한 대상
- 클래스에서 정의한 것을 토대로 메모리에 할당
- 객체마다 각각의 상태와 식별성을 가짐
3. 매서드
- 객체를 사용하는 방법
- 함수 또는 프로시저에 해당하는 연산 기능
4. 그외
메세지 - 객체 간 상호 작용을 위한 수단
인스턴스 - 객체 지향 기법에서 클래스를 통해 만든 실제의 객체
속성 - 한 클래스 내 속한 객체들이 가진 데이터 값을 단위별로 정의
객체 지향 기법
1. 캡슐화
- 연관된 데이터와 함수를 하나로 묶어 필요한 인터페이스만 밖으로 드러내는 것
- 재사용이 용이
- 필요없는 내용은 숨기기에 정보 은닉과 깊은 관계
- 외부 변경에 의한 오류의 파급 효과과 적음
2. 상속성
- 상위 클래스의 속성과 메서드를 하위 클래스에서 재정의 없이 물려받아 사용하는 것
3. 다형성
- 하나의 메세지에 각 객체가 가진 고유한 방법으로 응답할 수 있는 능력
- 오버로딩
매개변수의 타입과 개수를 다르게 하여 같은 이름의 매서드를 여러 개 가지는 것
- 오버라이딩
상위 클래스에서 정의된 일반 매서드를 구현하기 위해 하위 클래스에서 재정의할 수 있는 것
4. 추상화
- 공통 성질을 추출하여 추상 클래스를 설정하는 것
- 사용자가 꼭 알아야 하는 정보만을 사용하여 복잡성을 단순화 하는것
5. 관계성
- 객체간의 상호참조하는 관계를 표현하는 방식
- 연관화(is member of) : 클래스와 객체의 참조 및 이용관계
- 집단화(is part of) : 객체간의 구조적인 집약 관계
- 분류화(is instance of), 일반화(is a), 특수화(is a)
6. 정보 은닉
- 내부 데이터와 메서드를 숨기고 공개된 인터페이스로만 접근이 가능하도록 하는 보안 기술
객체 지향 설계 원칙(SOLID)
- 단일 책임의 원칙(SRP) : 하나의 클래스는 하나의 목적을 위해 생성되며, 클래스가 제공하는 모든 서비스는 하나의 책임을 위해 집중
- 개방 폐쇄 원칙(OCP) : 소프트웨어 구성요소는 확장에는 열려있고, 변경에는 닫혀있어야 한다는 원칙
- 리스코프 치환의 원칙(LSP) : 서브타입(상속받은 하위 클래스)은 어디서든 자신 기반 타입(상위 클래스)으로 교체 가능하다는 원칙
- 인터페이스 분리의 원칙(ISP) : 객체 설계 시 그 기능과 상관없는 부분이 변해도 영향을 받지 않아야 한다는 원칙
- 의존성 역전의 원칙(DIP) : 어떤 클래스를 참조할 경우, 그 클래스를 직접 참조가 아닌, 대상의 상위요소(추상 클래스 or 인터페이스)로 참조하라는 원칙
객체 지향 분석 방법론 종류
OOSE(야콥슨)
- 유스케이스에 의한 접근 방법
- 분석, 설계, 구현 단계로 구성
OMT(럼바우)
- 그래픽 표기법을 이용, 소프트웨어 구성요소를 모델링하는 방법(객동기)
객체 모델링(정보모델링) : 시스템에서 요구하는 객체를 찾고 관계를 정의하여 ER 다이어그램을 만드는 과정까지의 모델링
동적 모델링 : 시간 흐름에 따라 객체들 사이의 제어 흐름, 동작 순서 등의 동적인 행위를 표현하는 모델링
기능 모델링 : 프로세스들의 자료흐름을 중심으로 처리과정 표현 모델링
- etc. 코드-요든 방법론, 워프-브록 방법론