본문 바로가기
ETC/개발 지식

[Object] 객체지향 프로그래밍 2

by heekng 2022. 5. 16.
반응형

객체지향 프로그래밍 2

컴파일 시간 의존성과 실행 시간 의존성

  • 코드의 의존성실행 시점의 의존성
  • 코드의 의존성과 실행 시점의 의존성은 서로 다를 수 있다. -> 클래스 사이의 의존성과 객체 사이의 의존성은 동일하지 않을 수 있다.
  • 유연하고, 쉽게 재사용할 수 있으며, 확장 가능한 객체지향 설계가 가지는 특징은 코드의 의존성실행 시점의 의존성이 다르다는 것이다.
  • 코드의 의존성과 실행 시점의 의존성이 다르면?
    • 코드를 이해하기 위해서는 코드뿐만 아니라 객체를 생성하고 연결하는 부분을 찾아야 하기 때문에 코드를 이해하기 어려워진다.
    • 하지만 코드는 더 유연해지고 확장 가능해진다.
  • 무조건 유연한 설계도, 무조건 읽기 쉬운 코드도 정답이 아니다.

차이에 의한 프로그래밍

  • 차이에 의한 프로그래밍: 상속을 이용해 부모 클래스와 다른 부분만을 추가해서 새로운 클래스를 쉽고 빠르게 만드는 방법
  • 상속: 두 클래스 사이의 관게를 정의하는 방법, 상속 관계를 선언하믕로써 한 클래스는 자동으로 다른 클래스가 제공하는 코드를 자신의 일부로 합칠 수 있다.
    • 상속을 사용하면 코드 중복을 제거하고 여러 클래스 사이에서 동일한 코드를 공유할 수 있게 된다.

상속과 인터페이스

  • 상속이 가치있는 이유: 부모 클래스가 제공하는 모든 인터페이스를 자식 클래스가 물려받을 수 있기 때문에
  • 업캐스팅: 자식 클래스가 부모 클래스를 대신하는 것

다형성

  • 다형성: 동일한 메시지를 수신했을 때 객체의 타입에 따라 다르게 응답할 수 있는 능력
    • 추상 클래스와 같이 부모 클래스에 동일한 메시지를 전송하지만 실제로 어떤 메서드가 실행될 것인지는 메시지를 수신하는 객체의 클래스가 무엇이냐에 따라 달라지는 것
  • 다형성은 컴파일 시간 의존성과 실행 시간 의존성을 다르게 만들 수 있는 객체지향의 특성을 이용해 서로 다른 메서드를 실행할 수 있게 한다.
  • 이렇게 추상 클래스와 같은 부모 클래스를 이용하여 자손 클래스의 인터페이스를 통일하기 위해 사용한 구현 방법이 상속이다.
  • 지연바인딩, 동적 바인딩: 메시지와 메서드를 실행 시점에 바인딩한다는 것
    • 객체지향이 컴파일 시점의 의존성과 실행 시점의 의존성을 분리하고, 하나의 메시지를 선택적으로 서로 다른 메서드에 사용할 수 있는 이유
  • 초기 바인딩, 정적 바인딩: 컴파일 시점에 실행될 함수나 프로시저를 결정하는 것
  • 구현 상속: 코드를 재사용하기 위한 목적으로 상속을 사용하는 것
  • 인터페이스 상속: 다형적인 협력을 위해 부모 클래스와 자식 클래스가 인터페이스를 공유할 수 있도록 상속을 이용하는 것
반응형

'ETC > 개발 지식' 카테고리의 다른 글

[CleanCode] 3장 함수 - 1  (0) 2022.06.26
[CleanCode] 2장 의미있는 이름  (0) 2022.06.25
Cron 표현식  (0) 2022.06.24
[Object] 객체지향 프로그래밍 1  (0) 2022.05.16
[Object] 객체지향 설계  (0) 2022.05.10
[Object] 객체와 설계  (0) 2022.05.09