Closed July911 closed 2 years ago
p.88을 다시 읽어보고 저는 생각이 조금 달라졌어요. 추상화의 어느 차원이든 프로토콜에 한정지어서 생각하는 것은 오독일 수 있을 것 같습니다.
객체의 공통된 행동을 기반으로 같은 타입으로 분류 하는 것이 이 장에서 다루는 추상화의 가장 핵심적인 내용인 것 같아요(프로토콜이 아니라!!). Swift로 치면 '타입 정의'가 추상화인 것이지요. 그리고 추상화의 두 가지 차원은 별개의 사례가 있는 것이 아니라, 묶여서 함께 가는 내용인 것 같네요.
프로토콜도 타입들을 추상화한 것일 수 있겠지만, 어쨌든 이번 장에서 다루는 핵심적인 내용과는 거리가 있는 것 같아 덧붙여 봤습니다!
나무가 덧붙여주신 코멘트의 내용에 동의합니다. 추상화의 예시로 작성된 두 가지의 설명은 각자 예시를 들기에는 분리되는 개념이 아니라는 생각이 들어요.
저도 나무와 고사리가 덧붙여준 내용에 동의합니다! 그리고 프로토콜은 타입을 추상화한 타입이라 생각합니다.
저도 책에서 이야기하는 추상화는 타입 정의
라고 생각합니다.
질문에 예시로 들었던 프로토콜은 97p에서 이야기하는 일반화/특수화 관계 모두 될 수 있다고 생각합니다.
프로토콜을 채택한 타입 간의 관계는 일반화라고 볼 수 있고, 프로토콜을 채택해줌으로써 특수성도 부여된거죠.
저도 모든 분들의 의견에 동의합니다! 💡 언급해주신 추상화의 두 가지 정의(예시)는 크게 다르지 않다고 생각해요. 그래서 개발자가 프로토콜을 쓰는 의도나 프로토콜을 바라보는 시각(코다가 프로토콜을 '타입의 타입'이라고 생각한다는 것이 떠올랐어요)에 따라 달라질 수 있다고 생각합니다.
허황이 말씀해주신 내용에 동의합니다. 예를들어 토끼와 사람 모두 뛸 수 있으니 "뛸 수 있는 애들"로 일반화할 수 있다 생각합니다. 토끼와 사람은 "뛸수 있는 애들"의 특수화인것이고요
책에서는 복잡성을 다루기 위한 추상화의 예시로
라고 설명하고 있습니다. 여러분들이 생각하시는 Swift 언어 내에서 첫번째 두번째 예시는 무엇이 있을까요? 저희는 타입간의 복잡성을 해소하기 위한 예시로 프로토콜 정도를 생각했는데, 1 번에 해당하는지 2 번에 해당하는지 의견의 차이가 있었습니다. 여러분들의 생각이 궁금합니다!
토의한 내용 -> 첫번째로 프로토콜을 보는 시각은 타입이 존재하고 그 후에 프로토콜로 묶어주는 개념이라고 저는 이해했고,
나무 같은 경우에는 프로토콜이 존재하고 불필요한 세부 사항을 제거하고 타입에 채택시킨다는 개념으로 이해를 했습니다. 프로토콜과 타입간의 선후관계를 어떻게 생각하는것이 좋을까요?
-> 선후관계는 별로 의미 없는거같다. 라는 결론을 내렸습니다.