less than 1 minute read

추상화(Abstraction)

복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간츄려 내는 것

즉 복잡한 것을 단순화 한 것
추상화 방법으로는 일반화(Generalization), 집단화(Aggreation), 연관화(Association) 등이 있음

 

Roles

Java에서 Interface와 비슷한 것
클래스간에 공유 할 수 있는 메소드를 캡슐화 한 것
Roles는 클래스가 아님
생성된 Role이 다른 곳에서 사용될때 consume 되었다고 함

Role 생성
package foo;

use Moose::Role;

sub temp{}

일단 use Moose::Role; 이 구문이 들어있으면 Role임

그 외에는 그냥 클래스 작성하듯이 작성

Role Consume

with foo; 이 구문으로 해당 role을 가져옴
패키지명이 들어가야며 여러 role을 ,로 구분하여 여러개를 동시에 가져올 수도 있음
현재 패키지에 정의되어 있지 않은 temp{}를 이제 사용할 수 있음

추상 메소드

Role 클래스에 requires '함수명' 으로 가상 메소드를 생성 할 수 있음
이 Role을 사용하는 모든 모듈은 전부 requires에 정의된 함수를 반드시 정의 해줘야 함
해당 함수가 없으면 예외 발생함