TIL(Today I Learned)
11월 12일(목)
학습내용
- 타입, 객체 지향 프로그래밍(클래스, 일반화, 추상화)에 관하여 공부하였고, 세탁기, 토스터기, 등의 가전제품을 일반화하고 추상화하여 스위프트 코드로 작성하는 활동을 진행하였다.
- 일반화는 서로 다른 개체들로부터 공통된 개념을 추출하는 것.
- 추상화는 복잡함 속에서 필요한 관점만을 추출하는 것.
- 조급하게 많이 하려고 하지말고, 차근차근 배우고 TIL, TWL을 잘 써서 배운 내용을 돌이켜 보는 습관을 갖자.
문제점/고민한점
- 일반화와 추상화의 차이점은?
- 세탁기 클래스의 메서드의 접근 제어를 무엇으로 설정할 것인가? 그리고 각 접근 제어는 무엇이 다른가?
- 수정하고 add 하지 않은 파일을 되돌리는 방법은?
- 구글 뉴스에서 특정 뉴스를 선택해서 들어가면 webView(didFinish:)가 호출되지 않는데, 그 이유는?
- 주소창(UITextField)를 터치하면 너비가 넓어지는데, 다시 좁아지게 하려면 어떻게 해야하는가?
해결방법
- 일반화와 추상화의 차이점은?
- 일반화는 공통점을 찾는 것이고 추상화는 필요한 것, 의미있는 것을 추출하는 것이다.
- 타입을 설계할 때 일반화를 통해서 공통점을 찾으며, 추상화를 통해 필요한 공통점과 필요 없는 공통점을 구분하고, 새로운 용도에 맞게 재구성(?) 하는 것이다.
- 세탁기 클래스의 메서드의 접근 제어를 무엇으로 설정할 것인가? 그리고 각 접근 제어는 무엇이 다른가?
- 처음에 세탁 모드를 선택하는 함수를 public으로 하였는데, 야곰이 Swift의 public은 자바의 public과 다르다고 하여 Swift의 접근 제어를 찾아보았다.
- 접근 제어는 변수나 함수의 접근 범위를 정하는 것이다.
- Swift에는 5개의 접근 제어 키워드가 있으며, open, public, internal, fileprivate, private 이다. 오른쪽으로 갈수록 폐쇄적(?)이다.
- 접근 제어를 명시적으로 설정하지 않으면 기본 값은 internal 이다.
- open은 모듈 내의 모든 소스파일에서 접근이 가능할 뿐만 아니라 다른 모듈의 소스파일에서도 접근이 가능하도록 하는 키워드이다. 클래스와 클래스 멤버에만 사용이 가능하며, open은 다른 모듈에서 서브클래스(상속)와 오버라이드가 가능하다.
- public은 open과 마찬가지로 모듈 내의 모든 소스파일에서 접근이 가능할 뿐만 아니라 다른 모듈의 소스파일에서도 접근이 가능하도록 하는 키워드이다. open과 다른 점은 클래스와 클래스 멤버 이외에도 모두 사용이 가능하다는 점과, 다른 모듈에서 서브클래스가 불가능하다는 점이다.
- internal은 같은 모듈 내에서만 접근이 가능하도록 하는 키워드이다. 같은 앱이나 프레임워크 내에서 접근이 가능하다. 기본값이다.
- fileprivate은 같은 파일 내에서만 접근이 가능하도록 하는 키워드이다.
- private은 선언부(?) 내에서만 접근이 가능하도록 하는 키워드이다. 클래스 안의 프로퍼티가 private 일 경우, 클래스 내에서만 접근이 가능하다.
- 수정하고 add 하지 않은 파일을 되돌리는 방법은?
- git chekout — <파일이름>파일이름>
- 구글 뉴스에서 특정 뉴스를 선택해서 들어가면 webView(didFinish:)가 호출되지 않는데, 그 이유는?
- 구글 뉴스를 크롬에서 들어가봤더니, 원래는 특정 뉴스를 누르면 새 창에서 뉴스 페이지가 로드 된다. 그래서 webView(didFinish:)가 호출되지 않는 것 같다.
- 주소창(UITextField)를 터치하면 너비가 넓어지는데, 다시 좁아지게 하려면 어떻게 해야하는가?
- 아직 해결 중이다..