むりせず♪なまけず? ~ぷろくらすてぃねいたーの言い訳雑記~

よた ときどき .NET  by 刈歩 菜良 CTP

目次

ニュース

C# VB.NET掲示板
C#, VB.NET 掲示板

わんくま同盟ブログ
わんくま同盟ブログ

Web アプリケーションを簡単編集できる無償ツール WebMatrix ダウンロードはこちら

あわせて読みたい

日記カテゴリ

書庫

Blog 利用状況

オブジェクト指向におけるFizzBuzz問題に参戦

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

我慢できずに作ってしまいました。

あーだこーだいぢめてくださいまし。
_(_^_)_

    abstract class Animal
    {
        protected int times = 1;
         public abstract void Sound();
        public void SetCount(int n) { times = n; }
    }
 
    class Dog : Animal
    {
        public override void Sound()
        {
            for (int i = 0; i < times; i++)
            {
                Console.Write("わん");
            }
            Console.WriteLine();
        }
    }
 
    class Cat : Animal
    {
        public override void Sound()
        {
            for (int i = 0; i < times; i++)
            {
                Console.Write("にゃー");
            }
            Console.WriteLine();
        }
    }

投稿日時 : 2007年11月9日 12:12

Feedback

# re: オブジェクト指向におけるFizzBuzz問題に参戦 2007/11/09 12:42 774RR

for ループが派生側に有るのはなぜゆへ

# re: オブジェクト指向におけるFizzBuzz問題に参戦 2007/11/09 12:44 刈歩 菜良

774RRさん
> for ループが派生側に有るのはなぜゆへ
毎回同じ鳴き方をするとは限らないような気がして...
# う~→わん→わん→わぉ~ん とか。(^^ゞ

いずれにしても、鳴かない人に鳴く処理の一部を持たせるのがいやだったのです。

# re: オブジェクト指向におけるFizzBuzz問題に参戦 2007/11/09 12:48 がる

お初にお目にかかります。がると申します。
わんくまさんとは何かとご縁があって、まぁふらりとたどり着きました(笑

ソース拝見して…なんとなく「似たようなループが二箇所あるなぁ」と思いまして。
ちと書式とか記述が変な部分あるかと思いますが(…多分C#ですよね? ちと不慣れなので orz)、雰囲気がつかめる程度のものを書いてみます。
これだと、追加も楽かなぁと。動物ごとに「固有の鳴き声取得メソッド」だけ変えればいいので。

どでしょ?

abstract class Animal
{
protected int times = 1;
public void SetCount(int n) { times = n; }
public void Sound() {
// 固有の鳴き声を取得
peculiar_cry = this.getPeculiarCry();
for (int i = 0; i < times; i++)
{
Console.Write(peculiar_cry);
}
Console.WriteLine();
}
abstract public function getPeculiarCry();
}

class Dog : Animal
{
public override void getPeculiarCry()
{
return "わん";
}
}

class Cat : Animal
{
public override void getPeculiarCry()
{
return "にゃー";
}
}

# re: オブジェクト指向におけるFizzBuzz問題に参戦 2007/11/09 13:02 とりこびと

>for ループが派生側に有る

私もこう落ち着きましたw

# re: オブジェクト指向におけるFizzBuzz問題に参戦 2007/11/09 13:19 刈歩 菜良

がるさん

初めまして。ご丁寧にありがとうございます。
よろしくお願いします。

> 「似たようなループが二箇所あるなぁ」
そうなんですよねぇ。
これは多分時間差でご覧になれなかったと思うのですが、前のコメントにあるような理由です。

コードありがとうございます。
なるほどですねぇー。
# 戻り値や宣言が一部抜けてますが... (^.^)

この考え方は思いつかなかったっすねぇ。

getPeculiarCryってprivateにするとどうなんでしょうね。
なんだか、publicなのが気持ち悪いっす。(^^ゞ
# publicにする用途があるのであれば話はもちろん別ですが。

びっちゃん
> 私もこう落ち着きましたw
ナカーマ(゚∀゚)人(゚∀゚)ユキーエ

# re: オブジェクト指向におけるFizzBuzz問題に参戦 2007/11/09 13:21 とりこびと

連投すみません。

問題から「似たようなループが二箇所ある」ようになるのは必然ではない気がしています。

今回はにゃんことわんわんがたまたま似たようなループで実装されただけなんじゃないでしょうか。

# re: オブジェクト指向におけるFizzBuzz問題に参戦 2007/11/09 13:22 とりこびと

スレチガ-ウ(゚∀゚)人(゚∀゚)フタ-リ

# re: オブジェクト指向におけるFizzBuzz問題に参戦 2007/11/09 13:43 刈歩 菜良

びっちゃん
> 連投すみません。
連投できてませんからぁ~。
残念っ(死語)

> 今回はにゃんことわんわんがたまたま似たようなループで実装されただけなんじゃないでしょうか。
犬のお父さん並にいいこと言った!

ま、ここは実務だと決めの問題だと思ったりもして... (どっちなんだいっ!)
でも、OO的には派生側に持たせておいた方が融通がきくかと... はい。

> スレチガ-ウ(゚∀゚)人(゚∀゚)フタ-リ
シリーズ化の予感
( ̄ー ̄)ニヤリッ

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

やんちゃ解答上げときました。
for ループがどっち側にも有りません(ふふふ

ナカトミノカ(゚∀゚)人(゚∀゚)マタ-リ

# re: オブジェクト指向におけるFizzBuzz問題に参戦 2007/11/09 21:22 とりこびと

>犬のお父さん並にいいこと言った!

どれっくらいイイコト言ったのかまったく分かりません!w


ジンセイツナ(゚∀゚)人(゚∀゚)ワタ-リ

# re: オブジェクト指向におけるFizzBuzz問題に参戦 2007/11/09 23:20 επιστημη

ぃゃぃゃぃゃ核心を突いてますですよ。鳴き数を含め、どう鳴くかはわんこ/にゃんこ次第なんだから。

コーヒーモカ(゚∀゚)人(゚∀゚)マタ-リ

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

言わんとするところはわかるのですが・・・。

どうも、概念レベルのお話と実装レベルのお話を混在されているようで(^^;;;

おそらく、概念レベルでは言わんとするべきところは理解できるます。

「動物といえども鳴くとは限らない」ということですよね。

それはそれで確かに1つの解釈として理解できます・・・が。

今回の主題としてはコードとして実装することが目的ですので、その場合、正直理想的な回答とは言いがたいでしょう。

概念と実装は必ずしも一致するとは限りません。

自然かどうかはその外側から見た振る舞いが自然かどうかが問題となります。 

今回の場合、その部分においては問題ないと思いますが連続性を満たしておらず、あまりほめられた実装とはいいがたいように思います。

連続性を満たすという意味合いではAnimalクラスにあったほうがそれに近い状態になるように思いますねー(^^;

いわゆるWrite Onceですね(^^)

おまけに今回の主題は鳴くことが前提です。
ここのレベルに動物の本質を持ち込んでもあまり意味のないことだと思います。 すでに「鳴く」という前提で抽象化されているからです。

>でも、OO的には派生側に持たせておいた方が融通がきくかと... はい。

いや、そんなことはないでしょう(^^;
仮にそうだとしても、必要であれば単にoverrideすれば済む話ですよね?(^^;

# re: オブジェクト指向におけるFizzBuzz問題に参戦 2007/11/10 7:43 Gushwell

このお題だけでは、将来、変化するものと、変化しないものの区別は付きませんので、お題にある情報だけを元に組むのがよいかと思います。
public void SetCount(int n) { times = n; }
というインターフェースがAnimalクラスにあるのだから、
派生クラスのfor文がたまたま同じだったと言う解釈は、無理があるのように思います。
なので、僕は、for文もAnimalクラスに持ってくるコードを書きます。

# re: オブジェクト指向におけるFizzBuzz問題に参戦 2007/11/12 10:48 とりこびと

>核心を突いてますですよ。

おお!私の1年に2回くらいある「イイコト」が今回出たわけですねwww


問題から「わんわんわん」が

Console.Write("わん");
Console.Write("わん");
Console.Write("わん");

なのか、

Console.WriteLine("わんわんわん");

なのかが読み取れない(というか、要求されていなかった)のが、逆に面白かったと思います♪

επιστημη さん的には・・・

シテ(゚∀゚)人(゚∀゚)ヤッターリ

かなww

# re: オブジェクト指向におけるFizzBuzz問題に参戦 2007/11/12 11:36 とりこびと

あ、前回

>コーヒーモカ(゚∀゚)人(゚∀゚)マタ-リ

は、敢えて空けておきましたのでw

# re: オブジェクト指向におけるFizzBuzz問題に参戦 2007/11/12 17:15 刈歩 菜良

επιさん
> やんちゃ解答上げときました。
> for ループがどっち側にも有りません(ふふふ
うぎゃ~~~
まいりました。
_(_^_)_

> ナカトミノカ(゚∀゚)人(゚∀゚)マタ-リ
> コーヒーモカ(゚∀゚)人(゚∀゚)マタ-リ
これらも含めてまいりました。
_(_^_)_

とりこびとさん
> >犬のお父さん並にいいこと言った!
> どれっくらいイイコト言ったのかまったく分かりません!w
おまえにわかるはずなどないっ by 犬のお父さん
ぐらいいいことです。

> ジンセイツナ(゚∀゚)人(゚∀゚)ワタ-リ
この一言で犬のお父さんを超えました。

επιさん
> ぃゃぃゃぃゃ核心を突いてますですよ。鳴き数を含め、どう鳴くかはわんこ/にゃんこ次第なんだから。
しかし、ここの表現の仕方が悩みどころですよねぇ。

ひろえむさん
> 今回の場合、その部分においては問題ないと思いますが連続性を満たしておらず、あまりほめられた実装とはいいがたいように思います。
そか、連続性っちゅうのがありましたね。
悩ますぃ~。

> 仮にそうだとしても、必要であれば単にoverrideすれば済む話ですよね?(^^;
ですです。
( ..)

Gushwellさん
> このお題だけでは、将来、変化するものと、変化しないものの区別は付きませんので、お題にある情報だけを元に組むのがよいかと思います。
なるほど!
ちょっと想像力がたくましすぎました。
(^^ゞ

> public void SetCount(int n) { times = n; }
> というインターフェースがAnimalクラスにあるのだから、
> 派生クラスのfor文がたまたま同じだったと言う解釈は、無理があるのように思います。
す、するどい・・・
ごもっともでございます。
_(_^_)_

> なので、僕は、for文もAnimalクラスに持ってくるコードを書きます。
なんか、普通っぽくって何か工夫してみたかったんです。
(^.^;)

とりこびとさん
> επιστημη さん的には・・・
>
> シテ(゚∀゚)人(゚∀゚)ヤッターリ
ッが残ったのが惜しい。
座布団全部持って行きな! by 犬のお父さん

# 2 The corporate servers The Office of 5 2020/01/01 4:50 Typicalcat74

http://www.frenchpolishinglondon.com/2019/11/17/%ef%bb%bfmost-trusted-mature-dating-online-service-no-pay/ 60's plus seniors dating online service in austin https://www.traxysiberica.es/best-online-dating-site-for-over-fifty-blogs.wankuma.com.pdf mature dating online service in the united states

タイトル  
名前  
Url
コメント