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

다형성(프로그래밍)

1967
  • Christopher Strachey
Computer programming workspace demonstrating polymorphism with code snippets.

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

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

다형성은 유연하고 결합도가 낮은 코드를 작성할 수 있게 해주는 강력한 개념입니다. 가장 일반적인 형태는 다음과 같습니다. OOP 서브타입 다형성은 상속과 메서드 오버라이딩을 통해 구현됩니다. 서브클래스가 슈퍼클래스에 이미 정의된 메서드에 대해 특정 구현을 제공하는 것을 오버라이딩이라고 합니다. 슈퍼클래스 타입의 변수는 모든 서브클래스의 객체를 참조할 수 있습니다. 이 변수에 대해 메서드가 호출될 때, 실행되는 메서드 버전은 변수의 타입이 아니라 객체의 실제 클래스에 속하는 메서드입니다. 이러한 결정은 런타임에 이루어지며, 이를 동적 디스패치 또는 지연 바인딩이라고 합니다.

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

UNESCO Nomenclature: 1203
컴퓨터 과학

유형

추상 시스템

분열

점진적

용법

널리 사용됨

전구체

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

응용 프로그램

  • 단일 'draw()' 메서드 호출을 사용하여 다양한 도형('원', '사각형')을 그릴 수 있습니다.
  • 다양한 문서 유형('pdf', 'word')을 일반 'print()' 함수로 처리합니다.
  • 구현 사용자 인터페이스 이벤트 핸들러
  • 서로 다르지만 관련된 유형의 객체를 저장할 수 있는 일반 컬렉션
  • 의존성 주입 프레임워크

특허:

NA

잠재적 혁신 아이디어

  • pluggable data serialization formats (e.g., json, xml, protobuf) using a common interface
  • generic device drivers in an operating system for different hardware
  • strategy design pattern for interchangeable algorithms
  • universal rendering pipelines in graphics engines that handle different material types
  • middleware systems that process various types of network requests
  • financial transaction processors handling different payment methods (credit card, paypal, crypto)
  • a/b testing frameworks that can swap out different user interface components
  • data processing pipelines that can connect to various data sources (databases, apis, files)
  • robotic control systems that can operate different types of actuators through a unified api
  • interchangeable cryptographic algorithm providers in a security framework
관련 개념: 다형성, 오버라이딩, 동적 디스패치, 지연 바인딩, 서브타입, 인터페이스, 추상화, 객체지향 프로그래밍, 메서드 오버라이딩, 런타임.

역사적 맥락

다형성(프로그래밍)

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

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

10년차 기념일

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

> 로그인 <