강의

멘토링

커뮤니티

BEST
Programming

/

etc. (Programming)

オブジェクト - 設計原則編

オブジェクト指向的なコードを書くために知っておくべき様々な設計原則を、動作するコードを中心に学習します。

  • eternity
oop
Software Test
software-design

学習した受講者のレビュー

受講後に得られること

  • オブジェクト指向設計原則

  • 設計原則を使ってコードの問題点を把握する方法

  • リファクタリングでコードを進化させる方法

  • テストとコード品質の関係

オブジェクト指向設計の原則、
適用する方法を理解する🤔

オブジェクトを執筆しながら地面の制約のために含めることができなかったり、十分に説明できなかったトピックが多いが、その中で最も惜しい点が設計原則に関する内容を体系的に整理できなかったということです。いくつかの設計原則は簡単に言及したり、凝集度、結合度、カプセル化の観点から原則の背景と必要性を説明したりしていますが、設計という文脈内でさまざまな原則を結びつける方法と、これらの原則を適用するために必要な具体的なガイドは収録できませんでした。

この部分を補完するために、オブジェクト - 設計原則では、純粋に設計原則に焦点を当て、コードを評価および改善するときに設計原則を適用する実用的な方法を具体的なコードレベルで説明します。講義では、設計原則に基づいてコードの問題を特定し改善する方法を学ぶことができます。その結果、講義を聞いた後は、さまざまな設計原則をまとめてメンテナンスしやすいコードを設計する方法を理解できます。

講義で扱う設計原則は次のとおりです。

  • 単一抽象化レベルの原則( Single Level of Abstraction Principle , SLAP )

  • 単一責任原則( Single Responsibility Principle , SRP )

  • オープン - 閉鎖原則 ( Open-Closed Principle , OCP )

  • リスコフ置換原則 ( Liskov Substitution Principle , LSP )

  • 依存性逆転原則( Dependency Inversion Principle , DIP )

  • インターフェイス分離の原則 Interface Segregation Principle 、ISP)

  • ディミッタの法則( Law of Demeter , LoD )

  • 尋ねないでください原則(Tell Don't Ask、TDA)

  • コマンドクエリ分離の原則( Command Query Seperation CQS

  • 重複してはいけない原則 ( Don't Repeat Yourself, DRY )


このようなことを学びます。

設計原則の概念と必要性

すべての設計原則は、設計の品質を向上させるという目的を共有しています。しかし、それぞれの設計原則の詳細な目標は異なります。したがって、設計原則を理解する出発点は、それぞれの設計原則が改善しようとする目標を理解し、現在のコードをその目標に合わせて改善するのが適切かどうかを判断することです。

講義を聞くと、各設計原則がなぜ必要であり、いつ役に立つのかを自然に理解することができます。

設計原則を適用するための具体的なガイド

設計原則の定義を理解するだけでは不十分です。設計原則の最も重要な部分は、いつ、どの設計原則を適用するかを理解し、適切な方法で設計原則を適用することです。

講義では、それぞれの設計原則を適用するときに従うことができる実用的なガイドを提示します。このガイドは、コードを評価して改善するために使用できる基準とコンパスとして利用できます。

設計原則とユニットテスト

テストを念頭に置くと、凝集度が高くなり、結合度が低くなり、変更をカプセル化できる設計が得られます。そして設計原則を考慮してコードを実装すると、テストを作成して実行することも容易になります。

講義では、それぞれの設計原則がテストにどのようなプラスの効果をもたらすかを説明することで、テストと設計原則の関係を理解できるように構成しました。

設計原則とリファクタリング

十分にシンプルで適切に保守可能な設計を得るためには、継続的なリファクタリングが不可欠です。設計原則は、コードのどこをリファクタリングし、どの目標にリファクタリングするかについてのガイダンスを提供します。

講義では、サンプルコードを設計原則の観点からリファクタリングする過程を通じて、自然に設計原則を理解できるように構成しました。

4つの具体的なサンプルコード

講義は、テキストアドベンチャーゲーム、ゲーム収益管理アプリケーション、繰り返しスケジュール管理アプリケーション、通貨管理システムの4つの例を設計原則を適用しながらリファクタリングする方法で行われます。

講義を聞いた後、さまざまな状況でさまざまな設計原則を適用することで、設計原則、リファクタリング、テスト間の関係を直感的に理解することができます。

設計原則を総合的に適用する方法

設計原則は独立して使用されません。コードを書くときは、さまざまな設計原則を包括的に適用するのが一般的です。そして、ある設計原則に従うためには、他の設計原則も一緒に考慮する必要があります。設計原則を複雑に考慮すると、さまざまな状況で設計をトレードオフする能力が向上します。

講義では、連続的なリファクタリングによってコードが改善される過程を示しながら、さまざまな設計原則を複合的に活用する方法を学習できるようになります。

オブジェクト - 基礎編との関係

オブジェクト - 設計の原則を聞くために、オブジェクト - ベースを最初に聞く必要はありません。オブジェクト基盤が責任主導の設計を使用してメンテナンス可能な設計を作成するトップダウン方式を扱う場合、オブジェクト設計原則はコードをメンテナンス可能にリファクタリングするボトムアップ方式を扱います。


2つの講義はオブジェクト指向の設計を異なる観点で扱っているので、相互に依存せずに補完的な関係を持っています。したがって、どのような順序で講義を見ても構いません。両方の講義を見た後は、オブジェクト指向の総合的な視覚を得ることができます。

この点で特別です。

📌言語に依存しないオブジェクト指向設計の原則を説明します。

📌の例はJavaで実装されていますが、講義が提供する概念はどの言語や環境にも適用できます。

📌重要な内容で満たされた1400ページ分のスライドを提供します。

📌概念を単純なテキストではなく視覚的な絵で表現し、内容を理解しやすいように構成しました。

📌リファクタリングプロセスを画像を使って渡すので、コードの変更プロセスを簡単に理解できます。

受講前の注意

学習資料

  • 1400ページ分の講義スライドがPDF形式で提供されています。

  • レッスンで使用されるサンプルコードはFitHubから入手できます。
    講義ごとに例を受け取ることが不便な方は、 統合本を受け取れば、より快適に学習することができます。

選手の知識と注意事項

  • サンプルコードはJavaで書かれているので、Javaの基本的な文法を知っておくとスムーズな学習が可能です。

  • できるだけ基本的なJDKだけを使ってレッスンを作成しましたが、いくつかの例ではJSON解析のために

    Jackson ライブラリ, インメモリレディスサポートのためのembedded-redis ライブラリ

    、Redis JavaクライアントJedisライブラリ

    、GUIアプリケーション開発にSwingフレームワークを使用する部分が含まれています。
    これらのライブラリを知らなくても、重要な原則を学ぶのに無理がないように構成しました。


  • 単体テストライブラリとしてJunitAssertJを使用してください。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • オブジェクト指向設計原則の概念と適用方法について知りたい方

  • オブジェクト指向の概念をコードに適用するのに苦労する方々

  • 良いコード設計のための基本的な原則とガイドが必要な方々

前提知識、
必要でしょうか?

  • Java 基本文法

  • オブジェクト指向言語を使ったコーディング経験

こんにちは
です。

2,427

受講生

155

受講レビュー

100

回答

5.0

講座評価

2

講座

객체지향 설계와 도메인-주도 설계에 관심이 많으며 행복한 팀과 깔끔한 코드, 존중과 협력이 훌륭한 소프트웨어를 낳는다는 믿음을 가지고 있는 평범한 개발자입니다. 개발자, 교육자, 관리자를 오가며 익힌 다양한 경험을 바탕으로 좋은 코드와 함께 좋은 프로덕트를 만들기 위해 노력하고 있습니다.

저서로는 『객체지향의 사실과 오해』와 『오브젝트』가 있고 번역서로는 『엘레강트 오브젝트』가 있으며 『만들면서 배우는 클린 아키텍처』에 감수자로 참여했습니다.

💡개인블로그 : https://eternity-object.tistory.com/

 

カリキュラム

全体

33件 ∙ (6時間 16分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

39件

5.0

39件の受講レビュー

  • haedallog님의 프로필 이미지
    haedallog

    受講レビュー 16

    平均評価 4.9

    5

    100% 受講後に作成

    初めてのレビューを書くことができて光栄です。<オブジェクト - 基礎編>に続き、すぐに<オブジェクト - 設計原則編>まで全て受講し、レビューを作成します。 講義の長所は以下の通りです。 1. 原則だけを羅列するのではなく、実際のコード例があるため、直感的に理解できます。 ㄴ SOLID原則はよく触れるので知っていると思っていましたが、講義を見て私の勘違いだったということがわかりました。 2. <オブジェクト - 基礎編>より利便性が向上しました。 ㄴ 授業資料を通じて関連レポジトリへのリンクが提供され、アクセスしやすくなっています。 ㄴ 知識共有者の方がいなくなってプレゼンテーションが見やすくなりました。 やや惜しい部分も存在します。(些細なことです。) 1. 動画ごとに音量が異なり、少し気になります。 2. 動画にエラーがある場合もあります。 3. 「〜になります。」のような口語的な話し方が整理されると、もっとすっきりすると思います。 4. 外来語の表記法が異なる場合があるのですが(例: メソッド/メソード)、この点も統一されるとよりすっきりすると思います。 <オブジェクト - 基礎編>もぜひ見ることをお勧めします。より幅広く講義を理解することができます。 オブジェクト指向設計とは何か分からないという方には、本講義を強くお勧めします。 私の周りにもたくさん勧める予定です😊😊 良い講義を企画してくださったチョ・ヨンホさんに感謝いたします。今後、私のコードが大きく変わることが期待されます。少なく働き、たくさん稼いでください😊😊😊

    • eternity
      知識共有者

      choiseonmun様、最近「オブジェクト - 基礎編」のレビューを書いてくださったのを覚えていますが、もう完走されたのですね。 完走おめでとうございます。またレビューを書いてくださり、ありがとうございます。:) 講座がお役に立てたようで何よりです。 私の顔は多くの知人の方々からの要望で外すことにしたのですが、反応が良くて…何よりです。 健康上の理由で撮影期間が長くなり、ボリュームが少しずつ違うという問題が発生しましたが、不便だと感じられる方がいらっしゃいましたら、今後「オブジェクト - 基礎編」と一緒に再収録することも検討してみます。:) 一人で講座の制作、撮影、編集をしているのですが、今回の講座は発表資料が思ったより多くなり、途中で何度もチェックしたのですが、認識できていない部分があるようです。 この点については、しっかりとチェックせずリリースしてしまったこと、大変申し訳ございません。 私も一度再度点検し、できる限り早く修正いたします。:) もしお時間のある時に、動画のエラーや資料の一貫性についてご報告いただければ、できる限り早く修正してアップデートいたします。 「少ない労働で多く稼ぐ」という言葉が心に響きますね。 講座がメンテナンスにかかるコストを減らし、コードの品質を高めるのにお役に立てば幸いです。 ありがとうございます!

  • 개발인생님의 프로필 이미지
    개발인생

    受講レビュー 2

    平均評価 5.0

    5

    100% 受講後に作成

    講義、楽しく受講させていただきました。 普段、設計原則はよく理解しているつもりでしたが、意外にも誤解していた点が多かったことに気づきました。 コードを使って説明していただいたおかげで、簡単に理解することができました。 コードをどのようにリファクタリングすべきか漠然としていましたが、講義を受けてある程度明確な基準を持つことができるようになりました。 良い講義をありがとうございました!

    • eternity
      知識共有者

      開発人生さん、受講レビューをいただきありがとうございます。 設計原則を実際のコードを記述する際に活用できるように整理しましたが、お役に立てたとのこと、何よりです。 :) 気になる点があればいつでもご質問ください! 完講おめでとうございます。素敵な一週間をお過ごしください。

  • enciel02028311님의 프로필 이미지
    enciel02028311

    受講レビュー 3

    平均評価 5.0

    5

    30% 受講後に作成

    映画を見ているかのようにわくわくしながら、設計についてのお話が続きますね〜 引き続きよく聞かせていただきます〜 良いお話ありがとうございます

    • eternity
      知識共有者

      Byung-mo Kim様、受講評価を残していただきありがとうございます。 例題を改善させながら設計原則を適用していく流れで構成しましたが、楽しくご覧いただけているようですね。 :) 後半に進むにつれて難易度が少し上がりますが、もっと面白い内容が待っていますので、ぜひ完走してください。 気になる点や修正すべき点があれば、いつでもお問い合わせください。 良い週末をお過ごしください。そして幸せな日々をお過ごしください。

  • soljie742878님의 프로필 이미지
    soljie742878

    受講レビュー 2

    平均評価 5.0

    修正済み

    5

    100% 受講後に作成

    基礎編に続き、オブジェクト指向に関しては最高の講義のようです。 概念から例まで、構成がしっかりした内容で構成されており、とても充実しています。

    • eternity
      知識共有者

      soljie74様、講座のレビューを残していただきありがとうございます。 オブジェクト - 基礎編でオブジェクト指向的なコードを記述する方法を説明したとすれば、オブジェクト - 設計原則編ではオブジェクト指向的な設計に改善できる方法を説明しようと努めましたが、お役に立てたとのこと、幸いです。 気になる点や修正する点があれば、いつでもお問い合わせください。 コース修了おめでとうございます。良い週末をお過ごしください!

  • chrispark님의 프로필 이미지
    chrispark

    受講レビュー 6

    平均評価 5.0

    5

    100% 受講後に作成

    オブジェクト指向開発の核心と基礎に関する名品講義です〜 この原則を知って開発する時と知らずに開発する時は天と地の差と言えるでしょう。 このような原則を知らずに開発中でしたら、自分がスパゲッティコードを書いているということを後からでも分かるようになるでしょう〜!! :) 皆さん、メンテナンスしやすいコードを作るために今日もファイティングです〜 😊

    • eternity
      知識共有者

      クリスパクさん、受講レビューまで残していただき、ありがとうございます。 おっしゃる通り、多くの方が設計原則に基づいてきれいなコードを書けるようになっていただければと思います。 講義にご満足いただき、本当に本当にありがとうございます。次の講義も一生懸命準備いたします! 素敵な週末をお過ごしください。😊

期間限定セール

¥10,232

24%

¥13,584

eternityの他の講座

知識共有者の他の講座を見てみましょう!

似ている講座

同じ分野の他の講座を見てみましょう!