[066] 플러터 (Flutter) 배우기 - Dart Mixin 이해 및 활용

2023. 6. 18. 16:43모바일어플개발/Flutter

반응형

안녕하세요~ totally 개발자입니다.

 

Dart Mixin, with 이해

 

이 포스팅에서는 Dart의 Mixin과 with를 사용하는 방법에 대해 살펴보도록 하겠습니다. Mixin은 "여러 클래스 계층에서 코드 정의한 부분을 재사용하기 위한 방법 중 하나이다" 공식문서에 표현되어 있습니다. 영어로는 Mixins are a way of defining code that can be reused in multiple class hierarchies. 이렇게 표현되어 있습니다. 아래 공식 문서를 참고하시기 바랍니다.

 

https://dart.dev/language/mixins

 

Mixins

Learn how to add to features to a class in Dart.

dart.dev

 

플러터는 다트(Dart) 언어를 사용하기 때문에 먼저 다트를 제대로 이해할 필요가 있는데 먼저 다트(Dart) 언어에는 extends, implements이 주로 사용되며 extends는 클래스를 상속할 때, implements는 추상화 클래스를 만들 때 사용합니다 (자바에는 interface로 구현되지만 다트는 별도의 interface가 없습니다 다만 implements를 통해 interface처럼 사용되는지 여부를 알 수 있습니다). 여기에서 반드시 이해하고 넘어가셔야 할 점은 extends, 상속할 때에는 클래스의 메소드를 override(재정의)하지 않으나 implements로 받아오는 경우에는 반드시 override(재정의)가 필요합니다. Dart에서는 이를 abstract 클래스에서 정의한 메소드들을 implements하는 클래스에서 재정의하게 됩니다. 그러면 mixin은 어떤 상황에서 쓰일까요? mixin은 바로 다중 상속을 해야 하는 경우에 주로 사용됩니다. 다트(Dart)에서는 extends를 통한 다중 상속이 지원되지 않습니다. 그 경우에 바로 mixin를 활용해야 합니다. 

 

간단한 예제를 통해 mixin을 활용해보도록 하겠습니다. 간단한 상황을 가정해보도록 합시다. 

1) 관리자는 한 회사의 소속 직원입니다.

2) 관리자는 현재 HR(인사관리), Accounting(회계) 부분을 관리합니다.

 

mixin을 사용하기 위해서는 class 키워드 대신 mixin을 입력하여 사용합니다. HR 파트 mixin을 입력합니다.

 

그 다음으로 mixin AccountingManagement를 입력합니다.

 

관리자가 상속하게 되는 Employee 일반 클래스를 만들어줍니다.

 

Manager의 클래스를 만들어주고 Employee를 상속하고 HumanResourceManagement와 AccountingManagement의 Mixin들도 함께하도록 만들어줍니다. 이러면 manage의 한 메소드에서 모두 상속하고 있는 메소드들을 모두 호출할 수 있습니다.

 

메인 함수에 다음처럼 입력하여 콘솔에 출력해보면 아래와 같이 나오는 것을 확인할 수 있습니다. 

 

위와 같이 mixin을 활용해볼 수 있으며 실제로는 mixin과 type을 제한하기 위해 on 키워드를 붙이는 등 여러 가지 추가적으로 아셔야 할 부분도 있기 때문에 위에 있는 공식 문서도 참고하시는 것을 권장드립니다.

 

[전체 소스 코드]

 

 

[유튜브 강좌 영상]

 

https://youtu.be/TAWlZ0QqkT4

 

반응형