타입

Judy·2022년 4월 17일
0

iOS

목록 보기
2/28

타입

= 개체를 대표하는 표현

이라고 한다. 이게 무슨 소리인가???

타입은 개체의 공통된 특성과 행위를 한데 모아 표현해둔 것입니다.

사람으로 예를 들어보면 모든 사람은 각각 다르지만 키와 몸무게, 나이와 같은 특성을 가지고 있고 잠을 자고 생각할 수 있습니다.

즉, 사람이란 타입은 이런식으로 표현 할 수 있습니다.

사람{
	키
    나이
    몸무게
    
    잠자다(얼마나)
    생각하다(무엇을)
}

인스턴스

타입이 표현이라면 타입을 준수하면서 개성을 가진 한 사람은 인스턴스라고 할 수 있습니다.

타입의 설정대로 만들어낸 실체를 인스턴스라 하는 것입니다.

타입 자체는 실체가 없기 때문에 일을 하진 않지만 인스턴스는 타입으로부터 실제화 되어 메모리에 할당된 실체로 실제 존재합니다.

스위프트로 표현한 사람 타입

struct Person {
    var height: Double
    var age: Int
    var weight: Double
    
    func sleep(duration: Time)
    func think(something: String)
}

인스턴스로 실체화하는 방법

// Person 타입의 인스턴스화
let yagom = Person()

스위프트에서 타입을 표현하는 방식으론 구조체(struct), 클래스(class), 열거형(enum), 프로토콜(protocol) 등이 있습니다.

메서드

타입 또는 인스턴스가 공통적으로 할 수 있는 행위

타입이 공통된 특성과 행위를 표현한 것이라 했는데 그 중 행위가 메서드입니다.

메서드의 종류

  1. 타입 메서드
  • 타입이 할 수 있는 동작
  • func 앞에 static, class 키워드 추가
  • 타입이름.타입메서드이름()
  1. 인스턴스 메서드
  • 인스턴스가 할 수 있는 동작
  • func 으로 시작
  • 대부분 인스턴스 메서드를 주로 사용
  • 인스턴스이름.인스턴스메서드이름()

프로퍼티

타입 또는 인스턴스가 공통적으로 가지는 특성

메서드가 행위라면 프로퍼티는 타입의 특성을 말합니다.

프로퍼티의 종류

  1. 타입 프로퍼티
  • 타입이 공통적으로 가지는 특성
  • var 또는 let 앞에 static, class 키워드 추가
  • 타입이름.타입프로퍼티
  1. 인스턴스 프로퍼티
  • 인스턴스가 공통적으로 가지는 특성
  • var 또는 let 으로 시작
  • 대부분 인스턴스 메서드를 주로 사용
  • 인스턴스이름.인스턴스프로퍼티

물론 인스턴스가 공통적으로 가지는 특성인 것이지 프로퍼티의 값 자체는 인스턴스마다 다르게 가질 수 있습니다.



객체지향 프로그래밍

컴퓨터 프로그램을 명령어 목록이 아닌 여러 독립된 단위, 즉 "객체"간의 상호작용으로 프로그램의 동작을 구현하는 방식


왜 객체지향 프로그래밍을 할까?

단순히 명령어들의 집합이 아닌 세상의 모습처럼 프로그래밍을 하고 싶었다!

이 세상에 있는 사람, 물건들처럼 객체라는 단위로 표현해 프로그래밍을 하고자 시도한 방식

객체

특성행위를 가지는 형체

객체가 공통적으로 가질 수 있는 특성과 행위를 뽑아내는 과정을 일반화라고 한다.

클래스는 객체!

클래스라는 것은 객체가 일반화되어 코드로 나타나져 있는 것으로 우리가 사용하는 버튼이나 데이터 타입은 미리 만들어져 있는 객체를 가져다 쓰는 것이다.

객체 생성하는 방법

var 변수 = 객체이름()

변수에 객체 이름과 괄호를 붙여주면 객체가 할당된다.

객체의 특성이나 행위는 아래첨자(.)를 이용해 변수.특성 = "새로운 특성" or 변수.행위()로 사용할 수 있다.



객체지향 프로그래밍의 개념

일반화

서로 다른 개체들 사이에서 공통된 개념을 추출하는 것
ex) 사람, 코끼리, 호랑이 => 표유류


추상화

복잡한 개념에서 필요한 것만 추출하는 것
ex) 지하철 노선도


캡슐화

실제 구현되는 부분을 외부에 들어나지 않게 캡슐로 감싸는 것
= 변수와 함수를 하나로 묶는 것


은닉화

내부 데이터나 연산을 외부에 들어나지 않게 은닉 혹은 격리시키는 것
ex) private





[ 참조 ]

야곰 유튜브 - 타입
야곰 유튜브 - 객체지향프로그래밍1
야곰 유튜브 - 객체지향프로그래밍2

profile
iOS Developer

0개의 댓글