Closed Judy-999 closed 1 year ago
다형성을 이용해서 메시지를 수신하는 객체가 실행 시간에 정해지면 그 객체가 실행하게 되는 메서드 자체가 달라진다고 생각합니다.
protocol iOSDeveloper {
func study()
}
struct 그루트: iOSDeveloper {
func study() {
print("악")
}
}
struct 수꿍: iOSDeveloper {
func study() {
print("야호 너무 재밌어")
}
}
struct 야곰 {
func 공부시킨다(iOS배우는사람: iOSDeveloper) {
iOS배우는사람.study()
}
}
실제로 다른 객체 그 자체와 연결되는 방법이 아니라 기능을 수행할 수 있는 객체들의 집합(다형성)에 메시지를 보내면, 송신자는 수신자를 모르는 상태로 메시지를 보내고 결과를 전달받을 수 있습니다. 이 부분에서 결합도가 낮아진다고 생각합니다.
struct 야곰 {
func 공부시킨다(iOS배우는사람: iOS) {
iOS배우는사람.study()
}
}
객체가 수신하는 메시지가 많다는 의미는 책임이 많다는 의미로 생각이 됩니다. 객체에 책임이 많아지면 객체가 처리해야 하는 일이 많아지기 때문에 응집도가 낮아지게 됩니다. 그리고 기본 원칙인
단일책임원칙
을 생각해봤을 때 최소 인터페이스를 가지면 유지보수 용이성나 재사용성이 높아지게 될 것 같습니다.
객체지향 프로그래밍 언어의 핵심적인 특징은 절차적인 언어와 다르게
메시지를 수신한 객체가 실행 시간에 메서드를 선택
할 수 있다는 점이라고 합니다. 실행 시간에 메서드를 선택한다는건 어떤 경우이고, 어떤 코드의 형태인걸까요? (149p)메시지는 송신자와 수신자 사이의 결합도를 낮춘다고 합니다. 메시지를 보내는 건 송신자와 수신자가 연결되는 것이라 생각했는데 왜 결합도를 낯추게 되는 걸까요? (153p)
공용 인터페이스는 메시지로 구성되어 있다고 이해했습니다. (167p) 이후 뒤에 최소 인터페이스를 가지는게 좋다고 나와 있는데 결과적으로 전체적인 설계에서 메시지를 적게 가지도록 하는 것이 좋을까요?