오늘은 오전에 일반화와 추상화에 대한 Topic으로 많은 의견을 주고 받았다. 조원들과 세탁기에 대해서 일반화하는 과정을 진행하였는데, 일반화와 추상화의 정의에 대해 오랜 시간 토론하였다.
오후에는 캡슐화와 은닉화에 대하여 토론을 하고 코드로 구현하는 방법에 대해서 알아보았다.
저녁에는 내일 스크럼을 위한 프로젝트 청사진 제작을 진행하였다.
그리고 이전 프로젝트의 commit message 이동작업을 하였다
접근제어(Access Control)
접근수준 | 키워드 | 접근성 | 범위 |
---|---|---|---|
개방 접근수준 | open | 높음 | 모듈 외부까지 |
공개 접근수준 | public | ↑ | 모듈 외부까지 |
내부 접근수준(default) | Internal | ⎮ | 모듈 내부 |
파일외부비공개 접근수준 | fileprivate | ↓ | 파일 내부 |
비공개 접근수준 | private | 낮음 | 기능 정의 내부 |
open 과 public의 차이점 :
모듈
모듈은 코드 배포(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 프로퍼티를 은닉화 시키고 특정 메서드를 통해서 접근할 수 있게 만든다