• 개요
    • 하나의 객체가 여러 타입을 가질 수 있는 것을 의미한다.
  • 목적
    • 사용자의 편의성을 보장하자.
    • 유지보수를 편하게 하자.
      • 객체 지향 설계로 만든 코드의 경우, 상위 클래스 타입을 공유하는 하위 클래스 객체를 교환하는 것으로, 코드 수정량을 줄일 수 있다.
  • 수단
    • Upcasting
      • 상위 클래스 타입을 가지는 하위 클래스 객체를 생성하는 것이다.
    • Overriding
      • 상위 클래스의 메서드와 동일한 시그니처를 하위 클래스에서 재정의 하는 것이다.
      • 상위 클래스의 자료형을 가지는 하위 클래스 객체의 메서드를 실행하면, 동적으로 상위 클래스가 아닌 하위 클래스에서 재정의된 메서드를 실행한다.
    • Overloading
      • 메서드의 이름은 같되, 매개변수만 바꾸어 여러 메서드로 정의한 것이다.
      • 매개 변수의 타입, 순서, 갯수만 바꾸어도 같은 이름의 함수의 호출로, 서로 다른 함수를 호출할 수 있다.
반응형
  • 개요
    • 구체적인 사물에서, 목적 달성에 필요한 공통적인 특성만을 추출 / 재조합, 추상적으로 분류하여, 클래스로서 모델링 하는 것이다.
      • 예) 사람 클래스를 설계할 때, 관찰자에 따라 의미 있는 특성
        • 은행 : 나이, 직업, 연봉
        • 병원 : 시력, 몸무게, 혈액형
  • 목적
    • 클래스나 데이터베이스의 테이블 등을 설계하자.
  • 수단
    • class 키워드로 구현
    • 객체 그 자체의 공통적인 특성을 생각하고, 목적에 맞는 것만 추출하여 하나의 클래스로 만들 수 있다.
      • 예) 로봇 강아지를 만들자.
        • 로봇 강아지의 목적을 생각한다.
          • 24시간 감시하여, 낯선 사람이 집에 침입하면 주인에게 경고한다.
        • 강아지1, 강아지2, 강아지3, ..., 강아지n의 공통적인 특성을 생각한다.
          • 강아지1의 개인기인 두 발로 걷기는 모든 강아지에 해당되지 않기에 제외한다.
          • 모든 강아지가 주인을 사랑한다는 공통적인 특성이기에 추출한다.
          • 모든 강아지가 밥을 먹고, 잠을 자지만, 로봇 강아지의 목적에 맞지 않으므로 제외한다.
  • 출처
반응형
  • 개요
    • 상위 클래스의 특성을 하위 클래스에서 상속하여 재사용, 확장하는 것이다.
    • 상속의 관점은 부모 - 자식 관계라기 보다, 동물 - 포유류의 관계에 가깝다.
    • 상속 관계는 [하위 클래스 is a kind of 상위 클래스]를 만족해야 한다.
      • 펭귄 is a kind of 조류
      • 펭귄 is a kind of 동물
      • 고래 is a kind of 동물
      • 조류 is a kind of 동물
  • 목적
    • 코드를 재활용하여 생산성을 높이자.
  • 수단
    • extends
반응형
    • 개요
      • 객체 외부로부터 내부 정보를 은닉한다.
    • 목적
      • 사용자에 의한 객체의 오용을 방지하자.
        • 객체의 내부 데이터를 외부에서 참조할 수 없으므로, 내부 데이터의 변화가 다른 객체에 영향을 끼치지 못한다.
      • 유지보수를 간편화 하자.
        • 객체 내부가 바뀌어도, 사용 방법은 같으므로, 리팩토링으로 인한 객체의 개수 범위가 해당 객체로 한정 된다.
    • 수단
      • 접근 제어자

반응형

+ Recent posts