Swift는 객체지향 언어이다.
Swift는 객체지향 언어입니다. 객체지향 언어에서는 class라는 개념이 필수입니다. 프로그램을 객체라는 기본 단위로 나눈 다음, 그 객체들의 상호작용이 어떤지를 서술하는 것이 객체 지향 프로그래밍의 기본 개념일 것입니다.
객체 지향 프로그래밍에서 클래스로부터 만들어진 객체를 “인스턴스”라고 합니다. 보통은 객체=인스턴스로 많이 부르는데, 엄밀히 말하면 이 둘은 다르다고 알고 넘어가는 것이 좋겠습니다. “실제로 메모리에 할당된 개체”를 인스턴스라고 부른다는 것입니다. 객체는 속성과 메소드로 구성되어 있습니다.
Swif에서는 멤버 변수를 Property, 멤버 함수를 Method, 프로퍼티와 메소드라고 부릅니다. 이하에서는 프로퍼티, 메소드로 부르겠습니다.
Swift에서 클래스 선언하기
아래는 클래스의 기본 구조를 일반화한 것입니다.
class 새로운 클래스 이름 : 부모 클래스 {
// 프로퍼티
// 인스턴스 메서드
// 타입(type) 메서드(클래스 메서드)
}
- 프로퍼티 부분에서는 클래스 내에서 포함되는 변수나 상수를 정의할 것입니다.
- 프로퍼티에는 저장 프로퍼티와 계산 프로퍼티의 종류가 있습니다.
- 인스턴스 메서드 부분에서는, 객체가 호출하는 메서드를 정의할 것입니다.
- 타입 메서드라는 것은, 클래스 자체가 호출하는 메서드를 정의하는 부분입니다.
Class Dog {
var age : Int
var weight : Double
var species : String
}
Dog이라는 클래스를 만들었습니다. age, weight, species 등의 프로퍼티들은 저장 프로퍼티입니다. 위의 코드를 실행해 보면 오류가 날 것입니다. 그 이유는 프로퍼티는 초기값이 있어야 하거나, Optional 변수(상수)로 선언되어야 하기 때문입니다. 예컨대, var age = 1
처럼 말입니다.
메서드 정의
간단하게 함수가 클래스 안에 들어가면 그것을 메서드라고 합니다. 간단하게 위에 작성한 클래스에 메서드를 추가해 보겠습니다.
class Dog{
var age : Int = 10
var weight : Double = 6.5
var species : String = "말티즈"
func display(){
print("나이=\(age), 몸무게=\(weight), 견종=\(species)")
}
}
클래스 안에 함수가 들어가서, 나이는 얼마이고 몸무게는 얼마이고 견종은 무엇인지 출력해 줍니다.
이제 클래스로부터 객체를 만들어보겠습니다. (클래스로부터 만들어진 객체 = 인스턴스)
class Dog{
var age : Int = 10
var weight : Double = 6.5
var species : String = "말티즈"
func display(){
print("나이=\(age), 몸무게=\(weight), 견종=\(species)")
}
}
var max : Dog = Dog() // var 인스턴스명 : 클래스명 = 클래스명()
//클래스명 다음의 괄호는 default initializer를 나타냅니다.
print(max.age)
간단하게 인스턴스를 만들고, 프로퍼티에 접근하는 예제입니다. 여러모로 깊숙한 부분은 클래스(2) 부분에서 더 다루어 보도록 하겠습니다. 제가 이해한 Swift에서의 클래스 정리입니다.