Search
📻

Struct와 Class / 프로토콜

 Struct와 Class / 프로토콜

 개념 바로 알기

1. Struct와 Class

1.
Struct(구조체):
값 타입(Value Type)으로, 메모리에서 값을 복사해 사용하므로 독립된 인스턴스를 생성.
상속 불가능.
주로 데이터를 저장하거나 간단한 로직을 수행할 때 사용.
2.
Class(클래스):
참조 타입(Reference Type)으로, 메모리에서 동일한 인스턴스를 여러 곳에서 참조.
상속 가능.
객체지향 프로그래밍의 주요 개념으로 사용.

주요 차이점

특징
Struct
Class
메모리 구조
Stack
Heap
타입
값 타입(Value Type)
참조 타입(Reference Type)
상속
불가능
가능
성능
메모리 복사가 빨라 성능 우수
메모리 참조로 성능 낮음

2. 프로토콜

프로토콜(Protocol)은 특정 기능을 정의한 청사진입니다.
Struct, Class, Enum에서 프로토콜을 채택(Adopt)하고 구현(Implement)할 수 있습니다.
용도
코드를 재사용 가능하고 유연하게 설계.
프로토콜 기반의 설계 방식(Protocol-Oriented Programming)을 가능하게 합니다.

프로토콜 문법 예제

protocol Greetable { func greet() -> String } struct Person: Greetable { var name: String func greet() -> String { return "Hello, \\(name)!" } } let person = Person(name: "Alice") print(person.greet()) // "Hello, Alice!"
Swift
복사

 직접 구현해보기

앞서 복습한 Struct와 Class / 프로토콜을 기반으로 직접 구현해볼거에요! 힌트는 가능한 보지 않고 진행해주세요.
1.
Struct 구현하기
이름과 나이를 저장하는 User Struct를 작성하고, 두 명의 독립적인 사용자 인스턴스를 생성해주세요.
두 인스턴스의 값을 변경한 후, 각 인스턴스가 서로 독립적임을 확인하세요.
2.
Class 사용 예제:
이름과 나이를 저장하는 User Class를 작성하고, 두 개의 사용자 참조를 생성해주세요.
한 참조의 값을 변경한 후, 두 참조가 동일한 값을 공유하는지 확인하세요.
힌트!
3.
Greetable 프로토콜:
greet() 메서드를 포함한 Greetable 프로토콜을 정의합니다.
Person Struct와 Robot Class에서 이 프로토콜을 채택하고 구현하세요.
Person은 이름을 활용하여 인사를 출력, Robot은 고유 ID를 활용해 인사를 출력합니다.
4.
프로토콜 확장(Extension):
Greetable 프로토콜에 기본 구현을 추가하여 greet() 메서드가 기본적으로 "Hello!"를 반환하도록 하세요.
기본 구현을 사용하지 않고 고유 인사를 반환하는 Alien Struct를 추가로 구현하세요.
힌트!

 제출하기