|
■講義一覧
1. 概要 2. クラスの宣言/定義 3. クラスの実装(インスタンス化) 4. UML(unified modeling language)定義
5. アクセス制限 6. クラスと構造体の違い
■1.概要
・オブジェクト指向型であるC++言語にとって、クラス(class)の考え方がメインになってきます。
・操作対象となるものを1つのクラス単位で考え、設計していくことがオブジェクト指向型プログラミング
であり、クラスの定義、クラスの隠蔽機能、クラスの継承機能など主な機能になります。
また、クラス単位にモジュールを作成することで、修正箇所が局所化することができ、
修正モジュールのみ入れ替えることで対応できる為、大規模な開発に適していると言われています。
一覧へ
■2.クラスの宣言/定義
・クラスの宣言は、"class"を使用します。
・基本的にクラスは、クラス内で使用する変数とそれらの変数を使用する関数から成り立ちます。
・定義する場合、"::"(スコープ演算子)を使用し、クラス名::メソッド名で定義します。
【例】
// Sampleクラス宣言
class Sample
{
//J メンバ変数の定義 START
private:
int x;
int y;
//J メンバ変数の定義 END
//J メソッドの定義 START
public:
void Set(int a, int b);
int GetX();
int GetY();
//J メソッドの定義 END
};
//J 各メソッドの定義 Start
void Sample::Set(int a, int b ){
x = a;
y = b;
}
void Sample::GetX(){
return x;
}
void Sample::GetY(){
return y;
}
//J メソッドの定義 END
|
一覧へ
■3.クラスの実装(インスタンス化)
・クラス名を定義することで、オブジェクトが生成されます。
・JAVAの場合、new演算子で定義することでオブジェクトが生成されるので注意が必要。
※定義だけだと、単なる変数の定義に過ぎない!
【例】
// クラスの実装
int main() {
//J クラスの定義
Sample sam1;
sam1.set( 1, 3 );
printf("sam1.x = %d\n",sam1.GetX());
printf("sam1.y = %d\n",sam1.GetY());
return 0;
}
|
一覧へ
■4.UML(unified modeling language)定義
・UMLとは統一モデリング言語と言われ、オブジェクト指向のシステム開発において、
成果を定義し、視覚化、文章化するために用いられる言語です。
| Sample |
クラス名 |
| x |
変数名1 |
| y |
変数名2 |
| set() |
メソッド名1 |
| GetX() |
メソッド名2 |
| GetY() |
メソッド名3 |
一覧へ
■5.アクセス制限
・クラス単位でデータ(変数)を扱うため、他から不正なアクセスを防ぐ役割もあります。
・アクセス制限のキーワードとして、以下の示す。【アクセス権】
| public |
すべてのクラスからアクセスが可能 |
| protected |
クラスの派生クラスからのみアクセス可能 |
| private |
クラスのオブジェクトからのみアクセス可能 |
一覧へ
■6.構造体とクラスの違い
・一般的に構造体では、メンバー変数で構成されますが、
クラスでは、メンバー変数とメンバー関数から構成されているという面で異なります。
・C++言語において、構造体との違いの一つとして、デフォルトアクセス制限が挙げられます。
※C#言語の場合は、構造体は値型、クラスは参照型となり、メモリの持ち方が異なるため注意が必要。
・C++言語の場合、クラスはデフォルトでprivate(アクセス不可)であり、
構造体はデフォルトでpublic(アクセス可)になっています。
一覧へ
|