[TIL]0819_swift Struct, Class, 상속

JJ_u·2021년 8월 19일
0

TIL

목록 보기
6/7
post-thumbnail

Struct

Struct 사용하는 경우

보통 Struct를 사용하는 경우는 3가지 경우로 나눠서 볼 수 있다.

  1. 두 object를 '같다, 다르다'로 비교해야 하는 경우
let point1 = Point(x: 3, y: 5)
let point2 = Point(x: 3, y: 5)

데이터 자체를 비교해야하는 경우 사용한다.

  1. Copy된 각 객체들이 독립적인 상태를 가져야 하는 경우
var myMac = Mac(owner: "Jason)
var yourMac = myMac
yourMac.owner = "jay"

myMac.owner
yourMac.owner

각 객체가 다른 상태로 관리되어야 하는 경우 사용된다.

  1. 코드에서 오브젝트의 데이터를 여러 스레드 걸쳐 사용할 경우
  • 상대적으로 여러 스레드에 걸쳐 사용할 때 한전하게 쓸 수 있어 value타입으로 사용한다.

Class

Class 사용하는 경우

  1. 두 object의 인스턴스 자체가 같음을 확인해야 할 때
  2. 하나의 객체가 필요하고, 여러 대상에 의해 접근되고 변경이 필요한 경우
  • 일단 Struct로 쓰자 왜냐하면 Struct > Class로 바꾸는 것이 용이하기 때문에 되도록 Struct로 쓰는 것을 추천!

상속

상속의 개념

A is B(A는 B에 포함)

  • Student is Person(Student는 Person에 포함)
  • Teacher is Person(Teacher는 Person에 포함)
  • Person is Student(Person는 Student에 포함)

Person: Super Class(Parent Class)
Student: Sub Class(Child Class)

상속의 규칙

  • 자식은 한개의 superclass만 상속 받음
  • 부모는 여러 자식들을 가질 수 있음
  • 상속의 깊이는 상관이 없음

상속 언제 하면 좋을까?

Single Responsibility(단일 책임)

  • 각 클래스는 한 개의 고려사항만 있으면 된다.
  • 최대한 한가지 일에 집중

Type Safety(타입이 분명해야 할 때)

  • 클래스 간 명확하게 구분을 지어줘야 할 때

Shared Base Classes(다자녀가 있다)

  • 기본동작이 다양하게 구현되어야 하는 경우

Extensibility(확장성이 필요한 경우)

  • 객체를 만들고 나서 다른 사람에 제공하면 다른 사람도 그것을 가지고 만들 수 있다.

Identity(정체를 파악하기 위해)

  • 어떤 객체, 클래스인지 상속을 통해 파악 가능

코드에 대한 근거, 코드를 짠 이유 철학을 갖고 코딩하기


🍎 느낀점

  • 공식문서 보고 한번 더 정리해야겠다.
  • 대충 감은 오는데 뭔 말인지도 알겠는데 음...

https://fastcampus.co.kr/dev_online_iosapp

profile
개발자 만들기

0개의 댓글