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

Chapter 06 - 메시지와 인터페이스 #8

Open
3 of 4 tasks
luke0408 opened this issue Aug 7, 2023 · 2 comments
Open
3 of 4 tasks

Chapter 06 - 메시지와 인터페이스 #8

luke0408 opened this issue Aug 7, 2023 · 2 comments
Assignees
Labels
🐛 Issue 오타, 개념 오류 등의 문제 ✍️ in progress 작성 중

Comments

@luke0408
Copy link
Collaborator

luke0408 commented Aug 7, 2023

Chapter 06 - 메시지와 인터페이스

Issue 생성자: @luke0408

작성 참여

  • Section 01 - 협력과 메시지 : @yeonjeonchoi
  • Section 02 - 인터페이스와 설계의 품질 : @yeonjeonchoi
  • Section 03 - 원칙의 함정 : @ShimFFF
  • Section 04 - 명령-쿼리 분리 원칙 : @ShimFFF
@luke0408 luke0408 added the 🧐 to-do 작성 준비 중 label Aug 7, 2023
@luke0408 luke0408 assigned ShimFFF and ghost Aug 7, 2023
@luke0408 luke0408 added ✍️ in progress 작성 중 and removed 🧐 to-do 작성 준비 중 labels Aug 11, 2023
@ghost
Copy link

ghost commented Aug 11, 2023

시그니처가... 머죠?
아니 시그니처가 먼진 알겠어염
다형성이 어쩌라는 거죠?

@luke0408 luke0408 added the ❓ question 해결되지 않은 질문이 남았을 때 label Aug 11, 2023
@luke0408
Copy link
Collaborator Author

시그니처가... 머죠? 아니 시그니처가 먼진 알겠어염 다형성이 어쩌라는 거죠?

해주신 질문에 대해 답변을 하기 위해서는 먼저 다형성에 대해 이해하고
그 다음에 다형성시그니처가 어떻게 관계가 있는지를 설명해야 할 것 같습니다.

다형성(polymorphism)

[사전적인 의미]

polymorphism(다형성)
= poly(여러가지의, 여러 개의) + morphism(형태, 상태변화)

즉, 다양한 형태로 변할 수 있는 것에 대해 의미합니다.

[프로그래밍에서의 poylmorphism]

polymorphism(다형성):
같은 이름을 사용하는 객체가 다른 특성이나 행동을 보유할 수 있는 특성.

아래의 예시를 보면 + 연산자는 피연산자의 타입에 따라 전혀 다른 기능을 수행합니다.
즉, 같은 이름으로 여러가지 다른 기능을 수행할 수 있는 것을 다형성 이라고 하는 것이죠.

ex)

  • "hi"+ "hi" == "hihi"
  • 6 + 7 == 13

시그니처(signature)

시그니처는 정리 글을 작성해주신 것처럼 오퍼레이션(or 메서드)의 이름과 파라미터 목록을 합친 단어입니다.

책에서는 오퍼레이션과 시그니처 그리고 메서드의 관계를 아래와 같이 설명하고 있습니다.

오퍼레이션은 실행 코드 없이 시그니처만을 정의한 것이다.
메서드는 이 시그니처에 구현을 더한 것이다.

이를 코드적인 예시와 같이 보겠습니다.

  • 오퍼레이션
public int sum(int a, int b);
public int sum(int a, int b, int c);
  • 메서드
public int sum(int a, int b) {
    return a + b;
}

public int sum(int a, int b, int c) {
    return a + b + c;
}

그리고 위 예시를 보면 sum이라고 하는 오퍼레이션에 대해서 두 가지의 서로 다른 메서드가 구현되었습니다.
이것이 위에서 간략하게 설명한 다형성을 코드적으로 구현한 예시이며 시그니처다형성의 관계이기도 하죠.

정리

책 속의 언어를 가지고 정리를 해보았습니다.

  • 오퍼레이션의 관점에서 다형성: 동일한 오퍼레이션 호출에 대해 서로 다른 메서드들이 실행되는 것
  • 메서드 선택 기준: 클라이언트에서 전송한 시그니처와 동일한 메서드가 실행됨

@luke0408 luke0408 added 🐛 Issue 오타, 개념 오류 등의 문제 and removed ❓ question 해결되지 않은 질문이 남았을 때 labels Aug 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛 Issue 오타, 개념 오류 등의 문제 ✍️ in progress 작성 중
Projects
None yet
Development

No branches or pull requests

2 participants