目次

ニュース

日記カテゴリ

書庫

ネタ元:オブジェクト指向におけるFizzBuzz問題

# チラ裏と同一です。ごめんなさいEclipseのJava2Htmlを使ってみたかったテストです。スミマセン。

ってことでSoundインタフェースを別にしてみました。鳴かない動物はない、とのことでAnimalクラスにSoundableインタフェースをくっつけちゃいました。鳴かない動物をわける場合。

abstract class Animal

を親にもち、

abstract class SoundableAnimal extends Animal implements Soundable

っていうやつと

abstract class Disoundable Animal extends Animal

っていうのに分かれることになりますね。いろいろ問題点多いけれど、ここはひとつ多めにみてくださいまし。

 


import java.io.*;
import java.lang.*;


/* 鳴けるインタフェース */
interface Soundable {
    public abstract void Sound();
    public abstract void SetCount(int n);
}

/* 動物クラス */
abstract class Animal implements Soundable {
    int sndCount ;
    String crystring;
    
    public Animal()
    {
        sndCount = 1;
    }
    public void SetCount(int n)
    {
        sndCount = n;
    }
    public void Sound()
    {
        for (int i = sndCount ; i > ; --i )
        {
            System.out.print(crystring);
        }
        System.out.println();
    }
}

class Dog extends Animal {
    public Dog()
    {
        crystring = "わん";
    }
}

class Cat extends Animal {
    public Cat()
    {
        crystring = "にゃー";
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal;
        animal = new Dog();
        animal.Sound();
        animal.SetCount(3);
        animal.Sound();
        animal = new Cat();
        animal.Sound();        
    }
}
 
投稿日時 : 2007年11月9日 11:26
Feedback
  • # re: フツーにやってみたAnimal問題
    凪瀬
    Posted @ 2007/11/09 16:36
    Java2Htmlは導入が簡単なのだけど、生成コードがイマイチ気に食わないなー。

    さて本題。
    Animal にgetCrystring()という抽象メソッドを持たせて、
    Dog およびCat でオーバーライドするというのが綺麗かなと。

    Animal が abstract classなのにabstract メソッドが存在しないってのはキショクワルイ。

    # あんまり関係ないけどエンクロージング型innerクラスなのも気持ち悪いなぁ。
  • # re: フツーにやってみたAnimal問題
    nagase
    Posted @ 2007/11/09 16:54
    なるほどねぇ。
    new Animal();
    とやれないようにするため「だけ」にこのようにしてみたのです。ということで、近々はてなダイヤリーのほうでもう一度やってみます。

    # あっちはhtml自動生成だから非常に楽なのよ
タイトル  
名前  
Url
コメント   

Blog 利用状況

コミュニティ

プロファイル