TIL - 2021.03.01 (Mon)
오늘의 활동
오늘은 오전에 일반화와 추상화에 대한 Topic으로 많은 의견을 주고 받았다. 조원들과 세탁기에 대해서 일반화하는 과정을 진행하였는데, 일반화와 추상화의 정의에 대해 오랜 시간 토론하였다.
- 일반화 : 서로 다른 개체들로부터 공통된 개념을 추출하는 것을 말한다.
- 추상화 : 복잡함 속에서 필요한 관점만을 추출하는 것을 말한다.
오후에는 캡슐화와 은닉화에 대하여 토론을 하고 코드로 구현하는 방법에 대해서 알아보았다.
- 캡슐화 : 실제로 구현되는 부분을 외부에 드러나지 않도록 캡슐로 감싸 이용방법만을 알려주는 것
- 은닉화 : 내부 데이터, 내부 연산을 외부에서 접근하지 못하도록 은닉 혹은 격리 시키는 것
저녁에는 내일 스크럼을 위한 프로젝트 청사진 제작을 진행하였다.
그리고 이전 프로젝트의 commit message 이동작업을 하였다
은닉화를 위한 접근제어자
-
접근제어(Access Control)
접근수준 키워드 접근성 범위 개방 접근수준 open 높음 모듈 외부까지 공개 접근수준 public ↑ 모듈 외부까지 내부 접근수준(default) Internal ⎮ 모듈 내부 파일외부비공개 접근수준 fileprivate ↓ 파일 내부 비공개 접근수준 private 낮음 기능 정의 내부
open 과 public의 차이점 :
- open 을 제외한 모든 접근수준의 클래스는 그 클래스가 정의된 모듈 내에서만 상속할 수 있다.
- open 을 제외한 다른 모든 접근수준의 클래스 멤버는 해당 멤버가 정의된 모듈 안에서만 재정의할 수 있다.
모듈
모듈은 코드 배포(code distribution)의 단일 유닛입니다. 한 장치로 구축되고 제공되며, Swift의 import키워드를 사용하여 다른 모듈에서 가져올 수 있는 Framework 또는 응용 프로그램인 단일 코드 배포 단위입니다.
출처: https://zeddios.tistory.com/383 [ZeddiOS]
중요한 점! 📌
모든 타입의 접근수준은 상위 요소보다 하위요소가 더 높은 접근수준을 가질 수 없다!
class VendingMachine {
private var money: Int = 0
public func addMoney(_ money: Int) {
self.money += money
}
public func buyDrink(count: Int) {
self.money -= count * 200
}
}
let machine: VendingMachine = VendingMachine()
print(machine.money) // money is inaccessible due to 'private' protection level - error
machine.addMoney(300) // public function으로 private money에도 접근 가능
money 프로퍼티를 은닉화 시키고 특정 메서드를 통해서 접근할 수 있게 만든다
오늘 끝내지 못한 것, 계획
- Fork 하여 진행하였던 이전 프로젝트의 commit 기록을 새로운 repository에 옮기고 프로젝트 회고를 작성하려고 하였는데, git 명령어가 계속해서 에러를 일으켜 끝내지 못했다. 내일 프로젝트 회고와 git에 대한 학습을 보충해서 할 계획이다
- 10:00 ~ : 스크럼 계획, 전체적인 프로젝트 청사진을 팀원들과 작성하고 step1을 같이 진행할 계획이다.
- H.I.G 문서를 공식문서로 읽을 계획이다.
- DFS와 BFS에 대한 Algorithm Study
Author And Source
이 문제에 관하여(TIL - 2021.03.01 (Mon)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@leeyoungwoozz/TIL-2021.03.01-Mon저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)