1. 객체 지향 설계 5원칙: SOLID
1) SRP (Single Responsibility Principle, 단일 책임의 원칙): 1개의 클래스는 1개의 method만을 갖는다
2) OCP (Open Closed Principle, 개방 폐쇄의 원칙): 수정에는 폐쇄, 확장에는 개방 / 직접 수정 x -> 상속을 통한 수정
3) LSP (Liskov Substitution Principle, 리스코프 치환의 원칙): 자식 객체가 부모 객체를 완전히 대체 가능
4) ISP (Interface Segregation Principle, 인터페이스 분리의 원칙): 사용자 별로 다른 인터페이스 / 범용 인터페이스 x
5) DIP (Dependency Inversion Principle, 의존성 역전의 원칙): Class 직접 참조 x -> 해당 Class의 상위 요소 (추상 Class or 인터페이스) 참조
2. 객체 지향 분석과 모델링
클래스 다이어그램 -> 시퀀스 다이어그램 -> 액티비티 다이어그램
1) 객체 지향 분석
3가지 관점(정보, 동적, 기능 관점)을 단계적으로 적용하여, 객체를 찾아내고, 객체의 속성과 동작 밝히는 작업
2) 모델링
(1) 정보 관점: 정적인 정보구조 / 객체 찾아내고 객체의 특성, 객체 사이의 관계 규명
(2) 동적 관점: 시스템의 상태와 상태를 변하게 하는 원인들
(3) 기능 관점: 주어진 입력에 대하여 어떤 결과가 나오는가 / 연산과 제약조건 묘사
3) 유스케이스
= 사용 예시
각 행위자(Actor)가 어떤 용도로 시스템을 사용하는가
* 행위자는 비슷한 역할을 수행하는 이해관계자들의 집합
각 유스케이스는 시나리오의 집합 (단, 시스템을 블랙박스로 보고 작성)
* 시나리오 = 정보 + 상황, 환경, 배경
4) 정보 모델링
유스케이스 시나리오 바탕으로 정보 찾아내고,
UML(Unified Modeling Language)의 클래스 다이어그램으로 나타냄
* 클래스 다이어그램: 클래스 내부 속성, 클래스 간의 관계만 표현
5) 동적 모델링
객체의 상태나 동작의 변화 혹은 객체 간 상호 작용에 포커스,
클래스들의 오퍼레이션(함수) 찾는 과정
UML의 시퀀스 다이어그램으로 나타냄
6) 기능 모델링
시퀀스 다이어그램에서 도출한 오퍼레이션 안에서 이루어지는 여러 로직들을,
액티비티 다이어그램으로 표현
클래스 내의 이벤트 처리과정 정확히 이해하기 위해
3. 객체 지향 설계와 원리
1) 객체 vs 클래스
객체 = 실세계의 사물 / 속성의 모임 / 클래스의 인스턴스
클래스 = 같은 속성을 가지는 객체들의 집합
2) 캡슐화
정보 은닉을 통한 추상화, 독립성 향상
3) 상속
일반화 = 클래스들 사이 유사성을 모아 new 클래스로 정의하는 것
4) 다형성
오퍼레이션(함수) 이름이 같아도 클래스에 따라 다르게 동작하는 것
오버라이딩 = 상위 클래스에서 정의된 메소드를 하위 클래스에서 재정의
오버로딩 = 매개변수 타입 및 개수를 달리하여 메소드 다중 정의
*동적 바인딩 = 실행 시간에 하위 클래스의 객체를 통해 동작이 정해지는 것
4. 정적 모델링과 동적 모델링
1) 정적 모델링
= 정보 모델링
데이터베이스 구조 알아내기
클래스 다이어그램
2) 동적 모델링
정적 분석 결과를 바탕으로 수행
객체의 상태나 동작의 변화 혹은 객체 간 상호 작용에 관심을 두고 클래스 오퍼레이션 찾는 과정
* 인터랙션 다이어그램: 시퀀스 다이어그램, 컬레보레이션 다이어그램
5. 디자인 패턴
1) 디자인 패턴 개념
문제해결 모범답안
-목적에 따른 구분-
(1) 생성패턴: 객체의 생성 관련
(2) 구조패턴: 클래스 or 객체의 합성 관련
(3) 행위패턴: 클래스 or 객체 간 상호작용 방법 관련
-범위에 따른 구분-
(4) 클래스패턴: 상속을 다룸 / 컴파일 타임에 결정 / 정적
(5) 객체패턴: 런타임에 변경 가능 / 동적
2) 대표적인 디자인 패턴