ねねっちと一緒にプログラムを勉強するスレ第2話at TECH
ねねっちと一緒にプログラムを勉強するスレ第2話 - 暇つぶし2ch30:デフォルトの名無しさん
17/03/22 01:13:13.41 gvAZwZV8.net
たぶんこの問題ならこんな感じのモデルをまず書くんじゃないだろうか。
Javaは久しく書いてないんで、コンパイル通らなかったらごめんな
static class FlyFunction
{static public void fly(bool isFlyable)
if(isFlyable){System.out.println ("I can fly.");}
else {System.out.println ("I cannot fly.");}}
interface Flyable {public void fly();}
interface mayLostWing {public void lostWing();}
//個人的にDuckはFlyableをimplすべきではないが、
public class Duck implement Flyable{
private bool _isFlyable = false;
public void fly(){FlyFunction.fly(_isFlyable);}
}
public class FlyableBird implement Flyable ,mayLostWing
{
private bool _isFlyable = true;
public void fly(){FlyFunction.fly(_isFlyable);}}
public void lostwing(){_isFlyable = false;}}
//curewingなどお好きなメソッドを追加しようね。
}
クラスを使うなら内部フィールドを使わないとクラス使ってる意味ないから。
クラスを使いつつ実際には内部フィールドを参照しないなら、
それはクラスを使いつつも内部状態に依存したくないって気持ちを表している。
それはインスタンスクラスじゃなくてstaticなメソッドクラス、つまり関数ってことなんだよ
これを理解していない限り、無駄に間接参照してパフォーマンスを悪化させるコードの出来上がりだろう。
そしてこれならおそらく誰でも理解できるだろう。
この実装でも不満だけどな。
例えば、飛べない鳥がたくさん出てきたときにどう実装するの?
penguin?chicken?そのたびにクラスを書くのかい?
僕なら辞書配列を使うけどクラスはなんの抽象化の手助けもしてくれないね
penguinクラスとか定義するたびに、flyメソッドを実装したり、lostwingメソッドを実装するのを見て草生えるやろそんなの


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch