Java勉強会 第1回

Java勉強会 第1回
デザインパターン
オブジェクト指向とは
再利用性
カプセル化
多態性
データと操作
が一緒に
なっている
八百屋とスーパーの例


八百屋とスーパーの違い
スーパーはオブジェクト指向?
八百屋とスーパーの違い
八百屋さん
この白菜・・・
89円ね!
店員が野菜の値段を
知っている
八百屋とスーパーの違い
見ての通りスーパーの店員
白菜の値段?
そんなの知らないね
(僕は知ってます
よー)
レジが野菜の値段を知っ
ている
八百屋とスーパーの違い
スーパー
八百屋


レジやバーコードが
要らない
野菜の種類が増え
ると大変


レジやバーコードが
必要
たくさんの商品を扱
える
スーパーはオブジェクト指向?




レジを違うスーパーにおい
ても使用できる
異なるバーコードを読むた
びに違う結果が出る
店員はレジの中で起こって
いることを知らない
商品にバーコードが付いて
いる(自分の情報をアウト
プットしている)
再利用性
多態性
カプセル化
データと操作が
一緒になって
いる
デザインパターンとは?
「デザイン」とは設計のことです。デ
ザイン(設計)パターンを使うと設計
が楽になります。(テンプレートを使う
のと似ています)
ラーメン屋さんが困っているようで
す・・・
トッピングが豊富なことで人気のあるラーメン屋
さんがなにやら困っている様子です。
どうやら、トッピングが増えすぎで計算が大変に
なり、お昼時は発狂しそうになるということです。
デザインパターンを使ってラーメン屋さんを助け
てあげましょう。
注文システムを変更しよう
今までは会計時にトッピング一つ一つの値段を
計算し合計金額を割り出していました。
そこで、トッピングを追加する毎に値段を更新し、
会計時には合計金額がわかっている状態にしま
しょう。
もう計算する必要
はないのね
デコレーターパターン
スーパークラスの値段と自分の値段を足し合わせる
cost()
cost()
cost()
Noodle
Egg
RoastPork
クラスの中身
public class Noodle{
public class Egg extends Noodle{
private Noodle food;
public int cost(){
public Egg(Noodle food){
return 400;
this.food=food;
}
}
}
public int cost(){
return 100 + super.cost();
}
}
ラーメン屋さんも大喜び!
このシステムのお陰でいくらでもトッピングを増
やすことができるようになりました。
アイディアが湯水のようにわい
てくる!
次はケーキをトッピングに追加
だ!