ほのぼの開発メモ

AILight Blogs
オブジェクト指向について、まだ理解が薄いことに気づきました。(汗)
ある程度は理解していると思っているのですが・・・

↓こんな感じでよいのでしょうか?

【オブジェクト指向】
  • 全てをオブジェクトとして考える
  • オブジェクトに役割を与える
  • オブジェクトの役割とは、「何をしてくれる人?」
  • オブジェクトの役割をまっとうする、「何ができる?」が明確
  • オブジェクトの役割を意味するフィールドをもっている
  • オブジェクトとオブジェクトのつながりがある
  • オブジェクトを継承することにより、役割の拡張が可能
  • オブジェクト指向で設計することで、カプセル化ができる(何処に何を書くべきかの明確化)


上手く説明ができないということは、まだ全然理解していないことですかね。(汗)
まだUML図もまともに理解していないので、こちらも勉強しようと思います。(恥)

ああ、基礎から勉強したい・・・
どこかで勉強会でも開こうかなぁ・・・

投稿日時 : 2004年3月22日 11:53
コメント
  • # re: アスペクト指向の前に
    菊池
    Posted @ 2004/03/22 13:01
    >オブジェクトの役割を意味するフィールドをもっている

     役割を全うするために必要なフィールドを持つ
     役割は意味していない。


    >オブジェクトを継承することにより、役割の拡張が可能

     役割は変わらないかな、よりうまく役割をこなす。
     この違いは深いかな?
  • # re: アスペクト指向の前に
    みゃみゅ玉子
    Posted @ 2004/03/22 13:16
    いつもありがとうございます。

    >役割を全うするために必要なフィールドを持つ
    >役割は意味していない。

    あ!そうか!!

    例えば「人物」クラスの「年齢」フィールドは「人物」の役割を意味しているわけではないですね。
    「人物」を特定するのに必要な「年齢」フィールドですね。
    なんで意味するなんて書いちゃったんだろう・・・

    >役割は変わらないかな、よりうまく役割をこなす。
    >この違いは深いかな?

    例えば(この例えでいいのかな?)、

    ・「動物」クラスがある。
    ・「動物」は鳴く。
    ・「動物」を継承した「猫」クラスがある。
    ・「猫」は目が光る。

    このとき、「動物」という役割から「動物(猫)」という役割に
    なった・・・
    でいいんですよね?
    ああ、でも「動物」という役割自体は変わらない・・・
    でも、「動物」に「猫」独自の機能を拡張したのが「猫」クラス・・・

    こういうのは拡張じゃないんでしょうか・・・??
    でも、「よりうまく役割をこなす」もしっくりくる・・・
  • # あ!そうか!!
    みゃみゅ玉子
    Posted @ 2004/03/22 13:48

    拡張じゃないですね。
    「動物」自体の役割は変わりませんね。
    書いてから気づいてしまった・・・

    「動物」としての役割にも「猫」としての役割にもなるんですね。
    なるほど。だから「よりうまく役割をこなす」。。。
  • # re: アスペクト指向の前に
    菊池
    Posted @ 2004/03/22 19:20
    >「動物」としての役割にも「猫」としての役割にもなるんですね。

     うーむ、難しい所、

    ・動物としての役割は変えられない

     呼ぶ側は猫と意識せずに動物として扱えなければならない。

    ・猫としての機能を公開する事はできる

     ただし呼ぶ側が機能を呼ぶかは別問題である

    ・動物としての機能に付加価値がつくかもしれない

     食べる事が、ねずみを駆除するという付加価値を生む事ができる。
     ただし、付加価値を期待してない所に影響が無いようにしないと、動物として扱えなくなってしまう。

     継承による拡張ってのはこのように制約が多いので、できるだけしない方が良いのです。
タイトル  
名前  
Url
コメント