TIL - 2021.03.01 (Mon)

Youngwoo Lee·2021년 3월 1일
0

TIL

목록 보기
3/29
post-thumbnail

오늘의 활동

오늘은 오전에 일반화와 추상화에 대한 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
profile
iOS Developer Student

0개의 댓글