🚁

클로저/ 객체지향 프로그래밍

 클로저/객체지향 프로그래밍

개념 바로 알기

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 타입 배열에 DogCat 객체를 저장하고, 배열의 각 객체에서 makeSound() 메서드를 호출하세요.
예상 출력:
Bark! Meow!
Plain Text
복사

제출하기