タグ

OOPに関するamagitakayosiのブックマーク (9)

  • Entity Component Systemについてまとめてみる - mikan_daisuki’s blog

    自分は、Unityが初めてのクライアントアプリだったので、 「こういう風に作るのか〜」 程度の感想しかなかったですが、どうやらゲーム開発に向いたアーキテクチャーで、 Entity Component System(以下、ECS)と呼ぶらしいです。 といっても、UnityはECS風であり、ECSそのものではない様子。 エンティティ・コンポーネント・システム - Wikipedia とはいえ、初心者にとっては、厳密さより根っこの理解が大事に思えるので、 初学者に向けてまとめてみます。 プロダクトが複雑になればなるほど、継承よりも委譲に頼っていく方が筋が良いという話 オブジェクト指向を意識して開発を進めていくと、継承を使う機会がちょいちょい出てきます。 でも、継承を使って開発していくと、以下のようなときにハマります。 qiita.com ※ Effective JavaJava知らなくても勉強

    Entity Component Systemについてまとめてみる - mikan_daisuki’s blog
  • JavaやC#の常識が通用しないRubyのprivateメソッド - give IT a try

    衝撃を受けたできごと 最近Rubyを勉強しています。 JavaやC#でオブジェクト指向プログラミングの基はマスターしてるから、Rubyもそのあたりは楽勝〜!・・・と思っていたら、JavaやC#の常識が全く通用しない振る舞いに遭遇してかなり衝撃を受けました。それは、 privateメソッドはサブクラスからも呼び出せる ・・・ということです!!がーん。 たとえば、JavaやC#だと自分のクラス内でprivateメソッドが使われていない場合、不要なメソッドとして削除できます。(リフレクションを使って呼び出される可能性はここでは無視ね) しかし、Rubyでは誰かがサブクラスを作って呼び出している可能性があるので、privateメソッドを削除する場合は注意が必要です。メソッド名を変更する場合も同様ですね。 また、知らずに親クラスと同名のprivateメソッドを定義すると、予期せず親クラスの実装をオ

  • なんで多重継承はそんなに嫌われるのか? ちょっくら分析してみるか - 檜山正幸のキマイラ飼育記 (はてなBlog)

    多重継承を嫌う人は多いですよね。「複雑だからダメだ」ってことらしい。でも、「複雑=ダメ」はちょっと乱暴。必然性/必要性がある複雑さなら、それは受け入れざるをえないのですから。それに、どの程度の複雑さなのか、その複雑さはどこから来るのかを知らないと「ダメ」かどうかの判断はできないと思います。 という次第で、多重継承の複雑さを調べてみます。ダメかどうかの判断は僕はしません。圏論の道具を使うのだけど、事前の知識は一切不要です(最後の節を除いて)。最後にまとめて圏論的な解釈をしますが、ここは省略可能。 内容: クラスとその例 多重継承は集約と単純継承の組み合わせ 嫌われる理由 1:名前のバッティング 嫌われる理由 2:ダイアモンド継承 ダイアモンド継承の対処 とりあえずのまとめ 圏論からのアプローチと整理 クラスとその例 多重継承の話をするので、もちろんクラス概念は仮定します。でも、複雑さの話を複

    なんで多重継承はそんなに嫌われるのか? ちょっくら分析してみるか - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • Tiny CLOS 入門 - Tiny CLOS Tutorial

    紹介 - Introduction どうやって Tiny CLOS を使うか - How to Use Tiny CLOS CLOS vs. 他のOOPのアプローチ - CLOS vs. other approaches to OOP CLOS のクラスとオブジェクト - Classes and Objects in CLOSインスタンスの生成 - Creating instances クラスの作成 - Creating classesインスタンス変数 - Instance Variables 総称関数とメソッド - Generic functions and methods総称関数の作成 - Creating generic functions メソッドの作成と追加 - Creating and attaching methods 総称の初期化 - The initialize gene

  • JavaScriptでstatic/private/publicなメンバ/メソッドをもったクラスのつくりかた | ALUMICAN.NET

    JavaScriptを今更勉強している。 手始めに、任意のアカウントからVimeoとYouTubeのフィードを引っ張ってきて表示するだけの プチソーシャルストーキングサイトをつくってみた。 » You Like Good Things (β) が、JavaScriptがUNKO柔軟すぎる言語であるため、 結局自分のコーディングスタイルが最後まで定まらず、 上記サイトのソースコードは無茶苦茶になってしまった。 僕はこれまで「JavaScript = ステータスバーに無意味に時計を表示するもの(笑)」だと思って生きてきたが、 これからはちゃんと設計してコードを書けないとだめだと思った。 なので、とりあえずクラスの宣言から始めてみることにした。 クロージャを使ったりプロトタイプを拡張したり色々方法はあるものの、 JavaScriptに元々クラスという概念が存在しないせいか、どれも一長一短な感じは

    JavaScriptでstatic/private/publicなメンバ/メソッドをもったクラスのつくりかた | ALUMICAN.NET
  • 和訳 : なぜPythonのメソッドに明示的にselfと書かねばならないのか

    みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 免責事項 プライバシーポリシー Pythonの生みの親Guidoパパのブログエントリを翻訳してみました。「Why explicit self has to stay - なぜPythonのメソッド引数に明示的にselfと書くのか」。Pythonのメソッド引数に書く「self」はしばしば,他言語からのPython移民を中心に「ウザイ」「キモイ」「消えてなくなれ」と攻撃の対象となることが多いのです。GuidoパパはPythonが生まれて10年,もう何度も似たようなことを聞かされ,そのたびに明快な反論を行ってきました。言語の設計者には,技術的な素養はもちろんのこと,情熱と根気,そして我慢強さが必要なんだなあとつくづく思い知

  • Collection & Copy - JavaScriptにおける古典的継承

    翻訳 原文:Classical Inheritance in JavaScript著者:Douglas Crockford ※原文のコード内に誤りがあり、このまま記述しても動作しません。著者のコメント及び補足情報は翻訳メモを参照下さい。 君は自分が利口で階級にも属さず 自由だなんて思い込んでる―John LennonJavaScriptは、クラスという概念に囚われていない言語です。JavaScriptでは、古典的な継承の代わりにプロタイプ的な継承を使用します。これはC++Javaのような旧来のオブジェクト指向言語に長けたプログラマを当惑させるかもしれません。JavaScriptのプロトタイプ的継承が、古典的継承に比べていかに表現力が優れているかを、これから見ていきましょう。 JavaJavaScript強い型付け弱い型付け静的動的古典的プロトタイプ的クラス関数コンストラクタ関数メソッド関

  • 40分濃縮 PHP classの教室

    PHPカンファレンス関西2012で使用したスライドです。完全な内容は下北沢で開催した際のスライドと動画を御覧ください。Read less

    40分濃縮 PHP classの教室
  • やっと理解できた!JSオブジェクト指向プログラミング再入門 | ゆっくりと…

    既に多くの方が JavaScript のオブジェクト指向的側面についての解説を記事にされていますが、読み手側から見ると、例えばプログラミング言語への習熟度やオブジェクト指向自体に対する理解度がマチマチなわけで、私自身、「おお、なるほど!」 っていう、頭の中のスイッチがパチンッ!と入るような境地には達していませんでした。 かつて私も オブジェクト指向なJavaScriptプログラミングのススメ なんていう翻訳記事を書いてはいるのですが、正直なところ prototype.constructor の存在は知りませんでしたし、Function.call や Function.apply をどう使えばよいのかなどをちゃんと理解できてはいませんでした。 そんな中、2011年12月に書かれた Doc Center | Mozilla Developer Network の記事 オブジェクト指向 Java

    amagitakayosi
    amagitakayosi 2012/02/07
    カプセル化のとこ、なんかおかしくね?
  • 1