タグ

継承に関するbigbroのブックマーク (8)

  • 継承とは?

    copyright 1996 Kubo C++等の継承の罠。設計・実装・能力・開発時間等のバランスを考えよ。 何が言いたいのかはページ末。 NetNews発言を再編集しました。 fj NetNews--> fj.comp.lang.c , fj.comp.lang.c++ 文章の繋がりが変かもしれませんが想像力でお読み下さい。 問題提起 三角形(図形)から描画は派生するのか? いいえ、図形と描画は異なった継承図になります。だから、三角形自身が描画する構造は設計上おかしいです。描画クラスに三角形を送ると三角形を描画するのです。 色々な人のクラス設計を見ると、継承を勘違いしています。何でもかんでも継承してみたり、「どうしたら継承ですっきり行くか」とか、オブジェクト指向と継承を混同している部分が有ると思います。 まず、設計と言うからには、全体の把握が必要です。 何をしたいのか? どの程度、耐久力

    bigbro
    bigbro 2010/08/22
    継承のジレンマからの脱却。基礎的な事なんだけど、それすらわからない人もいる
  • Collection & Copy - JavaScriptにおける古典的継承

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

  • javascript - プロトタイプ的継承 : 404 Blog Not Found

    2006年10月18日09:20 カテゴリLightweight Languages javascript - プロトタイプ的継承 がーん。この感動はY combinatorを見たときに匹敵する。 Prototypal Inheritance function object(o) { function F() {} F.prototype = o; return new F(); } なぜこれがそれほど感動的かというと.... これを使えば、ArrayやObjectといったBuilt-Inからも難なく継承できるから。 継承のやり方としてはPrivate Members in JavaScriptが圧倒的に有名で、日でもbrazilさんによる邦訳、Collection & Copy - JavaScriptにおける古典的継承もよく知られていると思うけど、この三行を目の前にしては霞む。でもp

    javascript - プロトタイプ的継承 : 404 Blog Not Found
  • プログラマのためのJavaScript (号外):こんな継承はどう? - 檜山正幸のキマイラ飼育記 (はてなBlog)

    昨日の「プログラマのためのJavaScript (11):継承についてもう少し」に、いくつかのコメントをいただきました。そのなかで、nanto_viさんに素晴らしいヒントを提供していただいたので紹介し、クラス(もどき)の継承への補足とします。 まずは、nanto_viさんが教えてくれたコードを再掲: var Traits = function () {}; Traits.prototype = SuperClass.prototype; SubClass.prototype = new Traits(); Traitsは一時的なコンストラクタですが、SuperClassのトレイツ(共通性質の定義)をそのまま持ち、余分な(おそらくは弊害を生むであろう)初期化実行コードは持たないものです。(こんなトリックがあったんだ、フーム、ムムム。) この手続きを関数にしてみます。(ちなみに、名前exten

    プログラマのためのJavaScript (号外):こんな継承はどう? - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • Mixinは有害か? - Sooey

    Mixinは有害か? ちょっと前のときどきの雑記帖で紹介されていたMixins considered harmfulシリーズが面白そうだったので1と2を読んでみた。 Mixins considered harmful/1 Mixins considered harmful/2 Mixins considered harmful/3 Mixins considered harmful/4 以下、かんたんなまとめ。 Mixinを使いすぎるとクラス階層が爆発して、1クラスに数百メソッドなんて状況が頻発する IDEのキーワード補完や、自動生成したAPIドキュメントが役立たずになる Mixinはフレームワーク作成者にとっては便利 作成者はクラスの階層・関係が頭に入っているから Mixinはフレームワーク利用者には不便 フレームワークのバグや挙動を調べようと深みに入ると処理を追い切れなくなる 比較的小

    bigbro
    bigbro 2009/12/29
    すごく納得。少なくともインターフェイスのある言語でMix-inを実装するのはナンセンス
  • まつもと直伝 プログラミングのオキテ 第3回(3)

    図7 Mix-inによるStreamクラスの構築例<BR>クラス階層はツリー構造を保ちつつ,コードのコピーも避けている。 継承には2つの意味がある Javaのような静的型のオブジェクト指向言語の変数には,変数を介して呼び出されるメソッドを制限する働きがありました。ただし,制限がかかるのは「どのようなメソッドを持っているか」であって,「どのように実装されているか」ではありません。 今まで一まとめにして継承と呼んできましたが,実は継承には2つの異なる概念が含まれています。一つは,「どのようなメソッドを持っているか」あるいは「どのように振る舞うか」ということに着目した「仕様の継承」です。 もう一つは「どのようなデータ構造を使い,どのようなアルゴリズムで処理するか」ということに着目した「実装の継承」です。 静的型言語では両者の区別が重要になります*4。Javaでもこの2つを明確に区別しており,実装

    まつもと直伝 プログラミングのオキテ 第3回(3)
  • クラスの継承の本質を知る

    前回「クラスを簡単に理解する」まで、プリミティブ型とクラス型について説明してきました。コンピュータの中には結局のところCPUとメモリしかありません。「変数は箱だ」といった例え話よりも、変数がどのようにメモリを使うのかで考えた方が意外に分かりやすいものです。 さて、今回はクラスの特徴的機能である「継承」について説明します。継承はJavaをはじめとするオブジェクト指向言語の代表的概念ですが、初学者には最初の壁となって立ちはだかります。まず、クラスについておさらいしましょう。 クラスには、メンバ変数としてプリミティブ型やほかのクラス型変数を要素として格納できる。 クラスのインスタンスを生成すると、メンバ変数を格納するのに必要なサイズのメモリ領域が確保される。

    クラスの継承の本質を知る
    bigbro
    bigbro 2009/06/30
    クラスの継承がどのようにメモリを使うのか
  • 継承とコンポジット - 都元ダイスケ IT-PRESS

    id:happy_ryoに「わかんねーんだよ、説明してみろゴルァ」されたので、書いてみる。 前書き*1 とりあえず、日のエントリのキモを最初に。「オブジェクト指向は、隠す技術である」(俺談w)ということを意識して読んで見てください。隠すとは何か? 公開しすぎない事。分かりやすく言えば、publicをprivateに変える事。これが「隠す」。 んじゃあ、隠すと何が良いのか。あるクラスから、見えるもの(=操作できる可能性の範囲(scope))が狭ければ狭いほど出来る事のバリエーションが減るから、プログラムは単純になる。つまり、隠すと複雑性(complexity)が下がる*2。 要件を満たした上で、いかに型(class, interface, etc.)やメンバ(field, method)の可視性を落とすか。可能な限り可視性を下げ、プログラムを単純化し、メンテナンス性を上げるにはどうしたらい

    継承とコンポジット - 都元ダイスケ IT-PRESS
  • 1