무스(페를)

Moose (Perl)

무스는 Perl 프로그래밍 언어의 객체시스템의 확장입니다.그 목적은[1] 현대적인 객체 지향 언어 기능을 Perl 5에 도입하여 객체 지향 Perl 프로그래밍을 보다 일관되게 하고 지루함을 줄이는 것입니다.

특징들

Moose는 클래스 위에 구축됩니다.MOP, 메타 오브젝트 프로토콜(일명 MOP)입니다.MOP를 사용하여 Moose는 모든 Moose 사용 클래스에 완전한 자기성찰을 제공합니다.

Moose를 사용하면 프로그래머가 클래스를 만들 수 있습니다.

  • 클래스에 0 이상의 속성이 있습니다.
  • 클래스에 0개 이상의 메서드가 있습니다.
  • 클래스에 0개 이상의 슈퍼클래스(부모 클래스)가 있습니다.클래스는 슈퍼클래스로부터 상속됩니다.무스는 다중 상속을 지원합니다.
  • 클래스에 0개 이상의 메서드 한정자가 있습니다.이러한 수식자는 자체 메서드, 상위 메서드로부터 상속된 메서드 또는 역할에 의해 제공되는 메서드에 적용할 수 있습니다.
  • 클래스는 0개 이상의 역할을 수행합니다(다른 프로그래밍 언어에서는 특성이라고도 함).
  • 클래스에는 생성자소멸자가 있습니다.
  • 클래스에는 메타클래스가 있습니다.

특성

속성은 속성을 정의하는 클래스의 속성입니다.

  • Atribute에는 항상 이름이 있으며, 그 밖에도 여러 가지 정의 특성이 있을 수 있습니다.
  • 속성의 특성은 읽기/쓰기 플래그, 유형, 접근자 메서드 이름, 위임, 기본값느린 초기화를 포함할 수 있습니다.

역할

무스에서의 역할은 특성에 기반을 두고 있다.이들은 mixin과 유사한 작업을 수행하지만 상속되지 않고 수평으로 구성됩니다.또, 어느 정도 인터페이스와 비슷하지만, 인터페이스의 일부 실장과는 달리, 디폴트 실장을 제공할 수 있습니다.역할은 클래스뿐만 아니라 개별 인스턴스에도 적용할 수 있습니다.

  • 역할에 0 이상의 속성이 있습니다.
  • 역할에 0개 이상의 메서드가 있습니다.
  • 역할에 0개 이상의 메서드 한정자가 있습니다.
  • 역할에 필요한 메서드가 0개 이상 있습니다.

내선번호

CPAN에는 다수의 무스 확장 모듈이 있습니다.2012년 9월 현재 MooseX [2]네임스페이스에는 266개의 배포에 855개의 모듈이 있습니다.대부분의 경우 다음 작업을 사용하여 선택적으로 설치할 수 있습니다.:[3] 무스 모듈

이것은 클래스의 예시입니다.Point및 그 서브클래스Point3D:

패키지 포인트, 무스 사용합니다. 사용 잉어,''x다 =>,(이사야 =>, 'Num'=&gt다;'rw의);''y다 =>,(이사야 =>, 'Num'=&gt다;'rw의), 평온을 명확한{를 자기)변화;달러self->, x(0)달러self->, y(0).}서브 set_to{@ 즉 == 3또는이 우"인수의 나쁜 번호";를 자아)변화;내(달러 x달러 y)-@,달러self->, x(달러))달러 self->.;y(달러 y).}패키지 Point3D 우리들e 무스, 카프 사용, '포인트' 확장, 'z' => 있음(isa = > 'Num' '= > 'rw'), 'clear' => 서브 {$self = shift; $self->z(0); }, sub set_to {@_== 4 또는 croak "Bad number of }, my self"; my self ="; my self, my self = shift; my self.

새로운 것이 있다set_to()의 메서드Point3Dclass에 정의되어 있는 같은 이름의 메서드Point의 경우 클래스는 호출되지 않습니다.Point3D인스턴스.clear()반면 메서드는 대체되지 않고 하위 클래스로 확장되므로 두 메서드는 올바른 순서로 실행됩니다.

이것은, 를 사용했을 때와 같습니다.MooseX::Declare내선번호:

MooseX 사용::클래스 포인트{;(이사야 =>, 'Num'=&gt다;'rw의);''y =&gt하고 있다.(이사야 =>, 'Num'=&gt다;'rw의);''x =&gt다 법{달러self->, x(0)달러self->, y(0), 맑은}법set_to(Num달러), Num달러 y){달러self->, x(달러))달러self->, y(달러 y).}}클래스 Point3D 포인트{의 'z다 =&gt으로 분류한다;을 찬송합니다.(이사야 =>, 'Num'=&gt다;'rw의);.{$self->z(0);} 메서드 set_to(Num $x, Num $y, Num $z) {$self->x($x); $self->y($y); $self->z($z); }을(를) 클리어한

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Moose - A postmodern object system for Perl". Retrieved 2017-03-06.
  2. ^ CPAN에서의 무스 확장
  3. ^ 작업:: 무스

외부 링크