TIL(Today I Learned)

11월 30일(월)

학습내용

  • 저번주에 배운 내용에 대해 Kahoot을 진행하였다.
    • Singleton Pattern을 위해 필요한 기능은 타입 프로퍼티와 접근 제어이다.
      • Singleton 객체를 타입 프로퍼티로 지정하고, init을 private으로 접근을 제한하여 외부에서 객체생성을 불가능하게 하여 Singleton Pattern을 구현할 수 있다.
  • UML에 대해서 학습하고, Jacob의 JuiceMaker 코드에 대한 Class Diagram을 직접 그려보았다.
    • Unified Modeling Language 의 약자로, 소프트웨어 모델링에 대한 의사소통을 목적으로 하는 언어.
    • 나 자신을 위해서, 같이 협업하는 사람을 위해, 미래의 누군가를 위한 문서화 (나 포함)
    • Behavioral Diagram, Structural Diagram 두 분류로 나누어진다.
      • Behavioral Diagram에는 Sequence Diagram 등이 있으며, Structural Diagram에는 Class Diagram등 이 포함된다.
    • UML 작성 그 자체에 너무 몰두하는 것 보다, 의사소통(설득)에 더 목적을 두고 이해하기 쉽도록 작성한다.

문제점/고민한점

  • Class Diagram에서 Dependency와 Aggregation, Composition의 차이는?
  • enum 의 allCases를 사용하는데 CaseIterable 프로토콜을 채택하지 않아도 가능한가?

해결방법

  • Class Diagram에서 Dependency와 Aggregation, Composition의 차이는?
    • Dependency는 A 클래스가 B 클래스에 대한 객체를 사용할 때 A 클래스는 B 클래스에 Dependecy 관계라고 한다.
    • Aggregation은 A 클래스가 B 클래스에 대한 객체를 배열이나 딕셔너리 등 복수 개를 프로퍼티로 지니면서, A클래스가 사라져도 B클래스가 사라지지 않으면 Aggregation 관계라고 한다. 예를 들어, B 클래스 객체의 Collection을 외부에서 선언해서 A 클래스의 프로퍼티에 reference를 전달하면 A클래스 객체가 사라져도 B 객체는 사라지지 않으므로 Aggregation 관계라고 할 수 있다.
    • Compositon은 A 클래스가 B 클래스에 대한 객체를 배열이나 딕셔너리 등 복수 개를 프로퍼티로 지니면서, A클래스가 사라질 때 B클래스도 사라지면 Compositon 관계라고 한다. 예를 들어, B 클래스 객체의 Collection을 A클래스 내부에서 선언하면, A 클래스 객체가 사라지면 B객체도 사라지므로 Composition 관계라고 할 수 있다.
  • enum 에서 allCases를 사용하는데 CaseIterable 프로토콜을 채택하지 않아도 가능한가?