합성 3

Swift Mixin and Trait

Swift Mixin and Trait iOS 프로그래밍에서 주로 사용되는 언어는 Swift로 다중 상속을 지원하지 않음.Swift에서는 인터페이스(Interface)를 프로토콜(protocol)로 사용하고 있어서 프로토콜이라는 용어와 인터페이스의 의미는 같음. 목차배경mixin이란?interface(protocol), mixin, trait예제를 통해 알아보기 1예제를 통해 알아보기 2예제를 통해 알아보기 3swift 다중 상속 컴파일 오류몇가지 실험들둘 다 채택한 경우명시적 캐스팅배경객체지향 프로그래밍에서 상속의 사용은 코드의 결합도를 크게 증가시킴. 이로 인하여 많은 문제점들이 발생.상속을 코드 중복을 해결하기 위한 수단으로 사용하면 안됨.상속은 부모와 자식간의 높은 결합도를 가지게 되어 코드의 ..

오브젝트: 코드로 이해하는 객체지향 설계 11장을 읽으며

오브젝트: 코드로 이해하는 객체지향 설계 11장을 읽으며 느낀점프로그래밍 언어의 발전과 구조에 대한 이론에 점점 더 흥미가 생기는 것 같음. 언어마다 다중 상속을 지원하지 않거나 mixin을 제공하는 방식을 보며 각 언어가 선택한 설계 철학과 구조의 차이를 이해하는 데 많은 인사이트를 얻음. 이러한 차이점은 단순히 문법적 요소에 국한되지 않고, 언어가 지향하는 객체지향의 특성과 설계 원칙에 깊이 뿌리를 두고 있다는 점이 체계적으로 언어를 잘 만든 것 같음. 합성과 유연한 설계상속이 부모 클래스를 자식 클래스를 연결해서 부모 클래스의 코드를 재사용하는 데 비해 합성은 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해서 부분 객체의 코드를 재사용상속에서 부모와 자식 클래스 간의 관계는 컴파일 타임에 해결..

오브젝트: 코드로 이해하는 객체지향 설계 4장을 읽으며

오브젝트: 코드로 이해하는 객체지향 설계 4장을 읽으며 느낀점리플 이펙트와 강한 결합도의 문제를 다룬 코드 예제가 큰 인상으로 남음. 강한 결합도가 있을 때, 하나의 코드 변경이 시스템 전체에 걸쳐 어떤 파급 효과를 일으킬 수 있는지 직접 예제를 통해 보면서, 결합도를 낮추는 것에 대해서 고민하게 되었음. 코드의 유연성이 떨어지고, 작은 수정에도 많은 부분이 연쇄적으로 영향을 받는다는 점에서 코드의 유지보수성에 큰 장애물이 된다는 걸 체감. enum으로 값을 정의하는 코드들이 정의 케이스가 바뀌면서 외부에서 대응해주는 것들이 많았는데 이게 강한 결합도와 리플 이펙트 영역과 예시가 많이 닮아 있어서 좋은 인사이트가 되었다! 설계 품질과 트레이드오프객체지향 설계의 핵심은 역할, 책임, 협력임. 협력: 기능을..