타입의 설계와 접근제어

NOAH·2021년 8월 24일
0

SWIFT

목록 보기
6/7
post-thumbnail

여러 인스턴스의 공통 특징을 뽑아내는 과정 -> 일반화(Generalization)

  • 객체지향 프로그래밍에서는 객체에게 일을 시켜 문제를 해결한다.
    여기서 문제라 함은 프로그램이 수행해야할 기능!
    타입은 이러한 객체를 구성하는 기능과 속성에 대한 설계도이다.

아이폰의 기능
공통 특성 -> 아이폰 종류, 카메라 줌 상태, 홈버튼 유무, 제조일자, ..
공통 기능 -> 송신, 수신, 와이파이, 블루투스, 문자보내기 ..

공통 특성 중 관심이 있는 기능만 추출하고 나머지는 무시하는 과정 -> 추상화(Abstraction)

관심있는 특성 -> 아이폰 종류, 카메라 갯수, 홈버튼 유무
관심있는 공통 기능 -> 와이파이, 블루투스, 비행기모드

추상화를 걸쳐서 타입의 기본 골격을 설계한다. 인스턴스가 일을 실행하면서, 인스턴스끼리 정보를 주고 받거나 서로 일을 시키는 것이 프로그램의 전체 흐름이 되겠다.

주요 사항이 겉으로 드러나지 않도록 감추는 것 -> 은닉화(Hiding)

모든 타입에 적용되는 접근 수준의 규칙은 '상위 요소보다 하위 요소가 더 높은 접근 수준을 가질 수 없다'이다.

비공개 접근 수준으로 정의한 구조체 내부의 프로퍼티로 내부 수준이나 공개수준을 갖는 프로퍼티를 정의 할 수 없다.
또, 함수의 매개변수로 특정 접근 수준이 부여도나 타입이 전달되거나 반환될 수 없다.

private로 접근제어 수준을 설정하면 파일내부에 있더라도 다른 클래스에서 접근 할 수 없다.
단, Extensoin(확장)코드가 있는 경우에는 private 접근제어 수준이라 할 지라도 접근할 수 있다.

{접근수준}(set) 처럼 표현하면 설정자의 접근수준만 더 낮도록 지정해 줄 수도 있다..
설정자의 접근 수준 제한은 속성,서브스크립트, 변수 등에 적용될 수 있다.

test.fileprivateVariable에 2의 값을 set해주려 시도하면

setter에 접근할 수 없다는 에러가 표시된다.

중요사항을 감춘 상태에서 외부에서 그것을 사용하는 방법을 제공하고 소통하는 것 -> 캡슐화(Encapsulatoin)

0개의 댓글