클래스 정의하기
Coddy Swift 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 2번째.
클래스는 객체의 한 종류를 설명합니다. 즉, 각 객체가 보유하는 데이터와 객체가 수행할 수 있는 작업을 설명합니다. class Dog { ... }는 타입을 선언하고, Dog()는 해당 타입의 객체를 생성합니다. 이러한 객체를 인스턴스라고도 합니다.
class Dog {
var name = "Rex"
var age = 3
}
let dog = Dog()
print(dog.name)
print(dog.age)출력:
Rex
3클래스 내부의 변수는 클래스의 속성입니다. 각 인스턴스는 고유한 복사본을 가지며, 점 표기법으로 읽고 변경합니다:
class Dog {
var name = "Rex"
var age = 3
}
let first = Dog()
let second = Dog()
second.name = "Bella"
print(first.name)
print(second.name)출력:
Rex
Bella클래스 내부의 함수는 메서드입니다. 메서드는 자신이 호출된 인스턴스의 속성을 읽고 변경할 수 있습니다:
class Counter {
var count = 0
func increment() {
count += 1
}
func report() -> String {
"count is \(count)"
}
}
let clicks = Counter()
clicks.increment()
clicks.increment()
print(clicks.report())출력:
count is 2타입 이름은 UpperCamelCase(BankAccount)로 작성하고, 프로퍼티와 메서드 이름은 lowerCamelCase(balance, deposit())로 작성합니다. 데이터와 그 데이터에 대해 작업하는 함수를 하나의 타입에 넣는 것이 객체 지향 프로그래밍의 핵심 개념입니다. 즉, Counter를 사용하는 코드는 increment()를 호출하며 카운트가 어떻게 저장되는지는 알 필요가 없습니다.
class BankAccount {
var balance = 0
func deposit(_ amount: Int) {
balance += amount
}
}챌린지
쉬움Pet 클래스의 describe() 메서드를 완성하세요. 이 메서드는 속성으로 구성된 한 문장을 반환합니다. 이름이 Rex이고, 종이 dog이며, 나이가 3인 반려동물은 Rex is a 3 year old dog를 반환합니다.
제공된 코드는 Pet을 생성하고, 입력값(name, species, age)으로 속성을 설정한 다음 describe()의 결과를 출력합니다.
코드는 Pet.swift에 작성하세요. main.swift에는 제공된 입력/출력 코드가 있으며 편집할 수 없습니다.
직접 해보기
// 제공된 입력/출력 코드: 그대로 유지하세요
var input: [String] = []
while let line = readLine() { input.append(line) }
let pet = Pet()
pet.name = input[0]
pet.species = input[1]
pet.age = Int(input[2])!
print(pet.describe())
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: Swift 플레이그라운드