作成日 2007/4/22
最終更新日 2019/12/30
[ Japanese | English ]

オブジェクト指向についてまとめたもの

 このコンテンツは、だるまがオブジェクト指向について勉強したことをまとめたものです。 エクセルVBAで(強引に?)オブジェクト指向プログラミングをやってみたいという人だけでなく、情報処理技術者試験UMTP試験の取得を考えている人、IT業界の会社に入り、If文やFor文など(構造化プログラミング)はわかったけど、オブジェクト指向がさっぱり理解できないという人にも参考になるように作成してあります。


1.はじめに
2.オブジェクト指向で設計する際に頭に入れた方が良いと思ったこと(基礎的な内容)
3.オブジェクト指向で設計する際に頭に入れた方が良いと思ったこと(より良い設計をするための内容)
4.オブジェクト指向プログラミングをする際に頭に入れた方が良いと思ったこと
5.VBAでオブジェクト指向プログラミングをする際に頭に入れた方が良いと思ったこと

※オブジェクト指向を理解したか確認したい人は、「オブジェクト指向関連の確認テスト」に問題を作成しましたから、チャレンジしてみてください。


1.はじめに

このコンテンツの開設理由
 …オブジェクト指向というと、カプセル化、継承、多態性の3つだ…しかし、もし、オブジェクト指向を今から勉強する人は上記の3つについてはいったん忘れてほしいです。

2.オブジェクト指向で設計する際に頭に入れた方が良いと思ったこと(基礎的な内容)

 オブジェクト指向を理解するにはまず、その前提知識となるデータ中心、凝集度、結合度などについて確実に理解する必要があります。これの理解なくしてオブジェクト指向の理解はありえません。
まず、1.クラスとオブジェクトから9.カプセル化と属性と操作にかけて、それらについてじっくり説明します。
その後、オブジェクト指向で設計する上で最低限必要となる知識についての簡単な説明(もしくは紹介)をします。
オブジェクト指向を勉強する上では、「何が良いの?(オブジェクト指向のメリットって何?)」という疑問が沸いてくるのが当然だと思います、それについても説明します。
  1. クラスとオブジェクト
    …クラスとオブジェクトについて具体的に例を挙げて説明します。こんなものなんだくらいに思っていただけれたと思います。

  2. インスタンススコープの属性とクラススコープの属性
    …インスタンススコープの属性とクラススコープの属性について特徴、相違点、使用例を説明します。

  3. インスタンススコープの操作とクラススコープの操作
    …インスタンススコープの操作とクラススコープの操作について特徴、相違点、使用例を説明します。

  4. オブジェクト指向とモジュールの凝集度、モジュールの結合度
    …オブジェクト指向を理解するうえで、凝集度と結合度の理解は欠かせません。ここではその2つについて説明します。

  5. クラス図とER図とクラスの抽出
    …このページではオブジェクト指向について難しいと言われるクラスの抽出についてER図と対比しながらその方法を説明します。

  6. クラスの正規化
    …クラスの抽出について、クラスの正規化(ER図における正規化とほぼ同じ考え)を考えるとスムーズに行く場合があります。

  7. 関連
    …意味の良くわからないわりに高頻度で出てくる「関連」について説明します。関連は簡単には集約と同じように考えてよいというお話です。

  8. POA、DOAとオブジェクト指向
    …オブジェクト指向設計を行うためにはそれ以前の考えの何が悪く、何を解決しているのかを把握しておかないと同じ過ちを犯してしまいます。このページではそれについて説明しています。

  9. カプセル化と属性と操作
    …オブジェクト指向の3大要素の1つであるカプセル化のメリット(正確には情報隠蔽+カプセル化のメリット)を具体的に説明します。

  10. 多態性
    …オブジェクト指向の3大要素の1つである多態性のメリット・デメリット、使用場面について説明します。

  11. 継承
    …オブジェクト指向の3大要素の1つである継承について使用上の注意です。継承はデメリットをしっかり把握した上で使いましょうというお話です。

  12. 依存
    …意味の良くわからないわりに高頻度で出てくる「依存」についてその意味と設計時の方針などについて説明しています。

  13. 例外が発生したときの処理方針
    …例外(何らかのエラーなど)はオブジェクト指向とは直接は関係ないかもしれませんが、例外は設計時にしっかり設計すべきです。

  14. オブジェクト指向とUML
    …オブジェクト指向設計をするときの表記方法であるUMLについて紹介しています。

  15. オブジェクト指向の限界
    …オブジェクト指向にもできない設計というのが実はあります。オブジェクト指向で何ができないか?は設計する上で重要です。

  16. オブジェクト指向関連以外の設計について
    …オブジェクト指向設計だけ行えばプログラムの設計が完了するかといえば、そんなことはありません。ここでは他にどのような設計が必要かを説明しています。

  17. オブジェクト指向のメリットとデメリット
    …メリットがない物に対して勉強できないと思いますし、会社の場合、上司に理解してもらえないと思います。ということで、ここではオブジェクト指向のメリットとデメリットをまとめています。


3.オブジェクト指向で設計する際に頭に入れた方が良いと思ったこと(より良い設計をするための内容)

 ここではオブジェクト指向でより良い設計をするために必要な知識の紹介をします。
うまく設計できない、設計できるけどもっと低コストで高品質なものをつくるにあったほうがよいと思われる知識や、オブジェクト指向を他の人に教える必要であると思われる知識の紹介です。
具体的には、オブジェクト指向設計でよく使用されるパターン(デザインパターンなど)の紹介と個人的に意識した方が良いと思った内容があります。
  1. オブジェクト指向設計とGRASPパターン
    …GRASPパターンを紹介しています。オブジェクト指向についての基礎概念に関しての法則です。

  2. エンティティクラス、バウンダリクラス、コントロールクラス、その他のクラス
    …BCEパターンの説明です。オブジェクト指向で設計するときの指針としてください。

  3. デザインパターンとアンチパターン
    …オブジェクト指向設計でデザインパターンとアンチパターンという言葉を聞くことがあると思います。ここではそれらを勉強するメリットや紹介などをしています。

  4. オブジェクト指向設計と試験性
    …設計する際には凝集度や結合度も重要ですが、試験性についても考慮したほうがいいです。

  5. JavaのAPIなどを参考にしてクラス設計をする
    …設計時にクラス構成、クラス名やメソッド名の命名に困ったことはないでしょうか?そのような時は他を参考にするという手があります。

  6. オブジェクト指向に関連した資格を受験する
    …資格の受験にはお金がかかりますが、しかしメリットもあります。ここではそのメリットを説明し、その後、オブジェクト指向に関する資格を紹介してます。

  7. ソフトウェアメトリクスを意識する
    …ソフトウェアの品質というのはいろんな点から測定できるのですが、それらを意識した上で設計した方がうまく行くというお話しです。


4.オブジェクト指向プログラミングをする際に頭に入れた方が良いと思ったこと

 オブジェクト指向設計に関して理解したら、次はオブジェクト指向プログラミングです(もちろん逆の流れでも問題ありません。むしろその方が自然かも)。
 ここではまず、データがどのように扱われているかを、その概念をしっかり理解する必要があります。
これについては、1.オブジェクトの生成と動的なメモリの確保、オブジェクトへの参照とポインタから6.配列で説明しています。また、そのために特有の概念・用語(自分自身への参照シャローコピーとディープコピー)などについて理解する必要がありますので、 それについても説明しています。
  1. オブジェクトの生成と動的なメモリの確保、オブジェクトへの参照とポインタ
    …まずはオブジェクトがどのように扱われているのかを理解する必要があります。

  2. 自分自身への参照
    …自分自身への参照についての説明です。そもそも「自分自身」って何なのか?そこから説明しています。

  3. 参照型の代入操作、値渡しで関数の引数に渡した場合の動作
    …メソッドは頻繁に定義、使用するので理解しておく必要があります。オブジェクトがどのように扱われているかを理解していれば、そんなに難しくはありません。

  4. オブジェクトが破棄されるタイミング
    …オブジェクトが破棄されるタイミングについてです。これも、オブジェクトがどのように扱われているかを理解していれば、そんなに難しくはありません。

  5. シャローコピーとディープコピー
    …シャローコピーはオブジェクト指向特有の概念と言う気がします。シャローコピーの考えはいろんなところで当たり前のように使うので理解しておく必要があります。

  6. 配列
    …使用頻度の高い固定長配列、可変長配列、連想配列について説明しています。しかし、構造化プログラミングでも配列はありますが…。実は、オブジェクト指向プログラミングではシャローコピーの考えも重要なのです。

  7. オブジェクトのシリアライズとデシリアライズ
    …たぶん、一度は聞いたことがあると思うシリアライズとでシリアライズについての説明です。

  8. イミュータブルオブジェクト
  9. …特にJavaにおいて、頻出度の高いイミュータブルオブジェクトについての説明です。イミュータブルオブジェクトがどのようなもので、どのようなメリットがあるのかを説明しています。

  10. ダウンキャスト
  11. …キャストはオブジェクト指向プログラミングでは一度は聞く単語だと思います。ここではそのキャストについて説明しています。

  12. 例外の伝播の方法
  13. …例外(エラー)が発生したときどのようにするか?これはオブジェクト指向プログラミングとは離れるのですが、重要であるため説明しています。

  14. 静的テストを行う
  15. …より低コストで高品質のプログラムを作るうえで静的テストは欠かせません。ここでは静的テストとは何か、どのようなテストをするのか、ツールの紹介と最後に静的テストのメリットについて説明しています。


5.VBAでオブジェクト指向プログラミングをする際に頭に入れた方が良いと思ったこと

 VBAはオブジェクト指向言語ではないと言われています。
 もし、(強引に?)VBAでオブジェクト指向プログラミングを行うのであれば、具体的に何がオブジェクト指向ではないのかを理解した上で設計を行っておく必要があります。
 ここでは、これに関する内容や、VBAでオブジェクト指向プログラミングをするのに理解しなければならないことを説明します。
  1. オブジェクト指向プログラミングに関して、VBAで出来ないこと
    …VBAでオブジェクト指向プログラミングを行うのであれば、具体的に何がオブジェクト指向ではないのかを理解した上で設計を行っておく必要があります。

  2. Excelライブラリを理解する
    …VBAでプログラミングするには当然、使用するライブラリについて知っておく必要があります。

  3. 標準モジュール、クラスモジュール、ユーザーフォーム
    …VBAには標準モジュール、クラスモジュール、ユーザーフォームの3種類のモジュールがありますが、VBAでプログラミングをするのであれば、それらの役割を把握しておく必要があります。

Prev Up Next  Top

このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。

Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS X は米国Apple Computer,Inc.の登録商標または商標です。
OMG、UML、Unified Modeling Languageは、Object Management Groupの商標または登録商標です。
UMTP は特定非営利活動法人UML モデリング推進協議会の登録商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

このホームページの作成者はこれらの会社とはいっさい関係がありません。