タグ

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

  • オブジェクトの粒度:小さなオブジェクトに分ける | システム設計日記

    役割が明確な小さなオブジェクトに分けるのが、基中の基。 従業員を表現するために、従業員オブジェクトをルートとして、 ・個人 ・氏名 ・電話番号 ・生年月日 ・期間 ・給与 という小さなオブジェクトで構成する。 個人 氏名や電話番号のサブのルートクラス。 氏名 姓、名、セイ、メイを保持 バリデーションや、"姓名(セイメイ)"などのフォーマット出力を担当 電話番号 電話番号のバリデーションとか、フォーマット出力を担当 生年月日 生年月日を保持して、年齢計算も担当 期間 開始日と終了日を保持。 ある期間とある期間が重なっているかとか、期間演算を担当 給与 マネークラスのサブクラス。 将来は、給与計算ロジックを追加する場所。 --- オブジェクト指向の分析設計の発展形である、ドメイン駆動設計のオブジェクトの構成はこんな感じなる。 Evans の Domain-Driven Design のパタ

    yanagikouta
    yanagikouta 2016/01/28
    ここまで粒度を下げるべきなのか…
  • オブジェクト指向プログラミングとは結局なんなのか | 黒曜の吹き溜まり

    この記事は第2のドワンゴ Advent Calendar 2015の5日目です。 ちなみに前日は@deflisさんでした。 先日の記事で分かる通りドワンゴ社員()なのですが、まぁ@mesoさんが「厳格な管理とかめんどくさいので、元社員も参加すればいいんじゃないかな。」とか言ってるしお目こぼし頂きたく… 去年のアドベントカレンダー記事は「関数型プログラミングとは結局なんなのか」というタイトルで、関数型プログラミングという語が何を指していて何を指していないのか、みたいなことをなるべく平易にまとめました。 なので今年は「オブジェクト指向プログラミング(以下OOP)とは結局なんなのか」という記事にしてみた…のですが、なにぶん語の指す範囲が広く、また自分も理解しきっているわけではないので、多少不正確な点があるかもしれません。 「関数型は流行りだけど、今更OOPかよ」とか思われるかもしれませんが、お付

    yanagikouta
    yanagikouta 2015/12/06
    メッセージングを2+3で考えるのはわかりやすい 今度から使おう
  • オブジェクト指向言語としてGolangをやろうとするとハマること - Qiita

    埋め込み(embedded)に要注意というお話です。あるいは、GolangC++のようなゼロオーバーヘッドを目指していると考えれば腑に落ちるよね、的な。 Goはオブジェクト指向言語っぽく使うことができます。次のような機能を提供しています。 interfaceを使ったコーディング 埋め込み(embedded)を使った実装継承 インタフェースは次のような感じです。 // ポニーは歩ける type Pony interface { Walk() } // アースポニーも歩けるので、Ponyインタフェースに渡せる type EarthPony struct { } func (ep *EarthPony) Walk() { fmt.Println("歩くよ") } インタフェースはメソッド宣言しかかけません。実装は書けません。でも、定義されたメソッドを持てば、それはすべて「これの仲間だ」という感

    オブジェクト指向言語としてGolangをやろうとするとハマること - Qiita
  • Google流 JavaScript におけるクラス定義の実現方法

    目次 2019年追記 はじめに クラス実現のために必要な JavaScript の言語仕様 function this call new 演算子 prototype チェーン プロパティ: prototype Google Closure 流のクラスの実現方法の概要 クラスの宣言とコンストラクタの定義 メンバ変数 (インスタンス変数) メソッド定義と呼び出し private, protected 継承 プロトタイプチェーンを利用してメソッドを親クラスから引き継ぐ 親クラスのコンストラクタの呼び出し メソッドオーバーライドと親クラスのメソッドの呼び出し 多重継承 abstract, interface inherits の実際のコード 良くないクラス実現方法 ES6 のクラス 2019年追記 この記事ではclassが導入されたES6以前のJavaScriptでどのようにクラスに相当するものを

    yanagikouta
    yanagikouta 2015/11/11
    オーバーライドを禁止することもできません。 この方法結構探してたんだけど無理なんやな、コード規約とかで決めれば行けるのかな
  • オブジェクト指向プログラミングとは? : スティーブ・ジョブズの答え | Yakst

    スティーブ・ジョブズによる、オブジェクト指向プログラミングとは何かという非常に平易な言葉でのわかりやすい説明。 オブジェクト指向プログラミングに関するいい説明にはなかなか出会えていませんでした。正式なエンジニアリングの教育を受けたわけではないけれど、いつも技術やデザイン、芸術といったやることすべてに明確なアイディアを持って説明する、ある人の言うことを聞くまでは。 ここに挙げるのは1994年の「ローリングストーン」のインタビューの引用で、スティーブ・ジョブスがオブジェクト指向プログラミングとは何かを説明しているものです。 Jeff Goodell : そもそもオブジェクト指向ソフトウェアとは何か、簡単な用語で説明していただけますか? Steve Jobs : オブジェクトとは人間のようなものだ。生きていて、何をどうすべきかという知識を自分の中に取り込み、物事を覚えていられるようにメモリーを持

  • クラス設計の原則 — みんなのウェディングエンジニアリングブログ

    みんなのウェディングの高井です。 クラスベースのオブジェクト指向プログラミング言語を利用している人であれば、クラスとは、ありふれていて普段から利用するものです。にもかかわらず、良いクラスをつくるというのは、なかなかに難しいことです。 先日、みんなのウェディングでアルバイトをしてくれている学生さんのコードレビューをしていたときにも、それを強く感じました。 実践的プラグマティックには「ソフトウェアの規模や文脈にあわせて、適切に抽象化していただきたい」という以上のことを言っても仕方がないところなのですが、それだけでは経験の浅いプログラマーにとって、まったく分からないという話になってしまいます。 というわけで、今回はクラス設計の原則についてのお話しです。 Bertrand Meyerのクラス設計の原則 Bertrand Meyerは『オブジェクト指向入門 第2版』の中で、クラス設計について章をひと

    クラス設計の原則 — みんなのウェディングエンジニアリングブログ
  • より良いプログラムを書くための究極の奇策 – 「Data first, not code first」 | POSTD

    (訳注:2015/10/31、いただいた翻訳フィードバックを元に記事を修正いたしました。) 開発者は嫌うでしょう。 ここでは、標準的なコツや策略について書きますが、当に興味があるのは、別のことです。究極の奇策を見つけたいと思います。策略をひとつずつ試して、プログラミングの聖域に少しでも近づければ良いのですが。 はじめに 私が初めて書いたビデオゲームは、 Ninja Wars (忍者戦争)でした。 そう、これは、画像で埋めたHTMLのtableです。 src 属性を変えることで、動きを実現しています。JavaScriptファイルの冒頭は下記のようになっています。 var x = 314; var y = 8; var prevy= 1; var prevx= 1; var prevsw= 0; var row= 304; var endrow= 142; var sword= 296; v

    より良いプログラムを書くための究極の奇策 – 「Data first, not code first」 | POSTD
  • 1