タグ

programmingとobject_orientedに関するAmaiSaetaのブックマーク (6)

  • Getter/Setterを避けて役に立つドメインオブジェクトを作る - かとじゅんの技術日誌

    Clean Architecture 達人に学ぶソフトウェアの構造と設計を読んでます。モデリングに関しては成分薄めですが、よいだと思います。はい。 Clean Architecture 達人に学ぶソフトウェアの構造と設計 作者: Robert C.Martin,角征典,高木正弘出版社/メーカー: KADOKAWA発売日: 2018/07/27メディア: 単行この商品を含むブログを見る 書の大筋から少し逸れるが、「5章 オブジェクト指向プログラミング」の「カプセル化」が面白かったので、これを切り口にモデリングについて考えてみる。 OO言語のカプセル化はすでに弱体化している オブジェクト指向の三大要素の一つである、カプセル化について、以下のようなことが書いてあります。 「カプセル化」がOOの定義の一部となっているのは、OO言語がデータと関数のカプセル化を簡単かつ効果的なものにしているから

    Getter/Setterを避けて役に立つドメインオブジェクトを作る - かとじゅんの技術日誌
    AmaiSaeta
    AmaiSaeta 2018/08/16
    そのJava/C++に対応するコードとしてそのCはおかしい。getX、getY相当の物が無いのだから。Pimplじゃないのもアンフェア | チャットルームの例で、参加者の一覧を表示したいって時は?
  • オブジェクト指向で料理を例える場合,chicken.cut()かchef.cut()か

    実用的で無い内容なのでここで聞いて良いのか悩みましたが,一応クラスの設計の参考になるだろうと思って質問しました。 自分の普段使いがPythonなので,説明用のコードはPython風ですが,どの言語にも共通する問題だと思います。 先ほど友人と,「鶏肉を5つに切る」にはどうすれば良いかという例えばなしをしていました。 これを実装する場合, chicken.cut(5) # chickenは (Foodクラスを継承した) Meatクラスのインスタンス chef.cut("chicken", 5) # chefはChefクラスのインスタンス。あらかじめset_foodなどで{"chicken": chicken}を内部に保持した状態にしておく の2通りが考えられるのではないかと思います。 鶏肉の状態が変化するという意味では,「chickenが5つに分割された状態になる」前者の方が自然であるように思

    オブジェクト指向で料理を例える場合,chicken.cut()かchef.cut()か
  • 関数にしか見えないものが「メソッド」と新たな名前で呼ばれる理由(1) - Programmer’s Log

    前記事で「メソッドが持っている数学性と文学性という二重性」に気がつくきっかけが別にあった、と書きました。ここらへんはだいぶ後に書こうと思っていたことなのですが、流れ上先に書いちゃいます。 そのきっかけとは、多態性(ポリモーフィズム)の意味を理解したことで、この記事のタイトルにあるように「どうみても関数にしか見えないものが「メソッド」と新たな名前で呼ばれる理由」、呼ばなければならない理由に気がついた、というきっかけです。 「メソッドはどうみても関数にしか見えない」 この素朴な感想は、オブジェクト指向を学び始めた頃に誰もが思ったことだと思います。ぼくも、オブジェクト指向を学びはじめた時に真っ先に思いました。 「どうみても関数にしか見えないのに、なぜメソッドなどと言い換えているのか?」 という素朴な疑問。 その当時は無知だったので「オブジェクト指向信者とやらは、ただの関数を"メソッド"なぞという

    関数にしか見えないものが「メソッド」と新たな名前で呼ばれる理由(1) - Programmer’s Log
    AmaiSaeta
    AmaiSaeta 2013/11/18
    C++では(少なくとも自分が学んだ本では)「メンバ関数」って呼んでいて、Java辺りから「メソッド」という呼び方が広まって仰け反った事がある。成る程ここに書かれている説は納得出来る。
  • 小人閑居して: 「ぐへへお姉ちゃんパンツ何色」から始めるクラス解説

    2011年12月6日火曜日 「ぐへへお姉ちゃんパンツ何色」から始めるクラス解説 「ぐへへお姉ちゃんパンツ何色」はこれ以上ないほどオブジェクト指向であり、しかも理想的な実装をしていることに気づきました。これを用いてオブジェクト指向を説明してみようと思います。 ある人が「ぐへへお姉ちゃんパンツ何色」と質問するのは、お姉ちゃんオブジェクトの保持するpants_color変数を取得しようとする手続きと見ることが出来ます。つまり oneechan.pants_color を取得しようとしているわけです。 ではどうすればいいのでしょうか? 考えてみましょう。直接パンツを見ればpants_colorを取得することができますね。 クラスを使わないとすればこんな書き方が考えられます。 struct oneechan{      int pants_color; }; 構造体でひな形を宣言します。

  • private継承はどう使う?

    > 基底クラスの段階でのprivateと継承してからの段階でprivate > 扱いになるのとでは意味が違うのでしょうか? 継承時のアクセス制限は、いうなれば「継承する側の都合」なので、 「継承する自分自身を"呼ぶクラス"や自分自身より"下位の派生クラス"」に影響します。 privateで継承したクラス自身はこの影響を受けずに、 自分自身は基底クラスの方の影響だけを受けるということです。 定義も派生する側に書きますよね。 同じ基底クラスからでも継承するクラス毎に別設定できるということです。 # なので、他のクラスの一部実装だけを流用するためにprivateで実装継承なんてこともありえるのです。 # publicで継承すると余計なインターフェイスまで取り込んじゃいますが、 # privateなら内部で利用するだけですから余分なものがあっても自分が使うだけで、外には漏らしません。 # (pri

    private継承はどう使う?
  • C 言語によるオブジェクト記述法 COOL

    C 言語によるオブジェクト記述法 COOL ver.2 C-language's Object Oriented Language ver.2 [検索] 目次 0. はじめに 1. クラスの記述, 属性の記述 2. 操作の記述 3. クラス属性の記述、定数の記述 4. 初期化操作と後始末操作の記述 4-1.処理効率優先インターフェイス 4-2.再コンパイル不要インターフェイス 4-3.動的バインディング・インターフェイス 5. 状態取得操作と状態設定操作とイベントハンドラの記述 6. 集約の記述、継承の記述 6-1.集約の記述 6-2.継承の記述 6-3.多重継承の記述 6-4.重複継承の記述 6-5.動的継承の記述 7. 多態性(多相性)、インターフェイス継承の記述 7-1.多態性の記述 7-2.多態性を持った生成の記述 7-3.多重継承の多態性の記述 7-4.重複継承の多態性の記述 7

  • 1