일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 뉴모피즘
- 패스트캠퍼스
- 8 그리드 시스템
- ios
- 마크다운
- 디자인 트렌드
- 뉴북
- commit messages
- 포인트
- Xcodebuild
- 아이폰
- SWIFT
- 플랫디자인
- 픽셀
- 직장인인강
- 직장인자기계발
- viewDidAppear
- 입력 개수 제한
- commit message
- .DS_Store
- 머티리얼 디자인
- 패캠챌린지
- commit
- git workflow
- git
- 스큐어모피즘
- viewDidLoad
- Git Tutorial
- 패스트캠퍼스후기
- iOS앱개발올인원패키지Online.
- Today
- Total
왕논의 연구실
패스트캠퍼스 챌린지 19일차 본문
어제는 상속에 대해서 알아보았는데요.
그렇다면 오늘은 그 상속은 언제 사용해야할지 알아보겠습니다.
사실 사용방법에 대한 것은 직접 많이 사용해보면서 느껴보는 것이 가장 중요합니다.
하지만 일단 정리하고 일반적으로 사용하는 방식을 지식으로 습득한 후 사용해본다면 더 많은 것을 배우게 될 것입니다.
클래스의 상속을 사용하는 상황은 5가지 있습니다.
1. Single Responsibility: 하나의 클래스는 하나의 고려사항을 가지고 있어야합니다. 하나의 클래스가 많은 책임을 가지고 있다면, 분리시켜야 합니다.
2. Type Safety: 클래스간 분명한 구분을 가지고 있어야 합니다. 부모-자식간에 구분을 명확하게 해줘야 합니다.
3. shared based Classes: 많은 클래스들간에 공통되는 것들을 가지고 있어야 합니다. 공통된 기능이 많은 자녀들의 기본적인 기능을 가질 수 있어야 합니다.
4. Extensibility: 확장성이 있어야합니다. 기본기능이 자녀에 따라서 기능을 확장시킬 수 있을 때, 구체적인 기능 확장이 가능할 때 상속을 사용합니다.
5. Identity: 상속받는 클래스의 정체성을 파악가능할 때 사용해야합니다.
사실 클래스 상속을 사용할 때, 명확한 지식으로 하기 보다는 공통된 것을 묶고, 사용하다보면서 느끼는 것들이 큽니다.
저같은 경우 상속을 사용할 때, 부모-자식간 클래스의 기능에 대해 정의하고 그 정의에 맞는 것들이면서, 자식클래스들의 기능을 묶을 수 있는 것들을 부모클래스의 프로퍼티, 함수로 둡니다.
처음 코딩을 할 때는 정말 뷰컨트롤러마다 반복되는 코드를 넣어서 작성하기도 했지만, 계속 사용하다보면 이런 반복되는 코드의 '불편함'으로 인해 스스로 상속에 대해 고민하게 됩니다.
이렇게 고민해보면서 코드 작성에 이유가 생겨나게 되는 것 같습니다.
그 다음은 생성자에 대해서 알아보았습니다.
생성자 생성 규칙은 2-phase Initialization이라고 하는데요.
1. 모든 stored property는 initialize 되어야한다.
초기화는 자식클래스 프로퍼티 -> 부모클래스 프로퍼티 순으로 초기화합니다.
2. 모든 프로퍼티가 세팅된 후, 프로퍼티와 메소드 사용 가능
phase1이 끝나기전까지 어떤 프로퍼티나 메소드를 사용할 수 없습니다. 세팅이 안 끝났는데 사용하는 것도 말이 안되지요.
이러한 규칙들은 안정적인 프로그래밍을 위해 필요합니다.
또한, 상속한 자식클래스에서 생성자를 만들다보면, 자식클래스에서 늘어난 프로퍼티로 인해 점점 길어질 수 밖에 없습니다.
하지만, 실제로 필요한 데이터만 받게 생성자를 작성하여 생성자의 길이를 수정할 수도 있습니다.
이렇게 간편하게 수정한 생성자를 convenience Initializer라고 합니다.
convenience Initializer생성시 규칙이 있습니다.
- DI 는 자신의 부모의 DI를 호출해야함
- CI 는 같은 클래스의 이니셜라이저를 꼭 하나 호출해야함
- CI 는 궁극적으로는 DI를 호출해야함
이는 convenience Initializer가 근본적으로는 주생성자를 간편하게 사용하기 위해서 사용되기 때문입니다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #iOS앱개발올인원패키지Online.
'강의 > 강의 챌린지(iOS 앱 개발 올인원 패키지 Online)' 카테고리의 다른 글
패스트캠퍼스 챌린지 21일차 (0) | 2021.11.21 |
---|---|
패스트캠퍼스 챌린지 20일차 (0) | 2021.11.20 |
패스트캠퍼스 챌린지 18일차 (0) | 2021.11.18 |
패스트캠퍼스 챌린지 17일차 (0) | 2021.11.17 |
패스트캠퍼스 챌린지 16일차 (0) | 2021.11.16 |