issues
search
yepdi
/
TIL
Today I Learn
0
stars
0
forks
source link
오브젝트 - 객체지향 프로그래밍
#6
Open
yepdi
opened
2 years ago
yepdi
commented
2 years ago
협력, 객체, 클래스
어떤 클래스가 필요한지를 고미하기 전에 어떤 객체들이 필요한지 고민하라. 객체를 중심에 두는 접근 방법은 설계를 단순하고 깔끔하게 만든다
객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원. -> 다른 객체에게 도움을 주거나 의존하면서 살아가는 협력적인 존재
자율적인 객체
객체가 상태와 행동을 가지는 복합적인 존재
객체가 스스로 판단하고 행동하는 자율적인 존재
캡슐화
데이터와 기능을 객체 내부로 함께 묶는 것
외부에서 접근가능한 부분으로 public interface. 내부에서만 접근 가능한 부분으로 구현
협력
객체는 다른 객체의 인터페이스에 공개된 행동을 수행하도록 요청(request).
요청을 받은 객체는 자율적인 방법에 따라 요청을 처리한 후 응답(response)
객체가 다른 객체와 상호작용할 수 있는 방법은 메시지를 전송하는 것.
상속과 다형성
상속과 인터페이스
인터페이스 : 객체가 이해할 수 있는 메시지의 목록 정의
상속 : 부모 클래스가 제공하는 모든 인터페이스를 자식 클래스가 물려 받음 -> 자식 클래스는 부모 클래스가 수신할 수 있는 모든 메시지를 수신할 수 있기 때문에 외부 객체는 자식 클래스를 부모 클래스와 동일한 타입으로 간주할 수 있다 (업캐스팅)
다형성
어떤 메서드가 실행될 것인지는 메시지를 수신하는 객체의 클래스가 어떤 것인지에 따라 다르다
지연 바인딩, 동적 바인딩 : 메시지와 메서드를 실행 시점에 바인딩 하는 것
코드 재사용
상속은 코드를 재사용하기 위해 널리 사용되는 방법.
상속은 객체지향에서 코드를 재사용하기 위해 널리 사용되는 기법 -> 캡슐화 위반, 설계를 유연하지 못하게 한다
합성
인터페이스에 정의된 메시지를 통해서만 코드를 재사용하는 것
효과적인 캡슐화. 의존하는 인스턴스를 교체하는 것이 쉬워서 설계를 유연하게 한다
허나 다형성을 위해 인터페이스를 재사용하는 경우 상속과 합성을 함께 조합해서 사용
협력, 객체, 클래스
자율적인 객체
캡슐화
협력
상속과 다형성
상속과 인터페이스
다형성
코드 재사용
합성