タグ

oopに関するigaiga07のブックマーク (21)

  • リスコフの置換原則 - Wikipedia

    この記事には複数の問題があります。 改善やノートページでの議論にご協力ください。 出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。(2021年12月) 脚注による出典や参考文献の参照が不十分です。脚注を追加してください。(2021年12月) ほとんどまたは完全に一つの出典に頼っています。(2021年12月) 独自研究が含まれているおそれがあります。(2021年12月) 出典検索?: "リスコフの置換原則" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL リスコフの置換原則の概念は、バーバラ・リスコフにより初めて導入された。2010年に撮影された写真。 リスコフの置換原則(りすこふのちかんげんそく、英: Liskov substitution principle)は、オブジ

    リスコフの置換原則 - Wikipedia
  • データ構造はクラスに任せた!だから、アルゴリズムはstatic関数で書くぜ!!(キリッ - みねこあ

    きむら(K)さんち経由、実はオブジェクト指向ってしっくりこないんです!。いろいろ強烈なインパクトが満載で、スルーできませんでした。 特に「メンバー関数をstatic宣言すればインスタンス宣言をしなくてもいい」ということ知ってからは、メンバー関数を従来のファンクションのように使っている。共有変数も、pubulic static宣言していまう。したがってプロパティなんて作らない。 staticを理解していない人のコードを見ると、いちいちインスタンス宣言しているので笑ってしまう。 ぎゃーっ....。人はまわりを笑っているつもりでも、逆にまわりに嗤われていますよ、絶対。 ここ以外にも突っ込みどころ満載のエントリーですので、読みながら突っ込むお手々が止まらなくって、腕がつりそう。そんな突っ込み連打なエントリーもおもしろそうですが、わたしはそういうのは上手く書けないので(性格がネチっこいから、なんだ

    データ構造はクラスに任せた!だから、アルゴリズムはstatic関数で書くぜ!!(キリッ - みねこあ
  • オブジェクト指向のプログラムに込める「意図」 - 都元ダイスケ IT-PRESS

    その昔、プログラムを覚えたての頃、プログラムってのは単に「処理」を記述するものだと考えていた。処理を1ステップごとに記述し、場合によってはサブルーチンに切り出し、再利用する。 今振り返ると、オブジェクト指向を覚え始めてしばらくして、その意識は変わっていた。当然「処理」を落とし込まなければプログラムは動かない。だから「処理」はプログラムに込める。ただ、オブジェクト指向言語を使うと、これに加えて「意図」を落とし込むことができる。 オブジェクト指向を学び始めた当初、Javaのインターフェイスの存在意義がわからなかった。プログラムは「処理」を記述するものだという視点で見ると、インターフェイスには「処理」を書くことができない。インターフェイスだけでは何も起こらないからだった。 さらに、IDEを使ってコードを追っていると、途中でインターフェイスのソースを開くことになり、「なんだよ、中で何やってっかわか

    オブジェクト指向のプログラムに込める「意図」 - 都元ダイスケ IT-PRESS
  • 5年後に後悔しないJavaプログラムの書き方 - L'eclat des jours(2009-07-02)

    _ 5年後に後悔しないJavaプログラムの書き方 ここ数日、死ぬほど後悔しまくっているので、あらためて(というのは、数年前にも一度後悔しまくって、そのときの知見はあらかた処方箋とかコーディングの掟に書いているからだが)後悔しないための書き方をいくつか紹介する。 とにかく、ファクトリメソッドパターンを使うこと。 これは当に重要。しかも簡単でありながら効果は絶大。 だめな例。 public class FooBar { private Connection conn; ... protected void setup() { ... conn = DriverManager.getConnection(url); ... } urlを指定することや、DriverManagerの実装を交換すれば良いだろうと想定していても(というか、Connectionならそういう方法もあり得るが、そうはいかな

  • オブジェクト指向っぽい話が分かるかもしれないJavaScript講座 その3 | Takazudo Clipping*

    今回は、画像のロールオーバーを、今まで説明してきたように、クラスを使いながら作ってみます。リンクにマウスオーバー(及びフォーカス)されると、中にある画像のsrcの "_normal." を、 "_over." に変更してセットし、マウスアウト(及びブラー)されると、これと逆のことをします。 サンプルとソース サンプルその1 <ul> <li><a class="rollover" href="http://diablo.com"><img src="diablo_normal.gif" alt="Diablo" /></a></li> <li><a class="rollover" href="http://hoge.com"><img src="hoge_normal.gif" alt="HOGE" /></a></li> <li><a class="rollover" href="ht

  • JavaScript の new 演算子の意味: Days on the Moon

    JavaScript における new 演算子の動作は大まかにいって以下のとおりである。(new F() とした場合。) 新しいオブジェクトを作る。 1 で作ったオブジェクトの [[Prototype]] 内部プロパティ (__proto__ プロパティ) に F.prototype の値を設定する。 F.prototype の値がオブジェクトでないのなら代わりに Object.prototype の値を設定する。 F を呼び出す。このとき this の値は 1 で作ったオブジェクトとし、引数には new 演算子とともに使われた引数をそのまま用いる。 3 の返り値がオブジェクトならそれを返す。そうでなければ 1 で作ったオブジェクトを返す。 ここで「オブジェクトである」というのはプリミティブ値 (文字列、数値、真偽値、undefined 、null) ではないということだ。new Stri

    igaiga07
    igaiga07 2009/06/17
    new F()実行時のF()の戻り値によって振る舞いが変わる
  • 第一級オブジェクト - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "第一級オブジェクト" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2024年11月) 第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数・戻り値としての)受け渡しといったその言語における基的な操作を制限なしに使用できる対象のことである。ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクトを意味しない。第一級オブジェクトは「第一級データ型に属す」という。 この言葉は196

    igaiga07
    igaiga07 2009/05/26
  • 継承とコンポジット - 都元ダイスケ IT-PRESS

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

    継承とコンポジット - 都元ダイスケ IT-PRESS
    igaiga07
    igaiga07 2009/05/25
    継承とコンポジットについて。わかりやすい。
  • 都元ダイスケ IT-PRESS

    都元ダイスケ(当時34)は、クラスメソッド株式会社に転職しました。 こんだけJavaJavaしてた都元が、なんとAWSエンジニアになっております。世の中どうなるかわからんですね〜。まぁとは言え、ちょいちょいJava触ってますが。 そんなわけで、今後共よろしくお願いします! って1年以上前の話やけどな。 「第一回チキチキjava-ja ymsr送別会」に行ってきた。 ちょっと湿っぽくなった瞬間もあったけど、笑いの絶えない良い会だった。 あいつは絶対準備して待ってる。 というわけで、その時が来たら、「第一回チキチキjava-ja ymsrによる歓迎会」に参加しようと思う。 しばらく待ってろ。 ごぶさたです。都元です。 日経ソフトウエア2012年8月号が昨日発売となりました。都元が特別付録の文庫サイズ別冊「Eclipse逆引きポケット事典」に寄稿しました。この原稿は、息子誕生の混乱のさなかに脱稿

    都元ダイスケ IT-PRESS
  • 例えば、if〜instanceofを避ける(1) - 都元ダイスケ IT-PRESS

    先日の地豆の開発チャットでの話題をまとめておく。 Javaにおいて、気をつけて使わないとオブジェクト指向の世界を大きく壊してしまう可能性のある危険ワードはstaticとinstanceofだと思っている。staticについては、継承とコンポジットで少しだけ触れた通り。今日はinstanceofについて。 先日、オブジェクト指向は「隠す」技術だと言ったが、今日は「まとめる」技術だと言ってみる。 class A extends X class B extends X だったとして、何も考えずにこんなコードを書いたとする。 X foo = ...; if (foo instanceof A) { // class A用の処理(a) } else if (foo instanceof B) { // class B用の処理(b) } 見た感じ思うのはこんなこと。とても危険な臭いがするコードだ。 X

    例えば、if〜instanceofを避ける(1) - 都元ダイスケ IT-PRESS
  • perl - Class vs. Closure : 404 Blog Not Found

    2008年07月13日03:30 カテゴリLightweight Languages perl - Class vs. Closure PERL HACKS(日語版) [英語版] うーん、さすがにそれはいいすぎでしょうか。 クロージャの概念をクラスとの対比でわかりやすく説明する。 - サンプルコードによる Perl 入門 ここで気づいてほしいことは、クラスとクロージャは、実は同じものだということです。たしかにオブジェクトの定義から行くと、 404 Blog Not Found:オブジェクトは難しくない。難しいのはクラス それで、オブジェクトとは何か、といえば、「自分が何が出来るのか[コード]を知っているデータ」ということになる。 であり、クロージャー(closure)は「自分が何を持っているか[データ]を知っているコード」なので、等価ではある。実際、 package Class; sub

    perl - Class vs. Closure : 404 Blog Not Found
  • オブジェクト指向のコードが追いにくい理由

    Javaの登場によってオブジェクト指向(以下OOP)は一気に普及しました。 そのJavaもリリースが1996年と、もはや干支も廻るぐらいの時が経ち、OOPを扱える技術者も増えました。 身近なところでもOOPを使える人が見つかる可能性は高くなりましたし、学習がより行いやすい環境になってきていると思います。 それでもOOPを解するための壁は厚いと言わざるを得ません。 静的オブジェクト指向は設計者が苦労を背負込むシステム の稿では Javaの静的オブジェクト指向というのは、クラスを設計する側の立場に立つと非常に苦労するものなのですが、クラスを使う側には非常に楽なものなのです。 Java界隈で仕事をする会社の新人教育は、この「クラスを使うことができる」レベルまで到達出ていればよいとされていると言って過言ではないでしょう。 と、OOPで設計されたクラスの「使い手」と「作り手」に求められる技術力の壁を

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • Moose

    Moose はなにではないか Moose Is Not 実験やプロトタイプ (experimental) おもちゃ (toy) もう一つのアクセサビルダー (accessor builder) ソースフィルタ (source filter) 黒魔術 (black magic) Perl 6 in Perl 5 Mooseとはなにか Moose Is Perlのための完全にモダンなオブジェクトフレームワーク A complete modern object framework for Perl Mooseとはなにか Moose Is Class::MOPのためのシンタックスシュガー (Syntactic sugar) 祖先たち (ancestry) CLOS (Common Lisp Object System) Smalltalk Alces latifrons Perl 6 … 安定して

  • メルマ!

    メルマ!サービス終了のお知らせ いつもメルマ!をご利用いただき誠にありがとうございます。 サービス開始以来、たくさんの皆様にご利用いただきましたメルマ!ですが、 誠に勝手ながら、2020年1月末を持って一部を除きサービスを終了させていただく事となりました。 今までのご愛顧、誠にありがとうございました。 1月末以降のスケジュールは以下となります。 (スケジュールは変更となる可能性があります) 2020年2月14日 マイメルマでの記事ダウンロード機能の停止(マイメルマの停止) 2020年3月2日 全てのデータを削除 記事データのダウンロード機能に関しては、マイメルマよりご利用ください。 今までご利用いただきまして、当にありがとうございました。 サービス終了に伴うQ&A Q. 読者のメールアドレスは公開されますか? A. メールアドレスはすべてメルマ!でお預かりしているものとなります。 大変申

  • オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング) | バートランド・メイヤー, 酒匂 寛 |本 | 通販 | Amazon

    ■商品の状態【付属品】 問題なし。【カバー】 多少のキズ・ヨゴレあり。【体】 多少のキズ・ヨゴレあり。■ご注文通知から1営業日以内に発送。■水ヌレ、ヨゴレ、キズ防止の為、耐水ビニール封筒に入れて発送いたします。■万が一、こちらの商品説明及びガイドラインで認められている範囲以外に不良点がございましたら送料及び商品代金を全額返金いたします。 ■商品の状態【付属品】 問題なし。【カバー】 多少のキズ・ヨゴレあり。【体】 多少のキズ・ヨゴレあり。■ご注文通知から1営業日以内に発送。■水ヌレ、ヨゴレ、キズ防止の為、耐水ビニール封筒に入れて発送いたします。■万が一、こちらの商品説明及びガイドラインで認められている範囲以外に不良点がございましたら送料及び商品代金を全額返金いたします。 一部を表示

  • Perl OOP におけるクラスの実装方法 : NDO::Weblog

    Perl OOP におけるクラスの実装方法 [ Perl ] Perl で OOP するにあたってはコンストラクタの書き方やアクセサの書き方に色んな方法があります。素で書くと package Dog; use strict; use warnings; # コンストラクタ sub new { my $class = shift; my $self = {}; bless $self, $class; return $self; } # アクセサ sub name { my $self = shift; @_ ? $self->{name} = shift : $this->{name}; } 1; あたりが定番だと思います。インスタンスフィールドをハッシュで実装して、アクセサは getter と setter を兼ねるメソッドとして定義。コンストラクタにおける初期化処理を $self->i

  • 2007-08-05

    なぜオブジェクト指向は嫌われているのか?:http://alfalfa.livedoor.biz/archives/51079543.htmlなんかの屑を鵜呑みにして、失敗している人が多いからでは.類書は他にも多数.*1 憂なプログラマのためのオブジェクト指向開発講座 (DDJ Selection) 作者: Tucker出版社/メーカー: 翔泳社発売日: 1998/05/31メディア: 大型購入: 10人 クリック: 508回この商品を含むブログ (78件) を見る *1:「俺は分かってるぜ〜」みたいなことを言ってる奴の何割か,下手すると過半数が,こういう屑で染まった「おれおれオブジェクト指向」の専門家だから達が悪い. 続きを読む Webvan覚えてる? Amazonは忘れていない:http://jp.techcrunch.com/archives/remember-web

    2007-08-05
  • 自己流オブジェクト指向プログラミング&Javaお奨め本2007年版 - カレーなる辛口Javaな転職日記

    http://d.hatena.ne.jp/JavaBlack/20050909/p1の改訂.*1基的に改訂版への差し替えと一部の新刊の追加程度になっている. お奨めのJava&オブジェクト指向プログラミング関連の書籍/参考文献リスト.初心者向け入門書や参考書から上級者向けの専門書まで,オブジェクト指向だとかJava言語とかの初心者〜中級者が学習をすすめる上での参考にすることを想定して作っている. 初心者向け勉強の手引き:http://d.hatena.ne.jp/JavaBlack/20070825/p1 オブジェクト指向プログラミング とりあえず初心者なら「オブジェクト指向プログラミング入門」「オブジェクト指向における再利用のためのデザインパターン」と,あと「リファクタリング―プログラムの体質改善テクニック (Object Technology Series)」くらいかな.ただしリフ

    自己流オブジェクト指向プログラミング&Javaお奨め本2007年版 - カレーなる辛口Javaな転職日記