タグ

オブジェクト指向に関するj5ik2oのブックマーク (10)

  • オブジェクト指向と10年戦ってわかったこと - Qiita

    この記事の内容 オブジェクト指向は難しい!わかった気になって実践すると詰みます... ウギャー この記事は10年以上オブジェクト指向と戦った筆者が、通常とは異なるアプローチでオブジェクト指向を解説したものです。 筆者はJavaを使って格的なシステム開発をしたことがありませんが、オブジェクト指向言語として最もポピュラーなJavaをベースにオブジェクト指向について解説させていただきました。 また、この記事の続編にあたります「なぜオブジェクト指向は難しいのか」を更に2年の時を経て執筆させて頂きました!是非こちらも一読していただけると嬉しいです。 オブジェクト指向三大要素の謎 オブジェクト指向三大要素ってありますよね。オブジェクト指向は「カプセル化」「継承」「ポリモーフィズム」の3つの要素で成り立つと言われています。最近では、この三大要素が語られる傾向は薄いようですが、一度は耳にしたことがある

    オブジェクト指向と10年戦ってわかったこと - Qiita
    j5ik2o
    j5ik2o 2016/05/02
    なぜオブジェクト指向なのか?はその成り立ちを学ばないと深淵には辿り着かないと思います。それは何か?パターンランゲージです。アレグザンダーとアランケイの主張から学ぶべきかも。
  • Haskellでもできる!実践・オブジェクト指向 - Just $ A sandbox

    Lensにほとんど触れたことのない人にはこちらの記事がオススメです:Lensで行こう! - Just $ A sandbox Haskellでもオブジェクト指向をしましょう! Haskellは直接オブジェクト指向的な機能を提供してはいませんが、我らがLensの力を借りることでオブジェクト指向的な設計を意識したコーディングが可能です。 今回利用するのは主に以下のモジュールです。 Control.Lens.Lens Control.Lens.Getter Control.Lens.Setter Control.Lens.TH Lensのおさらい Lensを使ったことのある人にはおなじみだと思いますので、特に解説はしません。 type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t -- Lens型(GetterやSett

    Haskellでもできる!実践・オブジェクト指向 - Just $ A sandbox
  • 社内勉強会でオブジェクト指向についてLTしました | Nekoya press

    毎週定例の社内勉強会でオブジェクト指向の基礎についてLTしました。資料はやや加筆しています。 昨今、オブジェクト指向というとMVCとかデザインパターンみたいな発展的なトピックが目立つような気がしていて、もっと簡単に考えればいいのになーという思いからこういう話をしました。 凝集度を高める設計指針を出来るだけ平易な言葉で語ろうというのがコンセプトでした。 サンプルがいろいろ話をはしょりすぎで、改めて見るとちょっと違和感ありますね… 開発のバイトで来てくれてる学生の子たちに、こういう概念的な話を聞いてもらう機会って積極的に作らないとなかなかないので、そういう場を作っていくのもおっさんの役割なのかなーみたいなことを思ってます。

    j5ik2o
    j5ik2o 2014/01/10
    なぜオブジェクト指向を使うのか、それは多態な実装にして便利!とかじゃなくて、メンタルモデルをコードに投影することにこそ本質がある。だが、もはやそれを語る人がいないのが問題。そういう人を増やしたい。
  • カプセル化、情報隠蔽、データ隠蔽 - ぐるぐる~

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

    カプセル化、情報隠蔽、データ隠蔽 - ぐるぐる~
    j5ik2o
    j5ik2o 2011/10/23
    不変項については、DDDのアグリゲートパターンも参考になります。
  • オブジェクト指向プログラムでgetter/setterメソッドを使わなければならない10の理由

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

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

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

    オブジェクト指向の概念の発明者は誰ですか? - Smalltalkのtは小文字です
  • Martin Fowler's Bliki in Japanese - オブジェクト指向を学ぶにはどの言語がよい?

    http://martinfowler.com/bliki/LanguageForLearningObjects.html オブジェクト指向を教えるとき、どの言語がよいか? ここ数年、オブジェクト指向を覚えるときには、Javaが使われてきました。Javaを使うのには、いくつかの理由があります。 広く知られている C を基とした文法(一般的なスタイルとなりつつあります) フリーで高性能な開発環境が利用可能である Javaの知識があれば仕事に就ける こういった理由から、私はJavaの使用をやめさせようとはしませんでした(C#にもこういった特徴があり、いずれC#が代わりになるだろうと指摘してはいたんですが)。ただ、Javaだけに任せようとは思っていません。Java、C#、C++はいずれも、オブジェクト指向プログラミングのある形を提示してくれていますが、誰かにオブジェクト指向を紹介するならば、選

    j5ik2o
    j5ik2o 2010/08/16
    Javaは万人に受ける素養がある言語。オブジェクト指向なスクリプト言語は玄人向け。そして、理解は作ることでしか得られない。
  • Amazon.co.jp: C言語によるオブジェクト指向プログラミング入門: 坂井弘亮: 本

    Amazon.co.jp: C言語によるオブジェクト指向プログラミング入門: 坂井弘亮: 本
  • JPA2.0のタイプセーフCriteriaAPI感想とGoogle Collections Library - ひたすらプログラミング日記

    今までJPA2.0のCriteriaを試してみた感想とかそこらへんを書いていこうと思います。 結論から言うとCriteriaはJavaによるプログラミングを追求しているって感じじゃないのかなと*1。 ANDやORの使い方について この感想を書くにはGoogle Collections Libraryで提供されているとあるAPIの事を取り上げねばならないのでまずはそちらについて。 Google Collections Libraryにはいろんな機能があるのですが今回関係するのはPredicate、Predicates、Iterablesといったクラスです。これらを使うとJavaでクロージャーを使う感じでListの絞り込みとか出来るようになります*2。ちなみにこのやり方はNext Generation Java Programing Styleの3番目に紹介されているやり方です。例えば下記はE

    JPA2.0のタイプセーフCriteriaAPI感想とGoogle Collections Library - ひたすらプログラミング日記
  • いまだに継承を使うタイミングが分からない - みずぴー日記

    いまだに継承を使うタイミングが分からない。もうちょっと正確にいうと実装継承を使うべきタイミングが分からない。 インタフェースを継承するのは理解できるよ。型をそろえたり、同一視したいんでしょ。 よくあるコードだとこんな感じ。ちゃんと動くかどうかは知らない。 interface Foo { ... } class Bar implements Foo { ... } class Baz implements Foo { ... } List<Foo> foo = new List<Foo>(); foo.push(new Bar()); foo.push(new Baz()); でも、クラスを継承するのがよく分かんない。メソッドとかを再利用したいんなら、委譲を使ったほうが安心じゃん。不用意なメソッドを公開したりしないし。 class Foo { public void f() { ... }

    いまだに継承を使うタイミングが分からない - みずぴー日記
  • 1