객체지향 설계 - 클래스

xx.xx·2023년 11월 2일
1

c++

목록 보기
1/8

객체지향프로그래밍 OOP(object-oriented-programming)은 프로그램을 작업 단위가 아닌 모델 단위로 구성한다.

  • has-a 관계

포함관계, 소유관계, 집계 관계라고 한다.
한 클래스가 다른 클래스의 일부라고 생각하면 쉽다.
ex) 동물원 - 푸바오

has-a 관계에는 두 가지 유형이 있다
집계 유형 : 집계된 객체는 집계를 수행한 대상이 제거되어도 남아있다.
동물원이 없어지면 푸바오가 다른 곳으로 옮겨지는 것처럼
합성 유형 : 여러 객체로 구성된 객체가 제거되면 포함된 객체로 사라진다.
창을 지우면 창에 있던 버튼들이 사라지는 것처럼

  • is-a 관계

파생, 서브클래싱, 확장, 상속 등으로 다양하게 표현한다.
상속은 일반적으로 A는 일종의 B다 라고 표현 가능하다.

푸바오는 일종의 동물이다.
원숭이는 일종의 동물이다.

그러면 동물이라는 공통점이 존재하게 되는데 그럼 Animal이라는 base class로 정의할 수 있는 것이다.

파생 클래스는 부모 클래스가 가진 메서드를 변경하거나 오버라이드 할 수 있다. 대부분 동물이 걸어서 이동하므로 move()라는 메서드를 정의할 수 있다.
캥거루는 뛰어서 이동하므로 파생 클래스인 캥거루 클래스는 모든 것을 유지하고 move() 메서드 구현 방식만 변경하면 된다.

  • 다형성
    일정한 속성과 매서드를 표준으로 정해두면 그 형식에 맞는 객체라면 어느 것이든 서로 바꿔서 적용할 수 있다는 개념.

0개의 댓글