IMCAT.DEV
로그인 가입
Swift 입문 객체지향

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()

실행 결과

스포츠카가 주행 중입니다.

코드 한 줄씩 동작 설명

  1. class Car { - Car라는 이름의 클래스를 정의합니다.
  2. var color: String - color라는 속성을 선언합니다. 이는 문자열 타입입니다.
  3. var model: String - model이라는 속성을 선언합니다. 역시 문자열 타입입니다.
  4. init(color: String, model: String) { - 클래스의 초기화 메서드를 정의합니다.
  5. self.color = color - 전달받은 color 값을 클래스의 color 속성에 저장합니다.
  6. self.model = model - 전달받은 model 값을 클래스의 model 속성에 저장합니다.
  7. func drive() { - drive라는 메서드를 정의합니다. 이 메서드는 자동차가 주행 중임을 출력합니다.
  8. let myCar = Car(color: "빨강", model: "스포츠카") - Car 클래스의 인스턴스인 myCar를 생성합니다.
  9. myCar.drive() - myCar의 drive 메서드를 호출하여 출력을 생성합니다.
  10. 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() // 인스턴스 메서드 호출

    주의사항: 메서드를 호출할 때 해당 인스턴스에 대해 호출해야 합니다.

    6. 정리

  11. 클래스는 객체지향 프로그래밍에서 핵심적인 개념으로, 데이터를 구조화하고 행동을 정의합니다.
  12. 클래스를 사용하면 코드의 재사용성과 유지보수성을 높일 수 있습니다.
  13. 클래스의 속성과 메서드는 객체의 특성과 행동을 정의합니다.
  14. 실무에서 클래스는 다양한 도메인에서 활용됩니다 (쇼핑몰, 학생 관리 등).
  15. 속성 초기화와 메서드 호출 시 인스턴스 사용에 주의해야 합니다.
  16. 다음에 학습하면 좋은 주제

    • 구조체(Struct)와 클래스의 차이
    • 상속(Inheritance)과 다형성(Polymorphism)
    • 프로토콜(Protocol)과 델리게이션(Delegation) 패턴