OOP 이론 2편 with UML (상속, 추상 클래스, 다형성, 인터페이스)

서문🌙·2023년 3월 8일
0
post-thumbnail

OOP 이론 1편(OOP, 객체, 클래스, 캡슐화)

1. Inheritance(상속)

  • 상속
    • 일반(general)클래스에서 파생되어 더욱 구체적인 클래스를 정의하는데 사용됨
    • 상속 관계에서, 하위 클래스(subclass)는 상위 클래스(superclass)의 모든 속성, 작업 및 관계를 상속받으며, 이는 subclass가 superclass의 모든 특성을 재사용하고 확장할 수 있음을 의미 함.

💡 상속(Generalization)은 subclass -> superclass 방향으로 비어있는 세모 화살표로 연결됨.


2. Abstract Class(추상 클래스)

  • 추상 클래스
    • 후손 클래스가 상속받게 될 공통된 속성(속성, 함수)를 정의하고, 이를 통해 코드의 중복을 방지하고 유지보수성을 향상시킬 수 있음.
    • 추상 클래스는 하나 이상의 추상 메서드(동작)을 포함하며, 이는 추상 클래스를 상속받은 하위 클래스는 반드시 추상 메서드를 구현해야 한다는 것을 의미함.
    • 추상 클래스는 자신의 인스턴스를 생성할 수 없음

추상 클래스는 일반적으로 클래스의 일반적인 동작을 정의하고, 실제 구현은 하위 클래스에서 제공되도록 함.

이를 통해 객체지향 프로그래밍에서 클래스 간의 계층 구조를 효과적으로 관리할 수 있도록 함.

💡 추상 클래스는 다이어그램에서 "기울어진 클래스명" 으로 표기


3. Polymorphism(다형성)

  • Polymorphism means
    • 동일한 메세지(메서드 호출)여도 받아들이는 객체에 따라 다르게 해석될 수 있음을 의미.
    • ex) run을 상속받은 dog와 cat이 있을 때, dog의 distance의 더 많이 증가
  • Polymorphism
    • Overriding - 상위 클래스의 메서드를 하위 클래스에서 재정의
    • Overloading - 여러 개의 메서드가 서로 다른 매개변수를 가짐


4. Interface(인터페이스)

  • 인터페이스
    • 서비스들을 정의하는 특수한 클래스
    • 추상 함수와 상수들의 선언을 가질 수 있음
    • 멤버 변수는 가질 수 없다.
    • 인터페이스를 상속 받았다고 해서 구현이 강제되는 것은 아니다.
  • C++에서의 인터페이스
    • "순수 가상 함수"만 포함하는 추상 클래스를 의미한다.
    • 구현(Realization) 방법 : public 상속
    • 일반화(Generalization) 방법 : public 상속
  • Java에서의 인터페이스
    • "Interface" 라는 키워드를 사용하여 선언
    • 구현(Realization) 방법 : implements 키워드
    • 일반화(Generalization) 방법 : extends 키워드

💡 interface에 대한 Realization(구현)은 비어있는 삼각 점선 화살표로 클래스 -> 인터페이스 방향으로 표기한다.


profile
예외(exception)는 있다

0개의 댓글