You can edit almost every page by Creating an account. Otherwise, see the FAQ.

Mixin

EverybodyWiki Bios & Wiki

package.lua 80번째 줄에서 Lua 오류: module 'Module:Namespace detect/data' not found.

객체 지향 프로그래밍 언어 에서 믹스인 (mixin 또는 mix-in)[1][2][3] 은 다른 클래스의 부모 클래스가 되지 않으면서 다른 클래스에서 사용할 수 있는 메서드를 포함하는 클래스 입니다. 다른 클래스가 믹스인의 메소드에 액세스하는 방법은 언어에 따라 다릅니다. 믹스인은 때때로 "상속"이 아니라 "포함"으로 설명됩니다.

믹스인은 코드 재사용성을 높이고 다중 상속으로 인해 발생할 수 있는 상속의 모호성을 피하거나[4] ( "다이아몬드 문제") 다중 상속에 대한 지원 부족을 해결하기 위해 사용될 수 있습니다. 믹스인은 구현 된 메서드가 있는 인터페이스 로 볼 수도 있습니다. 이 패턴은 종속성 역전 원칙을 적용하는 예입니다.

역사[편집]

믹스인은 Lisp Machine Lisp의 객체 지향 접근 방식이었던 Symbolics의 객체 지향 Flavors 시스템(Howard Cannon에서 개발)에서 처음 등장했습니다. 이 이름은 매사추세츠 소머빌 지역의 스티브 아이스크림 가게에서 영감을 받았습니다[1]. 아이스크림 가게의 주인은 기본적인 맛(바닐라, 초콜릿 등)과 추가적인 재료(땅콩, 쿠키, 사탕 등)의 조합으로 버무려진 아이스크림을 판매했습니다. 이 아이스크림은 "믹스 인 (mix-in)"이라고 불렸으며, 고유 상표가 되었습니다.

믹스인은 프로그래머가 특정 코드를 다른 클래스에 삽입 할 수 있도록하는 프로그래밍 개념입니다. 믹스인 프로그래밍은 특정 클래스에 작성된 기능들을 다른 클래스와 혼합하는 소프트웨어 개발 유형입니다. [5]

믹스인 클래스는 필요로 하는 기능들을 포함하는 상위 클래스의 역할을 합니다. 그런 다음 하위 클래스는 이 기능을 상속하거나 단순히 재사용 할 수 있습니다. 하지만 클래스를 특수화(Specialization)하는 수단으로는 사용할 수 없습니다. 일반적으로 믹스인은 엄격한 단일 "is-a"관계(상속관계)를 만들지 않고 원하는 기능을 하위 클래스로 전달합니다. 여기에 믹스인과 상속 개념의 중요한 차이점이 있습니다. 자식 클래스는 여전히 부모 클래스의 모든 기능을 상속 할 수 있지만, 해당 부모의 자식이라는 의미가 반드시 부여될 필요는 없습니다.

  1. 여러 클래스가 공용기능들을 사용할 수 있게 하는 다중상속의 메카니즘을 제공하지만, 다중상속의 복잡한 의미론은 제거할 수 있습니다. [6]
  2. 코드 재사용성 : 믹스인은 프로그래머가 서로 다른 클래스간에 기능을 공유하고자 할 때 유용합니다. 동일한 코드를 반복해서 작성하는 대신 공통기능을 믹스인으로 그룹화하고 이 기능을 필요로하는 다른 클래스들에 추가할 수 있습니다. [7]
  3. 믹스인은 부모 클래스의 모든 기능을 상속하지 않고 필요로 하는 기능만 상속하고 사용할 수 있습니다. [8]
  • 추상 유형
  • 데코레이터 패턴
  • 정책 기반 설계
  • Trait, 선형 구성이 필요하지 않는 유사구조


This article "Mixin" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Mixin. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.



Read or create/edit this page in another language[편집]