C#でのクラスの使い方。
こんにちは。みなみんです。
C#入門シリーズの続きです。
今回はC#でクラスの基本的な使い方を記事にしました。
目次
クラス概念
簡単に言うと、変数・関数の集まりの事です。設計図などと例えられます。
バイトや就職で「履歴書」を書きますよね。そこに個人情報を記録していきます。
個人情報といえば、氏名・年齢・生年月日・住所、、、などが挙げられます。
人によって、その情報の詳細は異なるが履歴書の様式自体は全て一緒ですよね。コンビニ等で売られている10枚入りの「履歴書」で10枚とも全て、様式は全く一緒ですよね。一度作った様式を10枚分コピーしているのですね。
「履歴書」の様式という物を一度作ってしまえば、何枚でもコピーができるんですよね。
クラスの考え方も全く一緒です。クラスは履歴書でいう「様式」の部分なんですね。骨組みの部分というか、雛形ですかね。
一度、定義してしまえば何度でも使いまわしが可能となる。
例えば、個人情報を記録し保存するソフトウェアがあるとしよう。
それぞれの情報の項目の変数を作る。
string name = "Minamin";
int age = 20;
string country = "Japan";
......
一人分の個人情報だけでも相当な変数の数を作らされます。配列を用いるのも手だが、それぞれの配列変数のインデックスがズレてしまったりする等と使い勝手が悪い。
以下の例では3人分の個人情報を記録している変数。
string names = {"Minamin","Hatena","blog"} ;
int ages = {20,30,50}; //30歳と50歳が逆に記録してしまったミス等
string[] county = {"Japan","Japan"}
//これは一人だけ未記入していない。これでは、どちらの名前の人の出身地か分からなくなってしまう。
そこで、クラスの出番です。
クラスの利点・メリット
- 共通する変数はまとめる事ができる。(抽象化)
- 一度作成したクラスは使いまわす事ができ、個々に情報・データを保持する事が出来る。(インスタンス化、具体化)
- オリジナルのクラスから変数や機能を追加し、改良する事が出来る。(継承)
クラスの定義・利用
早速、個人情報を記録・保持する事ができるようなクラスを作ってみます。
作ってみたクラスのサンプルコードを紹介します。(Gist)
上記のサンプルのように、ひな形をコピーする事を「インスタンス化」といいます。
英語の「Instance」(事実、実例)から来ています。要するに、色んな情報・データを入れる事によって「事実」を作っているという事ですね。
そして、サンプルでは一つ一つ変数を宣言してインスタンス化をしているが、配列の変数でもインスタンス化は可能です。
最後に、クラスの定義の構文をおさらいしておきましょう。
class クラス名 {
メンバ変数;
メンバ関数;......
}
クラス変数・クラス関数
先ほどのサンプルでは、変数だけで定義をしていた。だが、クラスは変数だけでなく、関数も定義する事ができるんですね。
例として、個人のテスト成績を記録するクラスを作成してみましょう。
そして、作成してみたサンプルを紹介します。(Gist)
クラス内で定義されている、変数・関数の事を「メンバ変数」・「メンバ関数」と呼びます。
メンバにアクセス
サンプルのように、
Points[0].Name = "Minamin";
と書いているものを「インデックス0のPoints変数の名前にアクセスする」と呼んでます。
インスタンス化された変数・関数にアクセスするには「.」を使います。
インスタンス変数名.メンバ変数;
インスタンス変数名.メンバ関数();
サンプルで登場する例として、
Points[0].Name; //>> Minamin
Points[1].Name; //>> Hatena
Points[0].SUM();
Points[1].SUM();
アクセスレベルについて
今までのコードサンプルや今回紹介したコードの中で「public」というキーワードを目にした事があるだろう。
これには意味がある。
public修飾子
とりあえずサンプルを見てもらいましょう。(Gist)
上記のサンプルのように、クラスの定義で「public」を付加した変数や関数は、インスタンス化してメンバ変数やメンバ関数にアクセスする事が出来るんですね。
private修飾子
これも同様にサンプルを見てもらいましょう。(Gist)
上記のように、「private」を付加した変数はインスタンスからアクセスする事ができません。エラーとなっています。
これなら、個人情報を晒す事は無くなりますね。
インスタンスからアクセスされて欲しくない変数・関数には「private」を付加してあげましょう。
次回は、登録・ログインができるコンソールアプリを作ってみる記事を上げる予定です。
この記事に誤りがあるかもしれません。その辺はご了承ください。
本記事で紹介されている方法・手法はあくまでも個人的なものです。