【C#プログラミングレッスン】 No.020
発行日:12/26
┏━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━┳━┳━┓
┃☆┃ C#プログラミングレッスン ┃_┃□┃×┃
┣━┻━━━━━━━━━━━━━━━━━━━━━━━━━┻━┻━┻━┫
┃クラスの定義と利用 No.020 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
みなさん、こん○○は。今年も残り僅かとなってしまいましたね。この一年を
振り返ってみると、今年ほど災害の多い年はなかったのでは無いかと思われる
ほど災害が多かったように思います。
被害に遭われた方に対し、心よりお見舞い申し上げます。来年は平穏な一年で
あることを祈っています。
さて、今回から装いも新たに、オブジェクト指向プログラミングの解説を開始
します。まずは、プログラミングという視点からクラスとは何かについての解
説から始めたいと思います。
■──────────────────────────────────
■ はじめに
あなたのプログラムで、日付を扱う必要が出てきたとします。もちろん、.NET
Framework には、 DateTime 型が存在しますので、通常は、DateTime型を使う
ことになるのですが、 .NET Framework に、DateTime型が存在しないと仮定し
ましょう。
いままでの、知識からだと、
int year,month,day;
と定義し、処理をすることになります。では、一度に複数の日付を扱う必要が
出てきた時にはどうでしょうか。
int year, month, day;
int year2, month2, day2;
int year3, month3, day3;
...
でしょうか、それとも、
int[] year = new int[5];
int[] month = new int[5];
int[] day = new int[5];
でしょうか。たしかに、これでも処理する事は可能です。しかし本来ならば、
year, month, day は3つが揃って日付としての意味があるはずです。 year,
month, dayw を別々のものとして扱わなくてはならないのでは、日付という概
念を上手くプログラムコードに反映させることができません。
これでは、プログラムが複雑になり、可読性が落ち、修正も困難になってしま
います。プログラムで「日付という概念」を扱えるようになれば、プログラム
も簡単に書けるようになります。
■──────────────────────────────────
■ クラスの定義
そこでクラスの登場です。クラスを定義することで、日付という概念をプログ
ラムで扱えるようになります。
class MyDate {
public int year;
public int month;
public int day;
}
これで、MyDateクラスが定義できました。
クラスを定義するには、 class の後に、 クラスの名前を記述し、 その後の
{ と } の中にクラスの中身を書きます。
この例では、 MyDateという名前のクラスには、year, month, day というデー
タが存在することになります。このデータのことを「フィール」ドと呼びます。
※ もちろん、 これでは、クラスとして不完全なのですが、クラスの第一歩と
いうことで良しとしましょう。
■──────────────────────────────────
■ クラスの利用
このクラスを利用する例を以下に示します。
1:using System;
2:
3:class MyDate {
4: public int year;
5: public int month;
6: public int day;
7:}
8:
9:class Program {
10: static void Main(string[] args) {
11: MyDate date;
12: date = new MyDate();
13: date.year = 2004;
14: date.month = 12;
15: date.day = 27;
16: PrintDate(date);
17:
18: }
19: private static void PrintDate(MyDate date) {
20: Console.WriteLine("{0}年{1}月{2}日",
21: date.year, date.month, date.day);
22: }
23:}
Main関数の中で、
MyDate date;
と書いていますが、dateという変数名で、MyDateクラスの変数を宣言していま
す。
int num;
と同じ構文ですね。プログラミング言語的には、MyDateはint,doubleなどと同
様に「型」という扱いになりますので、今後は、MyDate型と呼ぶこともありま
す。
しかし、これだけでは、date 変数は使えません。date変数を使うには、
date = new MyDate();
と書く必要があります。 これをインスタンスの生成と言います。この new 演
算子で、コンピュータのメモリのどこかに、MyDate型の領域(year,month,day
の領域)が確保されます。プログラミング的には、「インスタンス」とは、メ
モリ上に配置されたデータの塊のことです。なお、
new MyDate();
だけでは、意味がありません。
date = new MyDate();
とすることで、確保したメモリと、変数 date を結び付けてやる必要がありま
す。図で表すと、こんな感じですね。
date
┌───┐ ┌───────────┐
│ ──┼──→│year, month, day │
└───┘ └───────────┘
なお、
MyDate date = new MyDate();
と、変数の宣言と、インスタンスの生成を1行に書くこともできます。
■──────────────────────────────────
■ フィールドへのアクセス
クラス内に定義されたフィールドへアクセスするには、
date.year = 2004;
date.month = 12;
date.day = 24;
のように、<変数名> と <フィールド名> をドット(.)でつなげます。
■──────────────────────────────────
■ インスタンスを引数に受け渡す
date 変数は、通常の変数と同様、関数の引数とすることができます。
PrintDate(date);
で、PrintDateに date 変数を渡しています。
PrintDate関数の中でも、 同様に、<変数名> と <フィールド名> をドット(.)
でつなげて、各フィールドにアクセスしています。
======================================================================
◆次号のお知らせ◆
まことに勝手ではありますが、年末年始の期間は、当メルマガの発行はお休
みさせていただきます。次号は、来年1月10日頃を予定しています。
┌─┬─────────────────────────┬─┬─┬─┐
│☆│ C#プログラミングレッスン │_│□│×│
├─┴─────────────────────────┴─┴─┴─┤
│当メールマガジンへのご意見、ご要望、ご質問は、gushwell@sky.117.cx │
│までお願いいたします。 │
│ Published by GushWell │
│ Copyright (C) 2004/08-2004/12 │
│-------------------- GushWell's Page ---------------------------- │
│ 窓際プログラマーの独り言 :http://blog.livedoor.jp/gushwell/ │
│ 窓際プログラマーの読書三昧:http://gushwell.jugem.jp/ │
│ よろしかったらアクセスしてみてください! │
└─────────────────────────────────┘
最新の記事
このメルマガもおすすめ
-
Office & VBA パーフェクトマスター
- 最終発行日:
- 2012/05/16
- 読者数:
- 5859人
Excel・Access・Word等の今さら聞けない「疑問」、今すぐ知りたい「困った」、たちまち解決!のmoug(モーグ)がお送りする、関数初心者からVBA手練の方への+1テクニックメールマガジン!読めば納得の情報マガジンです。
-
ネットワークエンジニア
- 最終発行日:
- 2012/05/04
- 読者数:
- 348人
ネットワークエンジニアはコンピュータでソフトウェアを開発する時、参考にできるC・VC言語の情報マガジンす。
-
知って得する!パソコン知識
- 最終発行日:
- 2012/05/14
- 読者数:
- 7929人
パソコンに関する操作、裏技、知識を一日一配信一解説します。毎日購読すればあなたもパソ通です。
-
全部フリーソフト!!
- 最終発行日:
- 2012/05/15
- 読者数:
- 5191人
ネット上にはこんなに便利なソフトがいっぱい。仕事にも、遊びにも、あると絶対にお得で楽しいソフトを1つずつご紹介します。
-
VisualBasic エンジニア
- 最終発行日:
- 2012/05/04
- 読者数:
- 339人
VisualBasic エンジニアはコンピュータでソフトウェア開発をするためにVisualBasic 言語・Basic 言語・スクリプトなど、様々な言語を題材に多くの使用方法・プログラミングテクニックをお送りするマガジンです。



