본문 바로가기
iOS 기초 실습

IOS 기초실습 6주차

by 노아입니다 2024. 10. 10.

클래스 vs 객체 vs 인스턴스

https://en.wikipedia.org/wiki/Class_(computer_programming)

 

 

 

 

객체 인스턴스

 

인스턴스 ( instance )

 

1. 실제로 메모리에 할당된 객체 ( object )

 

객체의 구성 

 

1. 데이터 변수(data variable) or 속성(property)

2. 함수 or 메서드 ( method )

 

클래스 vs 인스턴스 ( 객체 )

 

1. class 는 인스턴스 ( 객체 ) 의 청사진이나 설계도

ex ) Student sys ; ( student : 클래스 , sys : 인스턴스 ) // C++ ,

var Kim = Man() ( var 인스턴스 = 클래스() ) //Swift

 

Swift 클래스선언 하기

 

1. 클래스의기본 구조 

class 새로운 클래스 이름 : 부모 클래스 {

// 프로퍼티

// 인스턴스 메서드

// 타입 메서드 ( 클래스 메서드 )

}

2. 프로퍼티 부분은 클래스 내에 포함되는 변수 ( var )상수 ( let ) 을 정의

3. 인스턴스 메서드는 객체가 호출하는 메서드를 정의

4. 타입 메서드는 클래스가 호출하는 메서드를 정의

 

 

프로퍼티 ( property )

 

1. 클래스, 구조체, 또는 열거형의 속성을 정의하는 요소

2. 객체의 상태를 나타내며, 일반적으로 변수나 상수로 구현

3. 프로퍼티는 초기 값이 있거나 Init를 이용해 초기화 하거나 옵셔녈 변수로 선언해야함

 

# stored property 는 초기값이 있어야 함
# stored property 는 초기 값이 있어야 함 , nil

 

 

 

 

 

메서드 정의

 

 



인스턴스 메서드

1. 인스턴스가 사용

 

클래스 또는 타입 ( class or type ) 메서드

1. 클래스가 사용

2. 클래스명. 클래스 메서드 ()

3. 타입 메서드 또는 클래스 메서드는 클래스 레벨에서 동작

4. 타입 메서드는 인스턴스 메서드와 동일한 방법으로 선언하지만 class 나 static 키워드를 앞에 붙여서 선언

5. class 키워드로 만든 클래스 메서드는 자식 클래서에서 override 가능

 

각 언어에서 클래스를 정의하고 인스턴스를 생성하는 예제

 

출처 : chatGPT

 

출처 : chatGPT
출처 : chatGPT

 

 

 

인스턴스 초기화 하기 init()

 

1. 클래스, 구조체, 열거형 ( enum ) 인스턴스가 생성되는 시점에서 해야 할 초기화 작업

2. 인스턴스가 만들어지면서 자동 호출 됨

3. init()을 하나라도 직접 만들면 기본적으로 만들어지는 눈에 안보이는 default initializer 는 사라짐

 

self 

1. 현재 클래스 내 메서드나 프로퍼티를 가리킬 떄 메서드나 프로퍼티 앞에 self. 을 붙임

 

stored property 와 couputed property

1. computed property ( 계산 프로터피 ) 는 property 가 설정되거나 검색되는 시점에서 계산 또는 파생된 값

 

computed property 의 getter

1. setter가 없으면 get{} 는 생략할 수 있으며 변경하지 않더라도 var로 선언해야 함

 

 

computed property 의 setter

1. setter 가 있으면 get{} 는 생략할 수 없음

2. 매개변수명은 newValue가 기본

3. setter의 매개변수명이 newValue 인 경우에만  생략가능

 

method overloading ( 생성자 중첩 )

1. 매개변수의개수와 자료형이 다른 같은 이름의 함수를 여러 개 정의

2. 매개변수가 다른 두 생성자를 통해 두 가지 방법으로 인스턴스를 만들 수 있음

 

failable initializers ( 실패 가능한 생성자 : init? )

1. let myImage: UIImage = UIImage ( named : "apple.png")!  #느낌표가 있는 이유는?

apple.png 파일이 없으면 인스턴스를 만들 수 없고 nil

2. nil 값도 저장할 수 있으려면 init 다음에 ? 를 하여 옵셔널 값이 리턴됨

3. init? ( named:name: String ) #failable initializers

4. init? 로 만든 인스턴스는 옵셔널형으로 만들어져서, 사용하려면 옵셔널을 언래핑해야해서 위의 예제 마지막에 ! 가 있음 

 

 

 

 

 

클래스 ( class ) 상속

 

언어별 상속 예제

 

 

 

superclass 와 subclass

1. 상속된 클래스는 부모 클래스의 모든 기능을 상속 받으며, 자신만의 기능을 추가

2. 상속받은 클래스들을 하위 클래스 ( subclass ) 또는 자식 클래스 ( child class )

3. 하위 클래스가 상속받은 클래스는 부모 클래스 ( parent class ) 또는 상위 클래스 ( super class )

4. 단일 상속 ( single inheritance ) : Swift 에서 하위 클래스는 단 하나의 부모 클래스만 상속받을 수 있음

 

 

Swift 상속

 

override : 부모와 자식에 같은 메서드가 있으면 자식 우선

 

1. 부모와 자식에 display() 라는 메서드가 있어서 Student 클래스 display() 메서드가 두 개임

2. Student 클래스의인스턴스 lee가 display() 를 호출할 떄 , 자식클래스가 새로 만든 display() 메서드가 우선적으로 호출되려면 func 앞에 override키워드 씀

'iOS 기초 실습' 카테고리의 다른 글

IOS 기초 실습 12주차  (1) 2024.11.21
IOS 기초 실습 11주차  (0) 2024.11.14
IOS 기초 실습 10 주차  (0) 2024.11.07
IOS 기초 실습 9주차  (1) 2024.10.31
IOS 프로그래밍 기초 3주차  (0) 2024.09.19