객체에 대한 오해
- 현실을 그대로 반영한다?
- 상세할수록 생성자가 커지고 유지보수가 어려워 짐
- 객체 = 클래스? / 중요한 건 상속?
- 클래스나 상속이 지원이 안될때의 자바스크립트로도 객체지향이 가능했음
- 데이터베이스 테이블 형태로 그대로 생성?
- 메소드 혹은 클래스 크기가 커져 변경에 유연하지 않음, 모든 도메인에 수정이 필요할 가능성이 있음
객체지향 프로그래밍을 하는 이유
- 구조적 설계로 역할과 책임을 기반으로 안정적인 구조를 만들어줌 => 재사용과 변경에 유연함
객체란?
- 자율적이며 책임과 역할을 바탕으로 다른 객체와 메세지를 통해 협력하는 것
객체지향 설계란?
- 자율성을 가진 객체들이 서로 협력하게 분할 시키는 설계
- 객체끼리의 역할, 책임을 적절하게 나누고 협력을 하게 만든다
- 객체는 혼자 있을 때에 전혀 의미가 없다
객체의 구성 요소
상태 | 객체가 가진 상태 |
행동 | 객체의 상태를 변경, 행동을 통해 다른 객체와 협업 |
식별자 | 각 객체를 구분할 수 있는 유니크한 값 |
객체지향 설계의 첫 걸음
- 행동이 상태를 정의
- 객체 지향의 의의는 협력을 통한 목적 달성
- 객체의 구성 요소 중 행동을 기반으로 협력
- 객체지향의 설계는 상태가 아닌 행동부터 정의
- 책임 주도 설계
- 책임과 역할을 기반으로 먼저 정의를 한다
- 유즈케이스 이용해 책임 주도 설계를 진행
과외 수강생 관리 프로그램(예시)
- 새로운 수강생을 등록할 수 있어야 함
- 수강생에 필요한 정보는 나이, 이름, 성별, 주소가 있음
- 기본적인 정보가 입력되지 않았을 때에는 에러를 반환
=> 행동기반으로 추출
- 사용자의 정보입력
- 유효성 검증
- 데이터 저장
- 결과 반환
'개발 개념' 카테고리의 다른 글
단위 테스트와 테스트 더블 (0) | 2025.02.13 |
---|---|
클린아키텍처 (0) | 2025.02.11 |
객체지향 생활 체조 원칙 9가지 (0) | 2025.02.11 |
1급 컬렉션 (0) | 2025.02.11 |
VO(Value Object) (0) | 2025.02.11 |