| At line 9 changed 3 lines |
| 正解は「データ構造が異なる」です。\\ |
| クラスの根本は、データ構造(構造体)とそれを扱う処理(関数orメソッド)を一体化させたものです。 |
| データ構造というのは属性(プロパティ)の集まりのことで、処理というのはそれらの属性の値を読んだり編集するために存在します。\\ |
| 正解は「__3.データ構造が異なる__」です。\\ |
| クラスの根本は、 |
| *データ構造(構造体)とそれを扱う処理(関数orメソッド)を一体化させたもの |
| です。\\ |
| データ構造というのは属性(プロパティ)の集まりのことで、それら属性の値を読んだり編集したりするために処理は存在します。\\ |
| At line 13 changed one line |
| 次の図はSunのJava入門のページに書いてあるものです。[What Is an Object?|http://download.oracle.com/javase/tutorial/java/concepts/object.html]\\ |
| 次の図はOracleのJava入門のページに書いてあるものです。出典: [What Is an Object?|http://download.oracle.com/javase/tutorial/java/concepts/object.html]\\ |
| At line 17 changed 4 lines |
| この図からも解るように、データ構造を持たないクラスはそもそもクラスとして機能しません。データ構造と処理の一体化というクラスの原理に反するからです。\\ |
| ですが、データ構造を持たないクラスをJavaなどの言語では定義出来てしまうため、単なる関数を定義しただけのclassをクラスと勘違いしている設計者/プログラマーが大勢います。 |
| public staticなメソッドのみのクラスがそれです%%sup ※/%。ユーティリティクラスとも呼ばれます。\\ |
| ※正確に言うと、インスタンス変数にもクラス変数にもアクセスしないメソッドだけのクラスです。 |
| この図からも解るように、 |
| *データ構造を持たないクラスはそもそもクラスとして機能しない |
| のです。データ構造と処理の一体化というクラスの原理に反するからです。\\ |
|
| At line 23 changed one line |
| {{{手続き型の言語においても共通するデータ構造(構造体)をまず最初に決めます。}}} |
| {{{手続き型の言語においても共通するデータ構造(構造体)を最初に決めます。}}} |
| At line 39 changed 4 lines |
| 上記で見たように、クラスの最初に必要なのは共通化されたデータ構造です。\\ |
| 共通関数というものを開発したことのある人は解ると思いますが、関数(処理)を共通化するためには受け渡されるパラメータを共通化する必要があります。パラメータが複数ある場合、それらをひとかたまりにまとめるとデータ構造(構造体)になります。\\ |
| つまり手続き型の言語においても、処理を共通化するためにはまず最初にデータ構造を共通化していたのです。\\ |
| クラスにおいては、共通化されたデータ構造が処理も持てるようになっています。これがオブジェクト指向の原理です。 |
| 上記で見たように、クラスの最初に必要なのは |
| *共通化されたデータ構造 |
| です。\\ |
| 共通関数というものを開発したことのある人は解ると思いますが、 |
| *関数(処理)を共通化するためには受け渡されるパラメータをまず共通化する |
| 必要があります。パラメータが複数ある場合、それらをひとかたまりにまとめるとデータ構造(構造体)になります。\\ |
| つまり手続き型の言語においても、 |
| *処理を共通化する前にデータ構造を共通化 |
| していたのです。クラスにおいては、 |
| *共通化されたデータ構造が処理も持てる |
| ようになっています。 |
| *そのクラスを基にした個体(インスタンスあるいはオブジェクト)をメモリ上に複数生成 |
| 出来ます。これがオブジェクト指向の原理です。 |
| At line 53 changed one line |
| またプログラマー達がコードのみで考える状態から脱却するため、早いうちからクラス図の読み書きを修得するよう指導することも重要です。 |
| またプログラマー達がコードのみで考える状態から脱却するため、早いうちからクラス図の読み書きを修得するよう指導することも重要です。\\ |
| \\ |
| 次: [責務はクラスではない] |