티스토리 뷰

Swift

[Swift] 객체지향(OOP)

Esiwon 2022. 2. 23. 19:20

오늘 내용은 객체지향 패러다임과 객체지향의 특징인 일반화, 추상화, 은닉화, 캡슐화이다.
객체지향이 만들어진 이유는 프로그램을 만드는 이들이 세상을 프로그램으로 나타내려는 과정에서 만들어졌다. 때문에 우리가 사는 세상처럼 객체를 중심으로 서로 상호작용하며, 프로그램이 동작하게 된다.
그 과정에서 만들어진 일반화, 추상화, 은닉화, 캡슐화를 한 문장으로 정리하면,

  • 일반화란, 공통된 특성 또는 행위를 묶어 놓은 것
  • 추상화란, 객체를 나타냄에 있어 중요한 포인트만 추려내는 것
  • 은닉화란, 외부로 보일 필요가 없거나, 그러면 안 되는 특성 또는 행위들을 숨겨놓은 것
  • 캡슐화란, 숨겨진 특성 또는 행위를 외부에서 제어할 수 있도록 행위만을 제공해 주는 것

📝 타입을 정의할 때 구조체와 클래스가 사용되는데, 둘의 차이에 대해서

위에 대한 답을 얻기 위해 "스위프트 언어 가이드"문서를 읽어 보았다. 문서에 따르면, 클래스는 구조체와 유사한 기능을 수행하는데, 클래스에는 구조체에 없는 추가적인 기능을 제공한다.
추가적인 기능은 다음과 같다.

  • 상속을 통해 한 클래스가 다른 클래스의 특성을 상속할 수 있다.
  • 타입 캐스팅을 사용하면 런타임에 클래스 인스턴스의 타입을 확인하고 해석할 수 있다.
  • Deinitializers(초기화 해제)는 클래스의 인스턴스가 할당된 리소스를 해제할 수 있도록 합니다.
  • 참조 카운팅은 클래스 인스턴스에 대한 둘 이상의 참조를 허용합니다.
  • 때문에 복잡성이 증가하여, 일반적인 경우에는 구조체를 사용하고, 클래스만에 기능이 필요할 때, 클래스를 사용한다.
    심지어, 구조체와 클래스를 선택을 도움을 주는 문서 또한, 존재했다. 하지만, "기본적인 경우에 구조체를 사용"이란 말 말고는 아직까진 말이 너무 어렵다.ㅜㅜ😓
    때문에, 링크를 걸어두고 Swift가 더 익숙해지면 다시 읽어봐야겠다.

참고문서1
참고문서2

📝 은닉화에 사용되는 private외에 무슨 접근제어가 있고, 접근 범위에 대해서

Swift에서 접근제어자는 5가지 접근제어가 존재

  • Open and Public - 공개 접근수준
  • 모듈*의 모든 소스 파일 내에서 사용 가능,
    하지만 Open과 Public도 차이가 있는데 Open은 클래스와 클래스 변수에만 사용가능,
    클래스의 맴버를 모듈 밖에서도 재정의 가능
  • Internal - 내부 접근수준
  • Internal으로 지정된 프로퍼티 또는 메소드는 모듈의 모든 소스 파일 내에서 사용할 수 있지만, 해당 모듈 외부의 소스 파일에서는 사용할 수 없다.
  • Fileprivate - 파일외부비공개 접근수준
  • Fileprivate으로 지정된 프로퍼티 또는 메소드는 해당 파일에서만 사용이 가능하다
  • Private - 비공개 접근수준
  • Private으로 지정된 프로퍼티 또는 메소드는 구현한 타입 범위 내에서만 사용 가능

*모듈이란 코드 배포의 단일 단위
참고문서

'Swift' 카테고리의 다른 글

[Swift] Race Condition과 Thread Safe  (0) 2022.12.12
[Swift] Protocol  (0) 2022.02.23
[Swift] 옵셔널 추출  (1) 2022.02.14
[Swift]Swift random(), randomElement() 함수 알아보기  (0) 2022.02.11
[Swift]Class, Instance, Object 알아보기  (0) 2022.02.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함