スライド 1

進化パターンのメタモデル
名前
1
1
進化パターン
1..*
構成要素
サブクラスの追加 : 名前
: 進化パターン
SubClass: 構成要素
サブクラスの追加
SuperClass: 構成要素
サブクラスの追加
1
SubClass
*
SuperClass
特殊化の意味
サブクラスの追加
1
継承する
SuperClass
*
SubClass
クラス継承による Null Object の追加
1
Component
継承する
0..1
Null Component
Interfaceのジェネリック化
1
Interface
持つ
0..*
0..1 参照する
参照する
Component
*
実装/継承する
Type Parameter
1
1..*
1..*
SubComponent
: Interfaceのジェネリック化
MyInterface : Interface
Componet : Componet
SubComponetA : SubComponet
SubComponetB : SubComponet
: Interfaceのジェネリック化
MyInterface : Interface
T extends Component : Type Parameter
Componet : Componet
SubComponetA : SubComponet
SubComponetB : SubComponet
Interface Adapterの導入
1..*
具象クラス
1
実装する
1..*
0..1
Interface
1..*
1
0..1
0..1
InterfaceAdapter
継承する
0..1
実装する
: Interface Adapterの導入
MyClassA: 具象クラス
MyInterface : Interface
MyClassB: 具象クラス
: Interface Adapterの導入
MyClassA: 具象クラス
MyClassB: 具象クラス
MyInterface : Interface
MyInterfaceAdapter : InterfaceAdapter
Interfaceへのメソッドの追加
1..*
1..*
具象クラス
1
持つ
1..*
1
具象メソッド
1
実装する
実装する
1
1
Interface
1
持つ
1..*
抽象メソッド
: Interfaceへのメソッドの追加
MyInterfaceImpl: 具象クラス
MyInterface : Interface
methodA : 具象メソッド
methodA : 抽象メソッド
: Interfaceへのメソッドの追加
MyInterfaceImpl: 具象クラス
MyInterface : Interface
methodA : 具象メソッド
methodA : 抽象メソッド
methodB : 具象メソッド
methodB : 抽象メソッド
getter/setterの移動
1
1
ComponentA
0..1
0..1
setter
getter
0..1
ComponentB
0..1
使用する
使用する
1
フィールド
0..1
ComponentA : ComponentA
1
0..1
: getter/setterの移動
ComponentB : ComponentB
setName : setter
name : フィールド
getName : getter
ComponentA : ComponentA
: getter/setterの移動
ComponentB : ComponentB
setName : setter
name : フィールド
getName : getter
サブクラスの追加
1
継承する
*
SubClass
SuperClass
: SuperClasss
: サブクラスの追加
SubClassA : SubClass
SubClassB : SubClass
クラス継承による Null Object の追加
1
0..1
継承する
Component
Null Component
: クラス継承による Null Object の追加
Component : Component
: クラス継承による Null Object の追加
Component : Component
NullComponent : Null Component
Concrete Factory の追加
1
Factory
1..*
Concrete Factory
1
Product
1..*
Concrete Product
MyConcreteProductA : ConcreteProduct
MyConcreteProductB : ConcreteProduct
MyFactory : Factory
: Concrete Factory の追加
MyConcreteFactoryA : ConcreteFactory
MyConcreteFactoryB : ConcreteFactory
MyProduct : Product
実装クラスの追加
1
1..*
実装する
Interface
MyInterface : Interface
InterfaceImpl
: 実装クラスの追加
MyInterfaceImlA : InterfaceImpl
MyInterfaceImlB : InterfaceImpl