タグ

oopに関するpeketaminのブックマーク (78)

  • 実はオブジェクト指向ってしっくりこないんです!:気分はstatic!:エンジニアライフ

    わたしはこれまで、C言語、Visual Basic、SAP ABAP、最近になって ASP.NET C# などの言語を使ってきた。 「自分でクラスを作ってオブジェクト指向っぽいことをしている」なんてことはまったくない。特に「メンバー関数をstatic宣言すればインスタンス宣言をしなくてもいい」ということ知ってからは、メンバー関数を従来のファンクションのように使っている。共有変数も、pubulic static宣言していまう。したがってプロパティなんて作らない。 staticを理解していない人のコードを見ると、いちいちインスタンス宣言しているので笑ってしまう。データベースにアクセスするアプリケーションをC#で書いているのだが、Visual Studioで供給しているSQL関係のクラスを使えばできてしまうのだから。 オブジェクト指向の入門書では、クラスが持つ隠ぺい性が強調されているが、これは他

    実はオブジェクト指向ってしっくりこないんです!:気分はstatic!:エンジニアライフ
  • Refactoring to Patterns メモ - それはBooks

    『『リファクタリング―プログラムの体質改善テクニック』の続編になっています。 例のごとく、自分で読み直したときにどんな場合にどのリファクタリングが使えるかのメモにしようと思ってます。2005年中くらいには、書の和訳が出版される予定です。 現在、洋書読破中。記事もそのつど更新していくつもりです。(最終更新日:2004/10/29) 家サイトはこちらになります。カタログ一覧あります。 Refactoring To Patterns インデックス Form Template Method Introduce Polymorphic Creation with Factory Method Chain Constructors Replace One/Many Distinctions with Composite Extract Composite Unify Interfaces with

  • カプセル化、情報隠蔽、データ隠蔽 - ぐるぐる~

    あちこちのサイトを見てると、間違った解釈をしてるのが多い。カプセル化なんて、情報隠蔽まで含んでるのが常識になりつつあるような。。。ここまで一般化してると情報隠蔽してるのがカプセル化というのが常識なのかも。 カプセル化・情報隠蔽・データ抽象化 - 今日の役に立たない一言 − Today’s Trifle! − カプセル化と情報隠蔽、データ隠蔽の違いがよくわからくなったので、手持ちので調べてみた。 基準 基準としては、 カプセル化、情報隠蔽、データ隠蔽の関係 カプセル化は隠蔽を含んでいるかどうか 対象はクラスのみか、そうでないか などなど。 一番目はそのまんま。二番目は、 // 隠蔽せずともカプセル化か class Hoge { int hoge; // なんかhogeを使うメソッド } // 隠蔽しなければカプセル化ではないか class Piyo { private int piyo;

    カプセル化、情報隠蔽、データ隠蔽 - ぐるぐる~
  • デザインパターン Singleton|WEBプログラム覚書

    HOME>WEBプログラム覚書>デザインパターン Singleton デザインパターン Singleton インスタンスが唯一であることを表現するSingletonパターン。 もっとも非難されてるデザインパターンらしい(汗

  • PHPにはインターフェイスというものがありますよ、という話 - id:anatooのブログ

    なにかとPerlPythonRubyJavaScript等の言語と比べて機能の不足を言及されることの多いPHPですが、 PHPには逆にこれらの言語にはない機能がある、それはインターフェイスだ、という話です。 このインターフェイスという奴は、タイプヒンティングと共に、PHPという言語がさっき挙げたような他の軽量言語とは違ったプログラミングスタイルを持っていることを象徴しています。 インターフェイスって何? JavaやAS3なんかをやっている人だとわかるかと思いますが、有体にいえばinterfaceとはメソッドの宣言を集めたものです。 PHPマニュアルから説明を引用すると インターフェイスにより、あるクラスが実装する必要があるメソッドの 種類を、 これらのメソッドの実体を定義することなく、指定するコードを作成できるようになります。 (PHP: オブジェクト インターフェイス - Manu

    PHPにはインターフェイスというものがありますよ、という話 - id:anatooのブログ
  • 第126回 ダックタイピング と インタフェース - bingo_nakanishiの他言語出身者のためのPerl入門

    動的型付け言語と静的型付け言語における多態性 オブジェクト指向では、多態性(ポリモーフィズム)という発想がでてくる。この多態性を実現する方法を今回は2つ紹介する。 Perlは動的型付け言語であり、ダックタイピングという手法で、多態性を実現できる。対して、静的型付け言語であるJavaでは上位の型を作ることで多態性を実現できる(今回はインタフェースを用いてみた)。 多態性を用いればif文がなくなるなどの恩恵を受ける事ができる。 (今回はこのif文がなくなる場面については説明はしない) ダックタイピング Perlでのタックタイピングを見てみよう。 my $human = Human->new(); my $duck = Duck->new(); my $dog = Dog->new(); $human->touch($duck); $human->touch($dog); いま、このようにhum

    第126回 ダックタイピング と インタフェース - bingo_nakanishiの他言語出身者のためのPerl入門
  • 多重継承まとめ - 西尾泰和のはてなダイアリー

    JavaはInterfaceという特殊な実装を持たないものだけ多重継承できる。実装を多重継承する仕組みはない。同じシグネチャのメソッドを持っている2つのInterfaceを継承した際にエラーにならないので衝突に気付けない。 Pythonはクラスを多重継承できる。同じ名前のメソッドを持っている2つのクラスを継承した際にどのメソッドが呼ばれるかはC3線形化を使って決定される。see: A Monotonic Superclass Linearization for Dylan RubyはModuleという「なにかを継承することはできなくてインスタンス化もできないもの」だけは多重継承できる。Moduleが別のものを継承できないためメソッドの解決は素朴な探索でOK(include A include BしたらBでの実装が優先) SmalltalkにはTraitという実装の多重継承ができるしくみがあ

    多重継承まとめ - 西尾泰和のはてなダイアリー
  • PHP5.4とScalaのトレイト比較 - なんたらノート第三期ベータ

    PHP5.4にはトレイトという文法が導入されて、多重継承の便利さが享受できるようになるそうです。 いろいろ試してみることにしました。 トレイトといえば代表選手はScalaですね。Scalaでいうトレイトは、インターフェースの定義とメソッドの実装を同時にやってくれる便利な概念でした。単一継承のOOP言語では「〜は〜の一種」という制約が強すぎて、「ペンギンは鳥の飛行メソッドによって飛行できてしまう」という問題があります。でもちゃんと「ペンギンは飛べないが泳げる鳥」を綺麗に解決する必要はあって、その解答として、トレイトのあるScalaではこんな解が導けます。 abstract class Animal abstract class Bird extends Animal { def hasBeak = true // 鳥にはかならずクチバシがある def hasWings = true // 翼

    PHP5.4とScalaのトレイト比較 - なんたらノート第三期ベータ
  • Java 的オブジェクト指向を 90 分で理解する - 偏見プログラマの語り!

    1. 分からない。いくら説明を読んでも分からない。 ● 1.1. 未だに分からない Java 的オブジェクト指向 今日び Java 的オブジェクト指向の説明なんて星の数ほどあるような気がしますが、それでもなお「これで分かった!」という説明に辿りつけない不運な人がいるようですね。まぁこんだけ色々な説明が溢れていたら逆にどれを読めば良いのかワケ分からなくなってしまうのかもしれません。じっくり読んでも理解できなかったのであれば、きっとその説明と読者の相性が悪かったんでしょう。… というわけで、僕も Java 的オブジェクト指向が全っっっっ然これっぽっちも分からないという人に向けて説明する記事を書こうと思います。そうでない人には無価値な記事ですのでブラウザの「戻る」をクリックしましょう。 ● 1.2. 「オブジェクト指向」という名の南の島がある オブジェクト指向にはいくつもの専門用語があって、学習

    Java 的オブジェクト指向を 90 分で理解する - 偏見プログラマの語り!
  • やっと理解できた!JSオブジェクト指向プログラミング再入門 | ゆっくりと…

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

  • インターフェイス分離の原則(ISP) - Strategic Choice

    インターフェイス分離の原則(ISP:the Interface Segregation Principle) クライアントに、クライアントが利用しないメソッドへの依存を強制してはならない。どういうこと?クライアントは複数のインターフェイスを利用するけど、そのすべてが互いに強い関連を持っているわけではない。すべてのインターフェイスを1つのクラスに押し込めてしまうことはやめ、関連性持ったインターフェイスはグループ化して、抽象基クラスとして分けて利用すべき。なんで?「太った」(多機能な)インターフェイスがある。 あるクライアントはそのインターフェイスのすべてのメソッドを利用するわけではない。 クライアントが、そのような利用しないメソッドを含むインターフェイスに依存すると、クライアントはその自分に関係のないメソッドの変更の影響をうけていしまう。 他のクライアントがクラスに強いる変更によって、それ

  • PHP: ReflectionClass - Manual

    Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su

    PHP: ReflectionClass - Manual
  • OOコード養成ギブス - rants

    Binstock on Software: Perfecting OO's Small Classes and Short Methods The Pragmatic Programmersシリーズの新しい、The ThoughtWorks Anthologyの中に 興味をそそるエッセイがある。Jeff Bayの"Object Calisthenics"だ。 これは良いオブジェクト指向の性質を実証する小さなルーチンを書く方法をマスターするための 詳細にわたるエクササイズだ。オブジェクト指向なルーチンを書く能力を向上させたい開発者がいるなら このエッセイに目を通すことを勧める。ここにBayのアプローチを要約してみよう。 彼は次にあげられる制約のもとに1000行のプログラムを書くことを勧めている。 これらの制約は意図的に過剰な制限となっているが、これは開発者を手続き的なやり方から脱却させるた

    OOコード養成ギブス - rants
  • オブジェクト指向プログラミングの教え方? | システム設計日記

    技術者仲間で話していたら、4月入社の新人に、オブジェクト指向プログラミングをどうやって教えたらよいか?、という話になった。 想定している言語は Java。 ■動物・犬・モデルの説明から ■基用語の説明から:「カプセル化とは」「継承とは」... ■サンプルコードから: System.out.println( "hello world" ) ... どのパターンでもうまくいかなかったので、今度の新人研修では何か工夫したいね、という話。 結論から言うと「これだ」というアイデアがでたわけではないが、話の内容は、いろいろ興味深かったのでメモ書き。 Java はオブジェクト指向の言語なの? Java は、ある意味 C言語の仲間。ある側面はほとんど同じ言語。 ・int, long (プリミティブなデータ型) ・配列操作 ・if/for/return ここだけ見れば、C言語のまま。つまり命令型、手続き

  • IntroductionJa - pinoco - Project Hosting on Google Code

    Code Archive Skip to content Google About Google Privacy Terms

  • まつもと直伝 プログラミングのオキテ---目次 - まつもと直伝 プログラミングのオキテ:ITpro

    第0回 あらためてRuby入門 まつもとゆきひろ氏自身による「Ruby入門」をお届けします。日経Linuxの連載開始前の特別企画(2005年4月号)として,Rubyが他のスクリプト言語やオブジェクト指向言語とどこが違うのか,なぜ便利なのかを中心に解説してもらったものです。 ● 基と他言語との違い ● 実装とRuby誕生の秘密 第1回 プログラミングとオブジェクト指向の関係 プログラマを目指す人々の中にも,「オブジェクト指向は難しい」とか,「なかなか分からない」という印象を持つ方が多いようです。そこで,Rubyを題材にオブジェクト指向という考え方について説明していきます。 ● その1 ● その2 ● その3 第2回 抽象データと継承 オブジェクト指向プログラミングを構成する3原則のうち,前回は「ポリモーフィズム」を学びました。今回はオブジェクト指向の歴史を復習した後,残りの「データ抽象」と

    まつもと直伝 プログラミングのオキテ---目次 - まつもと直伝 プログラミングのオキテ:ITpro
  • JavaとJavaScriptの親しい関係

    教育界、技術者コミュニティでJava言語の教育と啓蒙に長年携わってきた 筆者が、独自の視点からJavaの面白さを掘り下げていく。(編集局) 注目を浴びるJavaScript JavaScriptが世に広まって10年近くたちますが、最近話題に上ることが多くなってきています。なぜ、いまさらJavaScriptが注目を浴びているのでしょうか? JavaScriptはECMA(ヨーロッパ電子計算機工業会)によって、ECMAScriptとして標準化されていて、Standard ECMA-262 ECMAScript Language Specification 3rd edition (December 1999)や、Standard ECMA-357 ECMAScript for XML (E4X) Specificationといった仕様が公開されています。これらの仕様を見て分かるように、Java

    JavaとJavaScriptの親しい関係
  • オブジェクト指向とは コンピュータの人気・最新記事を集めました - はてな

    発祥は Simula であり*2、その後 Simula の影響を受けて設計された Smalltalk によって概念が普及した。また同じく Simula の影響を受けた C++ の爆発的普及によって概念が広まり、ソフトウェア開発の主流となっていく。 ただし、プログラミング言語によってオブジェクト指向の捕らえ方に微妙な差異が存在し、それがプログラマの理解を困難にしている一面が存在する。その差異は大きく分けると次の3種類の流派として整理することができる。 クラスを含むオブジェクト指向 オブジェクトに対するメッセージ送信を用いた計算モデルをメインに据えたもの(ケイのオブジェクト指向) 継承・カプセル化・多相性をメインに据えたもの(ストラウストラップのオブジェクト指向) クラスを含まないオブジェクト指向 プロトタイプに対する委譲にて継承を表現するもの(プロトタイプベース・オブジェクト指向) C++

    オブジェクト指向とは コンピュータの人気・最新記事を集めました - はてな