본문 바로가기

개발 개념

객체지향

객체에 대한 오해

  • 현실을 그대로 반영한다? 
    • 상세할수록 생성자가 커지고 유지보수가 어려워 짐
  • 객체 = 클래스? / 중요한 건 상속?
    • 클래스나 상속이 지원이 안될때의 자바스크립트로도 객체지향이 가능했음
  • 데이터베이스 테이블 형태로 그대로 생성?
    • 메소드 혹은 클래스 크기가 커져 변경에 유연하지 않음, 모든 도메인에 수정이 필요할 가능성이 있음

 

객체지향 프로그래밍을 하는 이유

  • 구조적 설계로 역할과 책임을 기반으로 안정적인 구조를 만들어줌 => 재사용과 변경에 유연함

 

객체란?

  • 자율적이며 책임과 역할을 바탕으로 다른 객체와 메세지를 통해 협력하는 것

 

객체지향 설계란?

  • 자율성을 가진 객체들이 서로 협력하게 분할 시키는 설계
    • 객체끼리의 역할, 책임을 적절하게 나누고 협력을 하게 만든다
    • 객체는 혼자 있을 때에 전혀 의미가 없다

 

객체의 구성 요소

상태 객체가 가진 상태
행동 객체의 상태를 변경, 행동을 통해 다른 객체와 협업
식별자 각 객체를 구분할 수 있는 유니크한 값

 

 

객체지향 설계의 첫 걸음

  • 행동이 상태를 정의
    • 객체 지향의 의의는 협력을 통한 목적 달성
    • 객체의 구성 요소 중 행동을 기반으로 협력
    • 객체지향의 설계는 상태가 아닌 행동부터 정의
  • 책임 주도 설계
    • 책임과 역할을 기반으로 먼저 정의를 한다
    • 유즈케이스 이용해 책임 주도 설계를 진행

 

과외 수강생 관리 프로그램(예시)

  1. 새로운 수강생을 등록할 수 있어야 함                                  
    • 수강생에 필요한 정보는 나이, 이름, 성별, 주소가 있음
    • 기본적인 정보가 입력되지 않았을 때에는 에러를 반환

 => 행동기반으로 추출

  1. 사용자의 정보입력
  2. 유효성 검증
  3. 데이터 저장
  4. 결과 반환

아키텍쳐 설계

 

'개발 개념' 카테고리의 다른 글

단위 테스트와 테스트 더블  (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