<Toplevel Module>
TmStd
—
#3
Lsm
—
#5
Abstract
—
#7
inherits from |
|
Product
—
#11
Abstract
—
#13
inherits from |
|
Sum
—
#19
Abstract
—
#21
inherits from |
| ||||
has properties |
|
Collection
—
#31
Abstract
—
#33
includes |
| ||||||||||||||||||||
inherits from |
| ||||||||||||||||||||
has properties |
|
Object
(
Builtin-Module
)
Abstract
(
TmStd::Lsm
)
—
#7
Abstract
| ( |
TmStd::Lsm::Product
)
| — | #13 | ||
Abstract
| ( |
TmStd::Lsm::Sum
)
| — | #21 | ||
Abstract
| ( |
TmStd::Lsm::Collection
)
| — | #33 |
1 # $Id: abstraction.rb,v 1.3 2011/12/08 22:54:35 machan Exp $ 2 3 module TmStd 4 5 module Lsm 6 7 class Abstract; end 8 9 10 11 module Product 12 13 class Abstract < TmStd::Lsm::Abstract; end 14 15 end 16 17 18 19 module Sum 20 21 class Abstract < TmStd::Lsm::Abstract 22 def lsm_member 23 raise TmStd::Exception::SubclassResponsibility 24 end 25 end 26 27 end 28 29 30 31 module Collection 32 33 class Abstract < TmStd::Lsm::Abstract 34 include Enumerable 35 36 def lsm_elements 37 raise TmStd::Exception::SubclassResponsibility 38 end 39 40 41 def each 42 raise TmStd::Exception::SubclassResponsibility 43 end 44 45 46 def empty? 47 Assertion.boolean self.lsm_elements.empty? 48 end 49 50 51 def size 52 Assertion.kind_of self.lsm_elements.size, Integer 53 end 54 55 56 private 57 58 def lsm_element_class(const_name = 'LSM_ELEMENT_CLASS') 59 begin 60 elem_class = self.class.const_get const_name 61 rescue NameError 62 raise TmStd::Exception::SubclassResponsibility 63 end 64 65 Assertion.kind_of elem_class, ::Class 66 end 67 end 68 69 end 70 71 end # TmStd::Lsm 72 73 end # TmStd