루비에 mixins 사용
2 페이지 1
때로는 이미 다른 곳에서 우리의 소스 코드로 작성되어있다 "이"기능이지만 "이"을 "이 기타를,"이 개체의 클래스를 만들고 싶습니다.
즉, 우리는 소스 코드의 다른 부분이나 다른 도서관에서 정의된 메서드와 속성을 빌려 클래스를 만들고 싶습니다.
반대로, 우리 모두에 액세스할 수 한 장소에서 같은 기능 중심으로 소스 코드를 수집합니다. 어떻게하나요?
Purists는 객체 지향 프로그래밍 및 지원에 의해 충격되어 - 제 생각에 이유없이 전적으로 아니에요 - 이런 종류에 대한 필요성이 다형성의 적절한 사용으로 해결할 수있다.
그들은 같은 언어와 경험에서 오는 특히 기타, C + +, 때문에 다중 상속을 사용하여 이러한 요구 저렇게 정확하게 주장한다.
루비와 같은 실용적인 언어는 그러나, "미신"이름이라는 기술을 제공하여 문제를 해결 - 폭발! - 그건 아이스크림 Massuchussets는 (크림, 초콜릿 ...) 다양한 풍미로 구성된 아이스크림 준입니다
루비에서 Mixins
엄밀히 말해, 루비 mixins에서 클래스, 서로 다른 모듈 (모듈)에 정의된 코드 내에서 사용하는 구현됩니다.
사소한 예를를 위해, 나는 자동으로 금형 나에게 비즈니스 편지의 온기 워드 프로세서를 구현하고 싶었 겠지. 당신이 필요한 유일한 데이터를 입력하려는 때문에,받는 사람 및 메시지를 즉. 프로그램은 다양한 친절한가 좋아 "경"과 생각합니다 "감사합니다."
우리는 형태로 진심을 정의하여 시작합니다 :
모듈 CordialitaLettera
데프 시작 (받는 사람)
"친애하는 씨"+ 수신자 + "\ n"을 반환
끝
최종 서명 (편지)
문자를 반환 + '\ N'+ '감사합니다 \ nCarlo 로시 "
끝
끝
특히 아무것도 따라서 텍스트를 변경할 수있는 두 가지 방법은 입력으로받지 않습니다.
의 이러한 방법, mixin 메모에 대한 클래스 "혼합"작성하자 :
클래스 편지
CordialitaLettera이 포함되어 있습니다
stampaLettera 최종 (수신기, 메시지)
= 시작 지점 (수신기)
편지 + = 메시지
두고 서명 (편지)
끝
끝
클래스에 위의 편지는 모듈에 정의된 친숙한 형식으로 입력으로 문자만을 변수 부분을 뺏는 방법을 가지고 있습니다.
당신이 구문은 루비에서 상속의 그것과 상당히 유사하다 볼 수 있듯이, 그러나, 후자와는 달리, 우리는 수업 시간에 모듈의 숫자를 구현할 수 - 등 잘 알려져 있지만 클래스에서 파생하실 수 있습니다 그리고 하나의 부모 클래스 (루비는 다중 상속을 지원하지!)
예를 들어, 우리는 쓸 수있다 :
데프 주 ()
lEngine = Lettere.new
lEngine.stampaLettera ( '알레 Saltarin'
'난 그냥 은행에 납부
당신이 요청했습니다. ')
두고
lEngine.stampaLettera ( '마 Pisconi'
저는 nr.038283873로 팩스를 보내주시기 바랍니다. ')
끝
이는 반환합니다 :
sig.Alessio Saltarin님께, 난 그냥 당신이 요청한 은행을 냈어요. 감사합니다 카를로 로시
sig.Matteo Pisconi님께, 나는 nr.038283873로 팩스를 보내주십시오. 감사합니다 카를로 로시다른 것들 사이에이 기법은, 우리는 자바의 인터페이스의에 mixin의 사용을 동화 수 : 클래스가 모듈과 "혼합"인 경우 사실, 사실 그것은 방법을 (그리고 따라서 특정 인터페이스를 충족) 실시 .






