へにっくすの掲示板日記

基底クラスの存在理由?

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

基底クラスの存在理由?

投稿記事 by へにっくす » 8年前

以下の投稿。

http://dixq.net/forum/viewtopic.php?f=3&t=18945

存在理由が書かれているのに、
Taskにまとめる理由が分からないとは。

やれやれです。

アバター
usao
記事: 1889
登録日時: 12年前

Re: 基底クラスの存在理由?

投稿記事 by usao » 8年前

いや,私には,"存在理由"はそこには書いていないように見えましたよ.

「同じメソッドを持っているね → Taskという基底を作ろう」

とだけ書かれているけども,その理由の説明は無くないですか?

BaseSceneについては具体的に用いられているのに対して
Taskは「単に継承してあるだけ」なので,
「このTaskってのは不要なのでは?」という話は理解できます.

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

Re: 基底クラスの存在理由?

投稿記事 by へにっくす » 8年前

> usaoさん
んー
使う側からすれば、なぜわざわざ宣言する必要あるの?
となるのでしょうか。

個人的には使い道がなくとも、ちゃんと意図が分かるような仕組みを予め構築しておく、
というのがクセになってるものでして。
考え方の違いですかねえ。

YuO
記事: 947
登録日時: 14年前

Re: 基底クラスの存在理由?

投稿記事 by YuO » 8年前

新・ゲームプログラミングの館 sp.6 メニュー画面の作り方 (C++編) さんが書きました:SceneMgr、Game、Menu、Configはすべて「Initialize、Finalize、Update、Draw」という共通のメソッドを持っていました。
そこで、「Task」というすべてのクラスの元となる基底クラスを作ります。
さらに、Game,Menu,Configは同じ操作が重複していました。
そこで、「BaseScene」というシーンの抽象クラスを作ります。
この説明を読むと,外形的に同じメンバ関数を持っているからTaskという基底クラスを作ったと読めてしまうのですが。
この方法による基底クラスの作成というのは,C++系のOOにおいて,大抵の場合は悪手だと思うのですが。

でもって,Taskクラスの存在意義に関して私は疑義派ですね。
BaseScene is Taskかもしれないけれども,SceneMgr is Taskか,その2つの「Task」の役割は同じか,と考えると違う気がします。

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

Re: 基底クラスの存在理由?

投稿記事 by へにっくす » 8年前

> YuOさん
>> 大抵の場合悪手
振る舞いをもとに考えていない(目的重視じゃなくて手段重視)から、ということでよいでしょうか。
プログラミングの館に関しては初心者向けということもあるから、
そういう説明なのかなーと軽く流してましたが。

>> その2つの「Task」の役割は同じか,と考えると違う気がします。
SceneMgr has Taskの方がしっくりくるという感じ・・・?

そういう説明されると確かにTaskの存在理由が薄い(BaseSceneがあるから)ですね。
管理人さんごめんなさい 笑
最後に編集したユーザー へにっくす on 2017年3月16日(木) 05:28 [ 編集 6 回目 ]