Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[레벨 1] 13주차 11. Swift에서 프로토콜(Protocol)이란 무엇이며, 어떻게 사용하나요? #25

Open
longlivedrgn opened this issue Jul 3, 2024 · 2 comments
Assignees
Labels

Comments

@longlivedrgn
Copy link
Contributor

  • 프로토콜의 요구 사항에는 어떤 것들이 있나요?
  • 프로토콜 확장(Protocol Extension)을 사용하는 이유는 무엇인가요?
  • 프로토콜 지향 프로그래밍(Protocol-Oriented Programming)의 장점은 무엇인가요?
@longlivedrgn longlivedrgn self-assigned this Jul 3, 2024
@ueunli
Copy link

ueunli commented Jul 3, 2024

프로토콜의 요구 사항에는 어떤 것들이 있나요?

  • get속성, get/set속성, 메서드, 또는 자신을 채택하려면 준수해야 하는 또다는 프로토콜의 요구 사항들
  • 확장으로 기본구현 되거나 NSObject라서 optional 요구조건이라 필수가 아닌 요구사항이 있을 수 있음

프로토콜 확장(Protocol Extension)을 사용하는 이유는 무엇인가요?

  • 기본구현 제공 ⇒ 보일러플레이트 줄여 코드를 깔끔하게
  • 뭔가 더 있었는데.. 막상 말하려니 모르겠음.. 접근수준에 관한 거였는데...

프로토콜 지향 프로그래밍(Protocol-Oriented Programming)의 장점은 무엇인가요?

  • 프로토콜의 장점: 프로토콜 없이는 Swift에서의 다형성 구현 방식이 (함수 오버로딩 이런 거 제쳐놓고 대표 키워드만 보면) 클래스를 통한 상속 뿐이었는데, 다중상속이 불가능하다거나 값타입은 안된다거나 참조타입 특유의 한계 등등의 단점을 대체하고 커버하고 보완해주는 게 프로토콜!
  • 프로토콜 지향 프로그래밍의 장점: 엄지로 쓰기엔 너무 방대해서 생략

@SunnnySong
Copy link

1️⃣ Swift에서 프로토콜(Protocol)이란 무엇이며, 어떻게 사용하나요?

  • Swift에서는 타입의 인터페이스를 정의하는 추상적인 타입이다.
    • 클래스, 구조체, 열거형 등의 타입은 프로토콜을 채택해 해당 요구사항을 구현할 수 있다.
  • 프로토콜은 코드의 재사용성과 유연성을 높여준다.
    • 동일한 프로토콜을 채택함으로써 코드는 타입에 종속되지 않고 일관된 인터페이스를 사용할 수 있다.
  • 단일 상속만 지원하는 클래스와 달리 하나 이상의 프로토콜을 채택할 수 있다.

2️⃣ 프로토콜의 요구 사항에는 어떤 것들이 있나요?

  • 메서드

    protocol Test {
    	func sayHello()
    }
  • 프로퍼티

    protocol Test {
    	var hello: String { get set }
    }
  • 서브스크립트

    protocol Test {
    	subscript(index: Int) -> Int { get }
    }
  • 이니셜라이저

    protocol InitializerProtocol {
        init(someParameter: Int)
    }
  • 연관타입

    protocol Container {
        associatedtype Item
        var items: [Item] { get set }
    }

3️⃣ 프로토콜 확장(Protocol Extension)을 사용하는 이유는 무엇인가요?

  • 기본값을 구현하기 위해 사용한다.
    • 해당 프로토콜을 채택하는 모든 타입에서 동일한 구현을 해야 할 때 사용한다.

4️⃣ 프로토콜 지향 프로그래밍(Protocol-Oriented Programming)의 장점은 무엇인가요?

프로토콜 지향 프로그래밍, Protocol-Oriented Programming

  • 추상화 및 코드 재사용의 수단으로 프로토콜과 프로토콜 확장을 사용하는 프로그래밍이다.
    • Protocol + Value type 의 조합을 강조한다.
  • 프로토콜을 사용해 코드의 재사용성과 유연성을 높일 수 있다.
  • 타입 간 결합도를 낮출 수 있다.
    • 상속에 의한 종속성을 줄일 수 있다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants