Ruby를 공부하면서 다른언어와 다르게 이해하기가 아리송한 개념이 바로 Module과 Mixin 입니다.
Module은 클래스 인것 같으면서도 아닌것 같은. 대체 이놈은 뭘하는 놈인지 공부하면 할수록 더 어려운 개념입니다.
RORLAB의 rinae님께서 module 개념에 대해 간략히 다시 정리를 해주신 내용을 공유하고자 합니다.
Ruby Module
모듈은 기본적으로 여러 클래스에서 같은 메서드를 사용하고자 할 때 + 하지만 상속관계로 설정하고 싶지 않을 때 쓰시면 됩니다
이를테면 Bird 라는 클래스에 `fly` 가 구현되어 있다고 하면 하위클래스로 Swallow, Eagle 을 만들어서 Bird를 상속받을 수 있겠지요
다만 이 `fly` 라는 녀석이 꼭 Bird 안에 구현되어있을 필요는 없는겁니다
Plane이나 Kite 같은 클래스도 `fly` 메서드를 사용할 수 있겠지요
하지만 이 클래스들은 Bird 클래스를 상속받기엔 부적절합니다.
이럴때 `Flyable` 모듈에다 `fly` 메서드를 만들어서 각각의 클래스에 `include` (불러오기) 하면 부모-자식 관계와는 관계없이 사용가능합니다. 이 개념을 상속이 아닌 믹스인이라고 합니다.