まさるblog

越後在住子持ちプログラマー奮闘記 - Author:まさる(高野 将、TAKANO Sho)

目次

Blog 利用状況

ニュース

著書

2010/7発売


Web掲載記事

@IT

.NET開発を始めるVB6プログラマーが知るべき9のこと

CodeZine

実例で学ぶASP.NET Webフォーム業務アプリケーション開発のポイント

第1回 3層データバインドを正しく活用しよう(前編)

ブログパーツ


書庫

日記カテゴリ

コミュニティ

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

#問題→オブジェクト指向におけるFizzBuzz問題

ってことでやってみました。

C#
public abstract class Animal
{
    private int soundsCount;
    protected string soundsString;

    public Animal()
    {
        this.soundsCount = 1;
    }

    public void Sound()
    {
        StringBuilder sounds = new StringBuilder();
        for ( int i = 0; i < this.soundsCount; i++ )
        {
            sounds.Append(this.soundsString);
        }
        Console.WriteLine(sounds.ToString());
    }

    public void SetCount(int count)
    {
        this.soundsCount = count;
    }
}

public class Cat : Animal
{
    public Cat()
    {
        this.soundsString = "にゃー";
    }
}

public class Dog : Animal
{
    public Dog()
    {
        this.soundsString = "わん";
    }
}

こんなかんじ?結果も確認済み。

 

※追記

だめだし食らったので再提出。Animalクラスを抽象クラスにしただけですけど。

投稿日時 : 2007年11月8日 21:30

Feedback

# re: re: オブジェクト指向におけるFizzBuzz問題 2007/11/08 21:50 επιστημη

題意を満たしているので満足です。
が、
Animal animal = new Animal();
animal.Sound();
と"できてしまう"のが残念。

# re: re: オブジェクト指向におけるFizzBuzz問題 2007/11/08 22:20 まさる

あ・・・

再提出します<(_ _)>

# re: re: オブジェクト指向におけるFizzBuzz問題 2007/11/08 22:59 επιστημη

へー...抽象メソッドがいっこもなくても抽象クラスになれるんだー。知らんかった。

# re: re: オブジェクト指向におけるFizzBuzz問題 2007/11/08 23:57 ひろえむ

#επιστημηさん

>Animal animal = new Animal();
>animal.Sound();

はできませんよー(^^;
Animalはabstractなのでインスタンスを作れませんよー(^^;

必ず継承する必要がありますって怒られますよー。

ただ、このクラスのままだとVoiceが空のままでもコンパイルエラーにならないので、できればpropertyをabstractにしておくといいかもしれませんねー(^^;

# re: re: オブジェクト指向におけるFizzBuzz問題 2007/11/08 23:59 ひろえむ

#επιστημηさん

>Animal animal = new Animal();
>animal.Sound();

はできませんよー(^^;
Animalはabstractなのでインスタンスを作れませんよー(^^;

必ず継承する必要がありますって怒られますよー。

ただ、このクラスのままだとVoiceが空のままでもコンパイルエラーにならないので、できればpropertyをabstractにしておくといいかもしれませんねー(^^;

# re: re: オブジェクト指向におけるFizzBuzz問題 2007/11/09 0:03 ひろえむ

って、何を言うてるかわかりませんね(^^;

えーっと
まず、コンストラクタでsoundsCountをセットせずとも
private int soundsCount = 1;
で初期化しておいたらコンストラクタが定義しなくても済みますよーってことと

今のままだとsoundsStringが空のままでも機能してしまうので、ここは
protected abstract string SoundsString
{
get;
}
としておけば、子クラスにSoundStringのgetterプロパティを強制するのでsoundStringの入れ忘れがなくてよさそうですよーってことが言いたかっただけです(^^;

# re: re: オブジェクト指向におけるFizzBuzz問題 2007/11/09 0:24 ひろえむ

あ、abstractにしたのは後からだったんですね(^^;;;

それと2回投稿されていました。すみませんm(__)m

# re: re: オブジェクト指向におけるFizzBuzz問題 2007/11/09 9:25 まさる

>へー...抽象メソッドがいっこもなくても抽象クラスになれるんだー。知らんかった。

私もやってみたら出来たって感じでした(^^;

でも、あんまり抽象クラスな意味ないじゃんと。
#インスタンス化禁止くらいですか。

>private int soundsCount = 1;
>protected abstract string SoundsString { get; }
おぉ、確かに。

後でさらに再提出します。

# re: re: オブジェクト指向におけるFizzBuzz問題 2007/11/09 12:30 まさるblog

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

タイトル  
名前  
Url
コメント