タグ

オブジェクト指向に関するdaisuke-mのブックマーク (35)

  • オブジェクト指向とは何ですか?

    回答 (8件中の1件目) 英語では「object-oriented」で「OO」と略され、1960~1980年代のプログラミング手法(OOP)から始まり、その応用としてソフトウエアの設計・分析の手法(OOD/OOA)、近年はユーザーインターフェース・エクスペリエンスのデザイン(OOUI/OOUX)、オブジェクト指向存在論(OOO)なる哲学分野にまで、広く使われる用語です。ここではOOPについて説明を試みます。 オブジェクト指向の「オブジェクト」は、1967年に発表されたSimula 67 [1] というプログラミング言語に組み込まれた当時としては新しい同名の言語機能(あるいはそれに準ずる...

    オブジェクト指向とは何ですか?
  • Javaのクラスの半分以上は、引数なしのコンストラクタを持たない - 地平線に行く

    よく使うJavaのクラスは、たいてい引数なしコンストラクタを持っています。 List<String> list = new ArrayList<String>(); Calendar calendar = new Calendar(); でも、引数なしコンストラクタを持たないクラス*1も結構あります。 InputStream inputStream = new FileInputStream(file); TrayIcon tryaIcon = new TrayIcon(image); 全体的に見てみると、引数なしのコンストラクタを持つクラスと持たないクラス、どちらが多いんでしょうか。 調査結果 以下の条件で、調べてみました。 java, javaxパッケージ public クラス 廃止されたクラス(Deprecated)、抽象(Abstract)クラス、アノテーション、例外(Throwa

    Javaのクラスの半分以上は、引数なしのコンストラクタを持たない - 地平線に行く
    daisuke-m
    daisuke-m 2012/05/09
    面白い調査だなー。
  • 突破すると一気に学習が加速する「オブジェクト指向学習の壁」を突破する鍵となる知識を、中学生でも分かるように図解してみた(初学者向け) - @fromdusktildawnの本館

    This webpage was generated by the domain owner using Sedo Domain Parking. Disclaimer: Sedo maintains no relationship with third party advertisers. Reference to any specific service or trade mark is not controlled by Sedo nor does it constitute or imply its association, endorsement or recommendation.

  • Javaのクラスとオブジェクトについて再度解説を試みる - 達人プログラマーを目指して

    オブジェクト指向プログラミングの考え方については、今までこのブログでも何度か取り上げてきました。 [オブジェクト指向] - 達人プログラマーを目指して オブジェクト指向プログラミングはプログラミング技法のすべてではないとはいえ、Javaのようなオブジェクト指向言語で格的なプログラムを作るには理解を避けて通ることができませんし、また、関数型言語など他のパラダイムの言語を利用するにしても、オブジェクト指向の考え方をまったく理解しないまま使いこなすということは困難でしょう。オブジェクト指向の考え方はデータ構造やアルゴリズムといったことと同様に、プロフェッショナルなプログラマーが理解しておくべき基的な素養といってもよいと思います。実際、海外では募集要項でオブジェクト指向の理解を前提とすると書かれていることが普通ですし、プログラマーの面接試験で、アルゴリズムと並んでオブジェクト指向プログラミング

    Javaのクラスとオブジェクトについて再度解説を試みる - 達人プログラマーを目指して
  • 関数にしか見えないものが「メソッド」と新たな名前で呼ばれる理由(1) - Programmer’s Log

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

    関数にしか見えないものが「メソッド」と新たな名前で呼ばれる理由(1) - Programmer’s Log
  • オブジェクト指向言語が与えた開発手法への変化 - Programmer’s Log

    前記事で「しかしオブジェクト指向言語の流行によって、なんでこんな上流から下流に至るまで全部に影響が出てきたのだろう?」というわざとらしい問いをしました。 この問いに対する答えは、いつも通りの僕のトンデモ理論で恐縮ですが プログラム言語で文が書けるようになったことで、数学的完全世界だったプログラミング世界に文学という答えが一つとは限らない不完全要素が混じるようになったから だと思っています。「はぁ? なにが文学なの?」と思うかもしれません。たしかに subject.verb() という表記方法になっただけでは「文学になった」とはいえないと思います。しかし大抵のオブジェクト指向言語の場合、この表記法と同時に「抽象化」という概念を扱います。 この抽象化という概念がやっかいで「どう抽象化するのか?」「どの位抽象化するのか?」という答えのない問いを常に発し続けます。この問いには、質的に答えがな

    オブジェクト指向言語が与えた開発手法への変化 - Programmer’s Log
    daisuke-m
    daisuke-m 2011/11/04
    面白い考察。
  • staticおじさんに再利用の有効性をわかってもらうには?

    Ryo Asai @ryoasai74 staticおじさんにも理解できるように、「なぜ、再利用が有効か」を説明する資料を作ってほしいと頼まれました。確かに自明のことのようで、今までじっくり考えたことがなかったのですが、なかなかうまく説明するのは難しいですね。 2011-07-01 21:16:39 Ryo Asai @ryoasai74 ちなみに、僕の定義でのstaticおじさんは、情シスやSIerでそれなりに偉くて技術上の判断をする権限がある、ポリモーフィズムを理解していない、の2点を満たす人のこととしています。特定の人物を指すわけではありません。 2011-07-01 21:18:40

    staticおじさんに再利用の有効性をわかってもらうには?
  • 抽象化と再利用 - カレーなる辛口Javaな加齢日記

    富士通の地銀システム開発に遅れ、新聞では分からない深層」http://biz-inno.nikkeibp.co.jp/conduct/article20030624.shtml こちらでは「汎用的なシステムを開発しようとした」と一言で書かれているが,実はこれが極めて難しい.PROBANKにおいてどうだったかは知らないが,オブジェクト指向は拡張性/再利用性を高めることが可能な技術ではあるし,こういう場合には使うことを検討すべき技術の一つだ.しかし決して簡単なものではないし,誰にでも実現できるというわけでもない.(似非)オブジェクト指向の入門書には「その鍵は抽象化にある.」「抽象化することで再利用性に優れた汎用のプログラムになる.」のように記述されてたりする.しかしこの「抽象化」というのは得てして極めて胡散臭い単語なのである*1. 銀行システムで汎用にするのが難しいのは,おそらくは各行ごとに

    抽象化と再利用 - カレーなる辛口Javaな加齢日記
  • Object Oriented を考える オブジェクト指向→目的志向 | システム設計日記

    ソフトウェアの設計・開発で、OO:Object Oriented は、根的な考え方の変化(パラダイムシフト)だと思う。 ソフトウェア開発の世界では、"Object Oriented" は、誰もが聞いたことがある言葉だと思うが、意味や使い方が、人によって、状況によって、ばらばらな、かなり不可思議な言葉でもある。 OOP:オブジェクト指向プログラミング オブジェクト指向言語を使ったプログラミングの総称? もし、Java , C#, PHP5 などをオブジェクト指向言語と呼べるなら、世の中には、オブジェクト指向プログラマがたくさんいるわけだ。 実感とはだいぶ違う。 分析や設計の考え方が オブジェクト指向じゃないのに、言語だけ、オブジェクト指向(風?)でもそれは、OOPとは言えないですよね。 OOAD:オブジェクト指向分析設計 UML でクラス図とか描くこと? オブジェクト指向言語の話といっしょ

  • デメテルの法則 - Wikipedia

    デメテルの法則 (Law of Demeter, LoD) または最小知識の原則 (Principle of Least Knowledge) とは、ソフトウェアの設計、特にオブジェクト指向プログラムの設計におけるガイドラインである。 このガイドラインは1987年の末にかけてノースイースタン大学で作成された。簡潔に言うと「直接の友達とだけ話すこと」と要約できる。基的な考え方は、任意のオブジェクトが自分以外(サブコンポーネント含む)の構造やプロパティに対して持っている仮定を最小限にすべきであるという点にある。 「デメテルの法則」という名前は、この法則がアダプティブプログラミングとアスペクト指向プログラミングに関する研究であるデメテルプロジェクトの成果であることに由来する。プロジェクト名は農業の女神であるデーメーテールにあやかっている。 オブジェクト指向における適用[編集] オブジェクト指向

    daisuke-m
    daisuke-m 2011/04/07
    最近、この法則の可能性を考えている。盲目的に従うのはムリがあるが、従うべきか破るべきかをどのように判断すれば良いか、興味深い。これを整理できればDDDによる「構え」も少し緩められるか…?
  • システムエンジニア日記 - 新説オブジェクト思考

    トップページ 2011年1月11日 新説オブジェクト思考 いろいろなブログでオブジェクト指向技術について解説しているが、なかなかわかりいやすい説明って難しいみたいですね。犬やのたとえが悪いといいながら、ピンとこない用語が羅列していて、やっぱりわかりにくい解説が多いです。私 はSEですからソフトウェアの専門家とは言えませんが、私なりに理解しているオブジェクト指向について解説してみましょう。 [直球勝負のオブジェクト指向] もう何かの例えとか、哲学的な前置きなんてしません。 ● クラスは単にプログラム全体のサブプログラムと考えればよい ● クラスはメンバー変数とメンバー関数(メソッド)により構成される。メンバー変数はクラス内に限定されたスコープでのグローバル変数である ● メンバー変数やメンバー関数をパブリック宣言することにより、他のクラスからメンバー変数に値の受け渡しができたり、メンバー関

    daisuke-m
    daisuke-m 2011/03/31
    話にならない人かと思っていたが、そうでもないのかも。トレードオフポイントが人と違っているだけか? 関数型風の思考もほのかに垣間見える気がしたりしなかったり。
  • Press Enter■

    Copyright(c) 2000-2009 ITmedia Inc. 著作権はアイティメディア株式会社またはその記事の筆者に属します。(著作権について) 当サイトに掲載されている記事や画像などの無断転載を禁止します。 「@IT」「@IT自分戦略研究所」「@IT情報マネジメント」「JOB@IT」「@ITハイブックス」「ITmedia」は、アイティメディア株式会社の登録商標です。 当サイトに関するお問い合わせは「@ITへのお問い合わせ」をご覧ください。

    daisuke-m
    daisuke-m 2011/03/31
    1つだけ読むなら3話。俺は「抽象化せず、クラスを作らず、staticばかり」でプログラムを書く能力がない。能力不足なのでプロジェクトは成功させられないw
  • Rees Re: OO

    著者: Jonathan Rees 原文: http://www.paulgraham.com/reesoo.html語訳:Shiro Kawai (shiro @ acm.org) これを翻訳したのは2004年7月頃だったのだが、 このメッセージについてRees氏に訳文公開の許可を求めたところ、 「あれは急いで書いたemailなので、きちんとした論になっていない。 できれば書き直したいと思っている。ただいつ出来るかわからないので、 私からのメイルがしばらく無かったら公開してもらって構わない」 との返事をもらった。それからもう半年経つので、公開することにした。 ただ、読む場合は著者人が上記のように思っていることを留意して頂きたい。 また、原文が書かれたのは2002年であることにも注意。 いくつかの事実は古くなっているかもしれない。 2005/01/23 翻訳公開 「なぜArcはとり

    Rees Re: OO
    daisuke-m
    daisuke-m 2011/03/25
    『オブジェクト指向というのは、このリストのいろいろなサブセットとして 定義されているようだ。』
  • なぜオブジェクト指向は嫌われているのか?:アルファルファモザイク

    文化祭でカセットコンロ4台の上に鉄板2枚載せて焼きそばを作っていたらガスボンベが爆発、生徒15人負傷…私立豊南高校

  • ドラゴンボールで学ぶオブジェクト指向 改 - 達人プログラマーを目指して

    ドラゴンボールといえば、大変に人気の高い国民的、いや世界的な漫画、アニメですが、昨日匿名ダイアリーでドラゴンボールをネタにしたオブジェクト指向の解説がホッテントリに入っていました。 ドラゴンボールで学ぶオブジェクト指向 多くの人に親しみやすい題材でオブジェクト指向の考え方を解説するというのは非常に興味深い試みなのですが、オブジェクト指向の説明としては不適切なところがあり、ちょっと残念な内容になっています。私自身ドラゴンボールの専門家(ドメインエキスパート)ではないため、不正確なところがあるかもしれませんが、ストーリーを思い出しながら、私なりにドラゴンボールをネタとしたオブジェクト指向の解説にリトライしてみたいと思います。 なお、オブジェクト指向でもプログラミング言語によって表現できる内容が異なるため、当然設計技法は違ってきます。ここではJavaC++、C#、Visual Basicといっ

    ドラゴンボールで学ぶオブジェクト指向 改 - 達人プログラマーを目指して
    daisuke-m
    daisuke-m 2011/03/18
    冠詞の話が個人的にスマッシュヒット。英語学習的な意味でも。
  • オブジェクト指向プログラムでgetter/setterメソッドを使わなければならない10の理由

    オブジェクト指向プログラムで getter/setterメソッドを使わなければならない 10の理由 福盛 秀雄 fukumori at m.ieice.org JavaC++などのオブジェクト指向言語でプログラムを書いているときに、単純なメンバ変数を参照したり操作するために anObject.getX() [以後これをgetterメソッドと呼ぶ] とか anotherObject.setY(y) [以後これをsetterメソッドと呼ぶ] と書くのはなぜだろうと思ったことはないだろうか? int型の変数ひとつを操作するのになぜわざわざメソッドを定義するのだろう? 単純に代入を使えばいいじゃないか? この文章はそんなあなた(かつての僕も含む)が、getter/setterメソッドを使うべきである理由についてまとめたものである。 ということで早速論へ。 1. クラス内部のデータ表現を変えた場

  • クラスとは何か。 - 偏見プログラマの語り!

    プログラムを書く人にとって、クラスとは何なのでしょうか。 シンプルな例を出して考えると理解が速いですよね。 class A { public: string name_; int price_; }; 名前と値段のフィールドがありますね。 はい。クラスとはデータ集合の定義のことです。 ですがこれだけでは使いようがありませんね。 では次の例を見てください。 int main() { int i; double d; A a; } int, double, … と同じように A を使っていますね。 クラスとは型なのです。*1 おっと、忘れていました。 実はクラスには関数を定義する機能があるのです。 class A { public: string name_; int price_; string to_string(); // 名前と値段を用いて文字列を生成する。 }; はい。クラスとはデー

    クラスとは何か。 - 偏見プログラマの語り!
  • “オブジェクト指向”の本質 - Smalltalkのtは小文字です

    「OO(OOP)とは何か?」については、ネタが割れてしまえばそんなに複雑なものではない…と個人的には最近、考えるようになってきています。 リスコフのユーザー定義型(aka、抽象データ型。データと手続きのセット)そのもの、あるいはその「ユーザー定義型」をクラスやそれに準ずる機能で実現しようとするOO(ストラウストラップ。aka、クラス指向。継承を使ったプログラミング)。もしくはそれらを一般化したOO(クック。aka、手続きによる抽象化)。 メッセージングにより動的性を実現しようとするOO(ケイ。aka メッセージ指向) 今回登場した、後者のメッセージングのOOのミニマリズムをおしすすめることによって派生的に生じたOO(アンガーとスミスからの 派生 変形。aka、プロトタイプベースOO。フレームとスロット、あとは委譲機構があれば十分…というミニマル化の結果、アンガーとスミスの頃には重要だった“

    “オブジェクト指向”の本質 - Smalltalkのtは小文字です
  • オブジェクト指向の概念の発明者は誰ですか? - Smalltalkのtは小文字です

    忙しい人のためのまとめ 一般に「オブジェクト指向プログラミング」と呼ばれる考え方には発案者が異なる二系統がある。(ただし簡単のため、次のうち前者から批判的に派生して生じたプロトタイプベースのオブジェクト指向はここには含めていない) アラン・ケイによる、変化に強い長期運用可能な遅延結合システムを SIMULA67 にあった「オブジェクト」をメッセージの受け手とすることで実現(オブジェクトにメッセージ送信)するアイデアに基づく「メッセージングのオブジェクト指向」と、 ビアルネ・ストラウストラップ(前後して抽象データ型を発案したリスコフ人、オブジェクトクラスを考えたニガードらSIMULA陣営、Eiffelのメイヤーらも同様の着想を得ている)による、ユーザー定義型(抽象データ型)を SIMULA67 にあった「クラス」という言語機能を使って実現(カプセル化、継承、多態性)するアイデアに基づく「抽

    オブジェクト指向の概念の発明者は誰ですか? - Smalltalkのtは小文字です
  • クラスが持つ3つの役割 - 西尾泰和のはてなダイアリー

    某所のチャットで話題になって、流れ去りそうだったのでもったいないから転載しておいた。事後承諾で。 MIYAMOTO Daisuke: 型の継承と実装の継承を区別する方法がないんだよな。 西尾泰和(nishio.hirokazu): 型を継承させずに実装を継承させたい→それ移譲で ってことかな? MIYAMOTO Daisuke: そそ。そもそも、クラスに「型としての役割」と「実装としての役割」という複数の責務があることに、俺は長い間気づかなかった。これに気づかないと、型継承と実装継承が頭の中で整理できない。 西尾泰和(nishio.hirokazu): 僕が最近気づいたことも加えると、クラスには「ユーザ定義型」「インスタンスを作成する道具」「実装の再利用の単位」という3つの役割がある。 MIYAMOTO Daisuke: あぁ、インスタンスの生成器ね。 西尾泰和(nishio.hiroka

    クラスが持つ3つの役割 - 西尾泰和のはてなダイアリー
    daisuke-m
    daisuke-m 2010/10/13
    / 2011/3/8 ググってたら自分が出て来て面食らった。