학습
Swift 기본적인 클래스(Class) 사용
Swift 기본적인 클래스(Class) 사용 — 초급
기본적인 클래스(Class) 사용
1. 도입 (왜 배워야 하는가)
클래스는 Swift와 같은 객체지향 프로그래밍 언어에서 중요한 개념입니다. 클래스는 객체를 생성하는 설계도와 같은 역할을 하며, 데이터를 구조화하고 그 데이터에 대한 행동을 정의할 수 있게 해줍니다. 실무에서는 복잡한 시스템을 구성하고 유지보수하기 위해 클래스를 사용하여 코드의 재사용성을 높이고, 가독성을 개선하며, 협업을 용이하게 합니다.
만약 클래스를 모른다면, 데이터와 기능을 효과적으로 조직하는 데 어려움을 겪을 수 있습니다. 이는 코드의 복잡성을 증가시키고, 버그를 유발하거나 유지보수가 힘든 프로그램을 만들 가능성이 높습니다.
2. 핵심 개념 설명
클래스(Class): 객체를 생성하기 위한 템플릿입니다. 속성(데이터)과 메서드(기능)를 포함할 수 있습니다. 클래스는 실생활의 사물이나 개념을 모델링하는 데 유용합니다.
비유
클래스는 마치 자동차의 설계도와 같습니다. 설계도가 있으면 여러 대의 자동차를 만들 수 있듯이, 클래스가 있으면 여러 개의 객체를 생성할 수 있습니다.
관련 용어 정리
| 용어 | 설명 |
|---|---|
| 객체(Object) | 클래스의 인스턴스, 실제로 만들어진 것 |
| 속성(Property) | 클래스가 가지고 있는 데이터 |
| 메서드(Method) | 클래스가 수행할 수 있는 행동 |
3. 기본 코드 예제
아래는 기본적인 클래스의 사용법을 보여주는 예제입니다.
class Car {
var color: String
var model: String
init(color: String, model: String) {
self.color = color
self.model = model
}
func drive() {
print("\(model)가 주행 중입니다.")
}
}
let myCar = Car(color: "빨강", model: "스포츠카")
myCar.drive()
실행 결과
스포츠카가 주행 중입니다.
코드 한 줄씩 동작 설명
class Car {-Car라는 이름의 클래스를 정의합니다.var color: String-color라는 속성을 선언합니다. 이는 문자열 타입입니다.var model: String-model이라는 속성을 선언합니다. 역시 문자열 타입입니다.init(color: String, model: String) {- 클래스의 초기화 메서드를 정의합니다.self.color = color- 전달받은color값을 클래스의color속성에 저장합니다.self.model = model- 전달받은model값을 클래스의model속성에 저장합니다.func drive() {-drive라는 메서드를 정의합니다. 이 메서드는 자동차가 주행 중임을 출력합니다.let myCar = Car(color: "빨강", model: "스포츠카")-Car클래스의 인스턴스인myCar를 생성합니다.myCar.drive()-myCar의drive메서드를 호출하여 출력을 생성합니다.- 클래스는 객체지향 프로그래밍에서 핵심적인 개념으로, 데이터를 구조화하고 행동을 정의합니다.
- 클래스를 사용하면 코드의 재사용성과 유지보수성을 높일 수 있습니다.
- 클래스의 속성과 메서드는 객체의 특성과 행동을 정의합니다.
- 실무에서 클래스는 다양한 도메인에서 활용됩니다 (쇼핑몰, 학생 관리 등).
- 속성 초기화와 메서드 호출 시 인스턴스 사용에 주의해야 합니다.
- 구조체(Struct)와 클래스의 차이
- 상속(Inheritance)과 다형성(Polymorphism)
- 프로토콜(Protocol)과 델리게이션(Delegation) 패턴
4. 실전 활용 예제
예제 1: 쇼핑몰 장바구니
쇼핑몰에서 장바구니를 구현할 때 각 상품을 클래스 형태로 정의할 수 있습니다.
class Product {
var name: String
var price: Double
init(name: String, price: Double) {
self.name = name
self.price = price
}
}
class ShoppingCart {
var items: [Product] = []
func addItem(product: Product) {
items.append(product)
}
func totalPrice() -> Double {
return items.reduce(0) { $0 + $1.price }
}
}
예제 2: 학생 관리 시스템
학생의 정보를 관리하는 간단한 시스템을 구축할 때 클래스가 유용합니다.
class Student {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
func introduce() {
print("안녕하세요, 제 이름은 \(name)이고, 나이는 \(age)세입니다.")
}
}
5. 흔한 실수와 주의사항
실수 1: 속성 초기화 누락
class Car {
var color: String
// var model: String // 초기화 안 함
init(color: String) {
self.color = color
}
}
올바른 코드
class Car {
var color: String
var model: String
init(color: String, model: String) {
self.color = color
self.model = model
}
}
주의사항: 모든 속성을 초기화하지 않으면 컴파일 오류가 발생합니다.
실수 2: 메서드 호출 시 인스턴스 누락
let myCar = Car(color: "파랑", model: "SUV")
drive() // 오류 발생
올바른 코드
myCar.drive() // 인스턴스 메서드 호출
주의사항: 메서드를 호출할 때 해당 인스턴스에 대해 호출해야 합니다.