왕논의 연구실

패스트캠퍼스 챌린지 19일차 본문

강의/강의 챌린지(iOS 앱 개발 올인원 패키지 Online)

패스트캠퍼스 챌린지 19일차

ywangnon 2021. 11. 19. 22:30

어제는 상속에 대해서 알아보았는데요.

그렇다면 오늘은 그 상속은 언제 사용해야할지 알아보겠습니다.

 

사실 사용방법에 대한 것은 직접 많이 사용해보면서 느껴보는 것이 가장 중요합니다.

하지만 일단 정리하고 일반적으로 사용하는 방식을 지식으로 습득한 후 사용해본다면 더 많은 것을 배우게 될 것입니다.

클래스의 상속을 사용하는 상황은 5가지 있습니다.

 

1. Single Responsibility하나의 클래스는 하나의 고려사항을 가지고 있어야합니다. 하나의 클래스가 많은 책임을 가지고 있다면, 분리시켜야 합니다.

2. Type Safety: 클래스간 분명한 구분을 가지고 있어야 합니다. 부모-자식간에 구분을 명확하게 해줘야 합니다.

3. shared based Classes: 많은 클래스들간에 공통되는 것들을 가지고 있어야 합니다. 공통된 기능이 많은 자녀들의 기본적인 기능을 가질 수 있어야 합니다.

4. Extensibility: 확장성이 있어야합니다. 기본기능이 자녀에 따라서 기능을 확장시킬 수 있을 때, 구체적인 기능 확장이 가능할 때 상속을 사용합니다.

5. Identity: 상속받는 클래스의 정체성을 파악가능할 때 사용해야합니다.

 

사실 클래스 상속을 사용할 때, 명확한 지식으로 하기 보다는 공통된 것을 묶고, 사용하다보면서 느끼는 것들이 큽니다.

저같은 경우 상속을 사용할 때, 부모-자식간 클래스의 기능에 대해 정의하고 그 정의에 맞는 것들이면서, 자식클래스들의 기능을 묶을 수 있는 것들을 부모클래스의 프로퍼티, 함수로 둡니다.

처음 코딩을 할 때는 정말 뷰컨트롤러마다 반복되는 코드를 넣어서 작성하기도 했지만, 계속 사용하다보면 이런 반복되는 코드의 '불편함'으로 인해 스스로 상속에 대해 고민하게 됩니다.

이렇게 고민해보면서 코드 작성에 이유가 생겨나게 되는 것 같습니다.

 

그 다음은 생성자에 대해서 알아보았습니다.

생성자 생성 규칙은 2-phase Initialization이라고 하는데요.

 

1. 모든 stored property는 initialize 되어야한다.

초기화는 자식클래스 프로퍼티 -> 부모클래스 프로퍼티 순으로 초기화합니다.

2. 모든 프로퍼티가 세팅된 후, 프로퍼티와 메소드 사용 가능

 

phase1이 끝나기전까지 어떤 프로퍼티나 메소드를 사용할 수 없습니다. 세팅이 안 끝났는데 사용하는 것도 말이 안되지요.

 

이러한 규칙들은 안정적인 프로그래밍을 위해 필요합니다.

실습사진 1

또한, 상속한 자식클래스에서 생성자를 만들다보면, 자식클래스에서 늘어난 프로퍼티로 인해 점점 길어질 수 밖에 없습니다.

하지만, 실제로 필요한 데이터만 받게 생성자를 작성하여 생성자의 길이를 수정할 수도 있습니다.

이렇게 간편하게 수정한 생성자를 convenience Initializer라고 합니다.

 

convenience Initializer생성시 규칙이 있습니다.

  • DI 는 자신의 부모의 DI를 호출해야함
  • CI 는 같은 클래스의 이니셜라이저를 꼭 하나 호출해야함
  • CI 는 궁극적으로는 DI를 호출해야함

 

이는 convenience Initializer가 근본적으로는 주생성자를 간편하게 사용하기 위해서 사용되기 때문입니다.

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #iOS앱개발올인원패키지Online.