Product Design, Manufacturing & Innovation Resources
» 다형성(프로그래밍)

다형성(프로그래밍)

1967
  • Christopher Strachey
코드 스니펫으로 다형성을 보여주는 컴퓨터 프로그래밍 작업 공간.

(설명을 위한 생성된 이미지입니다)

다형성은 그리스어로 '다양한 형태'를 의미하며, 서로 다른 클래스의 객체를 공통된 상위 클래스의 객체처럼 취급할 수 있게 해줍니다. 이를 통해 단일 인터페이스(예: ...)를 사용할 수 있습니다. 방법 이름은 여러 동작을 포괄하는 일반적인 클래스로 사용됩니다. 구체적인 동작은 런타임 시 객체의 정확한 유형에 따라 결정됩니다. 이는 종종 메서드 오버라이딩을 통해 구현됩니다.

Polymorphism is a powerful concept that allows for writing flexible and decoupled code. The most common form in OOP is subtype polymorphism, which is enabled by inheritance and method overriding. When a subclass provides a specific implementation for a method that is already defined in its superclass, it is called overriding. A variable of the superclass type can refer to an object of any of its subclasses. When a method is called on this variable, the version of the method that gets executed is the one belonging to the object’s actual class, not the variable’s type. This decision is made at runtime, a process known as dynamic dispatch or late binding.

예를 들어, 'calculateArea()' 메서드를 가진 슈퍼클래스 'Shape'를 생각해 보세요. 'Circle'이나 'Rectangle'과 같은 서브클래스는 'Shape'를 상속받아 'calculateArea()' 메서드에 대한 자체적인 구현을 제공할 수 있습니다. 그러면 프로그램은 'Circle'과 'Rectangle' 인스턴스를 모두 포함하는 'Shape' 객체 목록을 가질 수 있습니다. 이 목록을 순회하면서 각 요소에 대해 'calculateArea()'를 호출하면 각 도형에 맞는 올바른 수식이 자동으로 적용됩니다. 이를 통해 각 객체의 유형을 확인하기 위해 긴 'if-else' 또는 'switch' 문을 사용할 필요가 없어지므로 코드가 더 깔끔하고 확장성이 뛰어납니다. 새로운 도형을 시스템에 추가할 때 해당 도형을 처리하는 코드를 수정할 필요가 없습니다.

UNESCO Nomenclature: 1203
컴퓨터 과학

유형

추상 시스템

분열

점진적

용법

널리 사용됨

전구체

  • C와 같은 언어에서 함수 포인터의 개념
  • 일반 프로그래밍 개념
  • 상속은 하위 유형 다형성에 필요한 클래스 계층 구조를 제공합니다.
  • 유연하고 확장 가능한 소프트웨어 시스템의 필요성

응용 프로그램

  • 단일 'draw()' 메서드 호출을 사용하여 다양한 도형('원', '사각형')을 그릴 수 있습니다.
  • 다양한 문서 유형('pdf', 'word')을 일반 'print()' 함수로 처리합니다.
  • implementing user interface event handlers
  • 서로 다르지만 관련된 유형의 객체를 저장할 수 있는 일반 컬렉션
  • 의존성 주입 프레임워크

특허:

NA

잠재적 혁신 아이디어

현재 하루 4만 건이 넘는 봇 트래픽을 차단하기 위해 이 콘텐츠는 커뮤니티 회원만 이용할 수 있습니다.
> 로그인 < 또는 >등록 < 이 콘텐츠를 비롯한 모든 제한된 콘텐츠와 도구는 (100% 무료로) 이용할 수 있습니다.

관련 개념: 다형성, 오버라이딩, 동적 디스패치, 지연 바인딩, 서브타입, 인터페이스, 추상화, 객체지향 프로그래밍, 메서드 오버라이딩, 런타임.

역사적 맥락

다형성(프로그래밍)

1956
1960
1967
1967
1970
1970
1970
1953
1960
1960
1967
1970
1970
1970
1970

(날짜를 알 수 없거나 관련이 없는 경우, 예를 들어 "유체역학"의 경우, 주목할 만한 등장 시기를 대략적으로 추정하여 제공합니다.)

고화질 이미지 및 다운로드는 등록된 회원에게만 100% 무료로 제공됩니다.

> 로그인 <