タグ

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

  • - UML超入門

    UML,みなさん実際に使ってますか?私たちは現場の開発において, ここ4年間UMLを利用してきました. その経験をふまえて,この記事ではUMLの概略をざっと説明した後, 実例を交えてUMLを使ったシステムの開発を紹介して行こうと思います。 1章では,なぜUMLを使うのかというお話からはじめて, UMLの意味と歴史 をおさらいします. また,実際の開発プロセスでの一般的なUMLの利用法についても外観します. 2章で,簡単な業務システムを例にしてUMLの記法をひと通り詳しく解説して行きます. なるべく分かりやすく具体的な例として,社員の出退勤の管理を行う,勤怠管理システムを選びました. 3章では,組み込み分野に近いちょっと面白い例として, LEGOMINDSTORMS(TM)(*)を使ったロボット制御を例題にして,実際の開発の流れを追ってみたいと思います. 4章では,UMLの拡張例をいくつかご

  • オブジェクト指向プログラミングとドメイン駆動設計を学ぶのに適切な書籍とおすすめの読む順番 - Qiita

    オブジェクト指向プログラミングが学べる書籍たち もし私が今から最初から学ぶならこの順番でこの読むだろうという紹介です。 新人プログラマの方々は右も左も分からないというところからスタートとなるため、オブジェクト指向プログラミングを学ぶときに何から学べば良いか全くわからないという状況かと思います。 オブジェクト指向プログラミングを学んでいると自然と出会うドメイン駆動設計についても同様です。 そうした方々が書籍から学ぼうとした場合に、少しでも効率良く進められる順番を示してあげられれば良いなと思って紹介します。ただし、各書籍についての詳細な説明は書いていません(というか結構忘れててかけない)…。 なお、前提言語はJavaで言語構文にも十分詳しいことが大前提です。 以降、オブジェクト指向プログラミングはOOPと略します。 現場で役立つシステム設計の原則 OOPらしさの雰囲気がわかります 入り口に最

    オブジェクト指向プログラミングとドメイン駆動設計を学ぶのに適切な書籍とおすすめの読む順番 - Qiita
  • よくわかるSOLID原則1: S(単一責任の原則)|erukiti

    ソフトウェアエンジニアが知っているべきSOLID原則についての記事です。SOLID原則は、5つの原則の頭文字を並べた言葉で、S・O・L・I・Dそれぞれの原則について、5回に分けて説明します。 1) Single Responsibility Principle:単一責任の原則 2) Open/closed principle:オープン/クロースドの原則 3) Liskov substitution principle:リスコフの置換原則 4) Interface segregation principle:インターフェース分離の原則 5) Dependency inversion principle:依存性逆転の原則 今回はSingle Responsibility Principle(単一責任の原則 / SRP)についてです。 なぜSOLID原則が必要なのか?初回なので、なぜソフトウェア

    よくわかるSOLID原則1: S(単一責任の原則)|erukiti
  • MVC、3 層アーキテクチャから設計を学び始めるための基礎知識 - Qiita

    はじめに アプケーション・アーキテクチャについて学ぶと「MVC」や「3 層アーキテクチャ」といった言葉にたどり着きます。 さらに勉強を進めると「MVVM」、「ドメインモデル」、「クリーンアーキテクチャ」など、よく分からない言葉がどんどん増えていきます。 また、「オブジェクト指向」を勉強しても、実際のアプリケーションでの使いどころが分からなかったりします。 この記事では、これらの用語の非常に分かりにくい関係を整理しました。 2 種類の 3 層 伝統的な Web アプリケーションは、以下のように 3 種類のサーバから成り立ちます。 このサーバ構成を 3 層アーキテクチャと言うことがあります。 一方、アプリケーションサーバで動いているプログラムの内部構造も、以下のように 3 層に分離することがあります。 これも 3 層アーキテクチャと言うことがあります。 この記事では、サーバの構成ではなく、アプ

    MVC、3 層アーキテクチャから設計を学び始めるための基礎知識 - Qiita
  • 【新人教育 資料】第1章 UMLまでの道 〜オブジェクト指向編〜 - Qiita

    オブジェクトを日語に訳すと「モノ」、「対象」となります。 プログラムを勉強していくとオブジェクトと言葉をよく聞きますが、一旦「モノ」と考えるとわかりやすいかもしれません。 では、現実世界で物と言われるものはなんでしょう? ※このポストをしている人は自分の仕事机からの景色を使って説明しようとしています パソコン モニター 時計 椅子 人 これらは全て、「モノ」ですね。知覚的に、言葉を聞いただけで、それはどういったものが理解することが出来ます。 このような「モノ」は言葉として表現すると理解し、大体一般的に共通認識出来るものがオブジェクトだと考えてください。 オブジェクト指向とは、さらに「モノ」に加え「こと(振る舞い)」をするものもオブジェクトで表現しようというのがオブジェクト指向です。 例) 「サービスに申し込む」、「計算を結果を出力する」 オブジェクト指向を用いる事で、プログラム上の表現を

    【新人教育 資料】第1章 UMLまでの道 〜オブジェクト指向編〜 - Qiita
  • オブジェクト指向設計とクラス図 - Qiita

    20181113 やったこと オブジェクト指向の参考記事を読む クラス図を書いてみる ER図とクラス図が混同したので調べてみる🔎 ER図はデータモデルの抽象表現を表し、クラス図は提案されたシステムの静的構造と動作を表す。 ER図の主なビルディングブロックはエンティティ、リレーションシップ、および属性ですが、クラス図の主なビルディングブロックはクラス、リレーションシップ、および属性です。 参考 ER図はリレーションシップを外部キーで表し クラス図には振る舞い(メソッド)がある。という違いが分かった。 書き分けてみる まとめ クラス図 👉 オブジェクト指向設計用 対応ファイル)Rubyファイル群(モデル、コントローラ) ER図 👉データモデリング設計用 対応ファイル)スキーマファイル

    オブジェクト指向設計とクラス図 - Qiita
  • 7つの設計原則とオブジェクト指向プログラミング - ソフトウェア設計を考える

    設計原則はよい設計をするための指針です。 では、よい設計とはなんでしょうか? もっとも重要なソフトウェア品質は発展性 ソフトウェアの発展性がビジネス価値を生む 発展性をうみだす7つの設計原則 モジュール化 モジュール化の2つのアプローチ 型によるモジュール化 手続き的なモジュール化 関心の分離 関心の4象限 入出力と計算・判断の分離 業務の関心と実装の詳細の分離 もっとも複雑な関心事(ビジネスロジック)の分離を徹底する カプセル化と抽象化 カプセル化 ビジネスロジックのカプセル化 抽象化 データ抽象 ビジネスロジックとデータ抽象 高凝集と疎結合 凝集度 結合度 隠された結合性の問題 定義の一点性 見た目が同じコード 7つの設計原則の学び方 コードの実装例 ドメインオブジェクト設計のガイドライン 実践ガイドとして使える 設計の考え方を理解するための もっとも重要なソフトウェア品質は発展性

    7つの設計原則とオブジェクト指向プログラミング - ソフトウェア設計を考える
  • オブジェクト指向設計原則とは - Qiita

    はじめに オブジェクト指向の設計原則を説明します 勉強内容のアウトプットです 単一責任の原則 単一責任の原則は非常にシンプルな内容で、「1つのクラスに1つの役割(機能)」と言うものです。 これはカプセル化で強く言われる「小さなカプセル」ということに通じます。 ただ、この「1つのクラスに1つの役割」という考え方は正しいのですが、コレを正確に運用するのは非常に難しいです。運用が難しいというのは「1つのクラスに1つの役割」という言葉を指針としてしまうと思わぬ間違いを生むということです(言葉自体は正しいが、人間はアホなので間違っちゃうのです) そこで、クラスの妥当性をチェックするために別の角度から眺める必要が出てきます。この時の言葉が 「クラスを変更する理由が2つ以上存在してはならない」 という言葉です。この言葉は単一責任の原則の話で重要となる言葉ですので、覚えておいてください。 さて、あなたはあ

    オブジェクト指向設計原則とは - Qiita
  • オブジェクト指向プログラミングを学ぶための推薦図書 - ソフトウェア設計を考える

    オブジェクト指向プログラミングを学ぶ オブジェクト指向プログラミングという言葉は、広い意味で使われている。 オブジェクト指向プログラミングをキーワードにすべての情報をかき集めて理解するというアプローチは現実には無理。 目に付いた重要そうなところを見繕って集めてみても、たぶん混乱するだけ。 この記事では、オブジェクト指向プログラミングのいろいろなアプローチの中で、 クラスを使って独自の「型」を定義するプログラミングスタイル 関連するデータとロジックをまとめて、小さな入れ物に格納する「カプセル化」を重視するプログラミングスタイル を学ぶための参考図書を紹介したい。 型とカプセル化に重点を置く設計スタイルがわかってくると、それとは異なるスタイル、異なる力点を置くアプローチとの違いが具体的にわかるようになってくる。*1 *2 まずは、オブジェクト指向プログラミングの中で、型・クラス・カプセル化に力

    オブジェクト指向プログラミングを学ぶための推薦図書 - ソフトウェア設計を考える
  • あなたはDRY原則を誤認している? - Qiita

    DRY原則。 WebフレームワークRuby on Railsが基理念のひとつとして採用している有名なソフトウェア開発原則です。素晴らしい原則なのですが、最近Railsを始めた人や新卒のエンジニアさんなど、DRY原則を誤認してしまう人が非常に多い為、DRY原則に関する説明をQiitaにまとめておくことにします。 よくある間違った認識 DRY原則を誤認しているとはどういうことなのか?最も多いのが「DRYとはコードを重複させないという意味である」と認識しているケースです。当然、コードを重複させないという部分もDRYの一部ではあるのですが、これではソースコードだけに着目しているので、OAOO(Once And Only Once)原則に近い考え方になってしまいます。 OAOOとは何か 厳密な定義を書かないと斧が飛んできそうですが、長文になってしまうのであえて一言で説明すると、「コードを重複させな

    あなたはDRY原則を誤認している? - Qiita
  • James Gregory

  • 君の継承の使い方は間違っている - Qiita

    オブジェクト指向はプログラミングの基です。そして、継承はオブジェクト指向の基的な操作ですから、プログラマーは呼吸をするように継承をできなくてはならないはずです1。 しかしその割に、ダメな継承の使い方をして、スパゲッティコードになるのを実務でしばしば見かけます。 これは、継承の「良い使い方」はデザインパターンとしてリストアップされているのに、「悪い使い方」はまとまっていないせいかもしれません。そこで、自分だったらコードレビューで をつけるような「悪い継承の例」を挙げてみました2。 (この記事は個人的な経験によるもので、理論的な裏付けがあるものではありません。ご意見やオススメがあれば、コメントをお願いします。また、この記事は随時細かい表現の修正をしています。) TL;DR 継承を使ってはならない Mix-inを使ってはならない super は不吉な兆候 例外条項 インターフェースの実装(

    君の継承の使い方は間違っている - Qiita
  • [Ruby] privateとprotectedの違いとか調べた | qs Developers

    概要 Rubyのprivateメソッドやprotectedメソッドの挙動が、なんかJavaやC#でよく見るオブジェクト指向な挙動と違うので、動かしながら調べてみた。 前提 ruby 2.2.2 privateメソッド レシーバ付きで呼び出せなくなる class Hoge def initialize say_hello end private def say_hello p 'Hello!' end end hoge = Hoge.new # Hello! hoge.say_hello # エラー rubyでは、private以下のメソッドは全てprivateになり、クラス内から呼び出すことができてもレシーバ付きで呼び出すことができなくなる まぁ呼ぼうと思えば呼べる class Hoge def initialize say_hello end private def say_hello

    [Ruby] privateとprotectedの違いとか調べた | qs Developers
  • JavaやC#の常識が通用しないRubyのprivateメソッド - give IT a try

    衝撃を受けたできごと 最近Rubyを勉強しています。 JavaやC#でオブジェクト指向プログラミングの基はマスターしてるから、Rubyもそのあたりは楽勝〜!・・・と思っていたら、JavaやC#の常識が全く通用しない振る舞いに遭遇してかなり衝撃を受けました。それは、 privateメソッドはサブクラスからも呼び出せる ・・・ということです!!がーん。 たとえば、JavaやC#だと自分のクラス内でprivateメソッドが使われていない場合、不要なメソッドとして削除できます。(リフレクションを使って呼び出される可能性はここでは無視ね) しかし、Rubyでは誰かがサブクラスを作って呼び出している可能性があるので、privateメソッドを削除する場合は注意が必要です。メソッド名を変更する場合も同様ですね。 また、知らずに親クラスと同名のprivateメソッドを定義すると、予期せず親クラスの実装をオ

  • Object Calisthenics · William Durand

    Last month, I gave a talk about Object Calisthenics at Clermont’ech’s APIHour #2, a local developer group based in Clermont-Ferrand (France). I discovered Object Calisthenics almost two years ago, but I wasn’t open-minded enough to give them a try. A year ago, Guilherme Blanco and I were drinking beers in Paris. He told me that Rafael Dohms and him ported the concept of Object Calisthenics to PHP.

    Object Calisthenics · William Durand
  • Google流 JavaScript におけるクラス定義の実現方法

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

  • オブジェクト指向と関数型で副作用の扱いが違うって知ってた?(2021年版) - セカイノカタチ

    (2021/2/23 加筆訂正。文章を見直して現在の結論を追記しました。文意は変わっていません) 最近、オブジェクト指向と関数型を比べる人が多くなってきたみたいなんで、自分の考えをまとめてみます。 まず、件ですが、壮大なテーマだと思いますので、全体を網羅して書くのは難しいです。 なので、主眼を絞ります。 主眼は、ズバリ「副作用」です。 副作用とは、薬なんかだとその薬が目的とする「作用」に付随してくる好ましくない「作用」の事を指します。 例えば、風邪薬を飲むと「眠くなる」とか、タミフルを飲むと「ベランダから飛び降りたくなる」*1。 副作用によって、プログラム全体の動作が複雑になり、わかりにくくなるため、最近のプログラマー達の議論では「副作用は悪」であるということでコンセンサスが取れているようです。 関数型言語と副作用の戦い 関数型言語における、対副作用兵器は「参照透明性」です。 関数から、

    オブジェクト指向と関数型で副作用の扱いが違うって知ってた?(2021年版) - セカイノカタチ
  • 大規模Webアプリケーションにおける複雑性とアーキテクチャ設計に関する一考察 - Qiita

    Webアプリケーション開発についての知見を、自分の経験と知識をベースに整理してみようという試みです。 いわゆるサーバサイドにスコープを絞り、フロントエンドは対象外です。筆者は普段、オブジェクト指向言語で書いているので、記事でもその前提(RubyPHPPythonJavaScalaあたりを想定)になっています。 では、編をどうぞ。 ソフトウェア開発は複雑さとの戦い 『人月の神話』では、ソフトウェアの質的な困難性について4つの性質をあげている。その中で最初に出てくるのが「複雑性」である。『新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡』なんか読んでもらえると、ソフトウェアの複雑性と戦うために、人類が生み出してきた発明の数々が説明されている。 では、複雑さとは何か?もう少し掘り下げて考えてみよう。 複雑さの正体 Webアプリケーションが複雑になる

    大規模Webアプリケーションにおける複雑性とアーキテクチャ設計に関する一考察 - Qiita
  • Goはオブジェクト指向言語だろうか? | POSTD

    “オブジェクト指向”の意味を当に理解するには、この概念の始まりを振り返ることが必要です。最初のオブジェクト指向言語はSimulaという言語で、1960年代に登場しました。オブジェクト、クラス、継承とサブクラス、仮想メソッド、コルーチンやその他多くの概念を導入した言語です。おそらく最も重要なのは、データとロジックが完全に独立したものであるとする、当時では全く新しい考え方をもたらしたことでしょう。 Simula自体には馴染みがない方も多いかもしれませんが、Simulaからインスピレーションを得たとされるJavaC++、C#、Smalltalkといった言語は皆さんよくご存知でしょう。さらにそこからインスピレーションを得たものとしてObjective-CやPythonRubyJavaScriptScalaPHPPerlなど様々な言語があり、Simulaは現在使用されているポピュラーな

    Goはオブジェクト指向言語だろうか? | POSTD
  • リファクタリング: デメテルの法則(Law of Demeter, LoD) - Rails Webook

    Photo by Wonderlane | Flickr - Photo Sharing! デメテルの法則について勉強したのでまとめてみました。間違っているかもしれませんのでコメントいただけると助かります。 目次 デメテルの法則とは デメテルの法則に反している例 デメテルの法則の適用 まとめ 1. デメテルの法則とは wikipediaより引用 デメテルの法則 - Wikipedia デメテルの法則 、または最小知識の原則とは、ソフトウェアの設計、特にオブジェクト指向プログラムの設計におけるガイドラインである。 簡潔に言うと「直接の友達とだけ話すこと」と要約できる。 あるオブジェクトAは別のオブジェクトBのサービスを要求してもよい(メソッドを呼び出してもよい)が、オブジェクトAがオブジェクトBを「経由して」さらに別のオブジェクトCのサービスを要求してはならない。 これが望ましくないのは、オ

    リファクタリング: デメテルの法則(Law of Demeter, LoD) - Rails Webook