클로저/객체지향 프로그래밍
개념 바로 알기
1. 클로저(Closures)
1.
클로저란?
•
코드에서 독립적으로 전달 및 사용할 수 있는 기능을 가진 코드 블록입니다.
•
변수나 상수에 저장 가능하며, 함수의 인자로 전달할 수 있습니다.
2.
클로저 문법
•
클로저는 다음과 같은 형태로 작성됩니다:
{ (매개변수) -> 반환타입 in
실행 코드
}
Swift
복사
3.
캡처(Capture)
•
클로저는 외부 변수나 상수의 값을 캡처하여 저장합니다.
•
예제:
var number = 10
let closure = { number += 5 }
closure()
print(number) // 15
Swift
복사
클로저 기본 예제
// 기본 클로저
let greet = { (name: String) -> String in
return "Hello, \\(name)!"
}
print(greet("Alice")) // "Hello, Alice!"
// 함수의 인자로 클로저 전달
func performAction(action: () -> Void) {
action()
}
performAction {
print("Action performed!")
}
Swift
복사
2. 객체지향 프로그래밍(OOP)
1.
객체지향 프로그래밍(OOP):
•
객체(Object)를 기반으로 프로그램을 설계하는 방식.
•
주요 원칙:
◦
캡슐화(Encapsulation): 데이터를 숨기고 외부에는 필요한 인터페이스만 제공.
◦
상속(Inheritance): 기존 클래스를 확장하여 새로운 클래스를 생성.
◦
다형성(Polymorphism): 같은 메서드를 다양한 방식으로 동작하게 함.
◦
추상화(Abstraction): 불필요한 세부 사항을 숨기고 중요한 부분만 표현.
2.
클래스와 객체
•
클래스(Class): 객체를 정의하기 위한 청사진.
•
객체(Object): 클래스에서 생성된 실제 인스턴스.
OOP 기본 예제
class Animal {
var name: String
init(name: String) {
self.name = name
}
func makeSound() {
print("Some generic sound")
}
}
class Dog: Animal {
override func makeSound() {
print("Bark!")
}
}
let dog = Dog(name: "Buddy")
dog.makeSound() // "Bark!"
Swift
복사
직접 구현해보기
앞서 복습한 클로저는 외부 값을 캡처하고 함수처럼 전달 가능한 코드 블록으로, iOS 개발에서 비동기 처리나 UI 업데이트에 자주 사용됩니다.
**객체지향 프로그래밍(OOP)**은 캡슐화, 상속, 다형성을 통해 유연하고 재사용 가능한 코드를 작성하는 방법으로, 복잡한 애플리케이션을 설계할 때 필수적인 패턴입니다.
이 두 가지는 iOS 개발에서 핵심적인 개념이니 직접 구현하며 이해도를 높여보세요!
Step 1: 클로저 구현하기
1.
간단한 클로저 구현:
•
숫자 배열 [1, 2, 3, 4, 5]를 생성하고, 클로저를 사용해 배열의 모든 값을 2배로 만든 결과를 출력하세요.
힌트:
2.
클로저 캡처 이해:
•
아래 코드를 완성하여 클로저가 외부 변수 값을 캡처하는 동작을 확인하세요.
var counter = 0
let incrementCounter = {
counter += 1
}
incrementCounter()
incrementCounter()
print(counter) // 출력: ?
Swift
복사
Step 2: 객체지향 프로그래밍 구현하기
1.
동물 클래스 설계:
•
다음 요구 사항에 맞는 클래스를 구현하세요:
◦
Animal 클래스: name 속성과 makeSound() 메서드를 포함.
◦
Dog 클래스: Animal을 상속받고 makeSound() 메서드를 오버라이드하여 "Bark!" 출력.
◦
Cat 클래스: Animal을 상속받고 makeSound() 메서드를 오버라이드하여 "Meow!" 출력.
힌트:
2.
다형성 확인:
•
Animal 타입 배열에 Dog와 Cat 객체를 저장하고, 배열의 각 객체에서 makeSound() 메서드를 호출하세요.
•
예상 출력:
Bark!
Meow!
Plain Text
복사