トップ > コンピュータ > プログラム > C#プログラミングレッスン

C#での .NETプログラミングを易しく丁寧に解説するメールマガジンです。「C#プログラミング・レッスン」で、.NETプログラミングをマスターしましょう。 

RSS

メルマガの登録・解除

登録した方には、メルマ!からオフィシャルメルマガ(無料)をお届けします。

【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/            
│             よろしかったらアクセスしてみてください!             │
└─────────────────────────────────┘


| 次の記事>> | 最新の記事

ブックマークに登録する

TwitterでつぶやくLismeトピックスに追加するdel.icio.usに追加Buzzurlにブックマークニフティクリップに追加ライブドアクリップに追加Yahoo!ブックマークに登録記事をEvernoteへクリップ
My Yahoo!に追加Add to Google

規約に同意してこのメルマガに登録/解除する

登録した方には、メルマ!からオフィシャルメルマガ(無料)をお届けします。

この記事へのコメント

コメントを書く


上の画像で表示されている文字を半角英数で入力してください。

コメントの投稿時は投稿者規約への同意が必要です。

  1. コメントはありません。

このメルマガもおすすめ

  1. Office & VBA パーフェクトマスター

    最終発行日:
    2012/05/16
    読者数:
    5859人

    Excel・Access・Word等の今さら聞けない「疑問」、今すぐ知りたい「困った」、たちまち解決!のmoug(モーグ)がお送りする、関数初心者からVBA手練の方への+1テクニックメールマガジン!読めば納得の情報マガジンです。

  2. ネットワークエンジニア

    最終発行日:
    2012/05/04
    読者数:
    348人

    ネットワークエンジニアはコンピュータでソフトウェアを開発する時、参考にできるC・VC言語の情報マガジンす。

  3. 知って得する!パソコン知識

    最終発行日:
    2012/05/14
    読者数:
    7929人

    パソコンに関する操作、裏技、知識を一日一配信一解説します。毎日購読すればあなたもパソ通です。

  4. 全部フリーソフト!!

    最終発行日:
    2012/05/15
    読者数:
    5191人

    ネット上にはこんなに便利なソフトがいっぱい。仕事にも、遊びにも、あると絶対にお得で楽しいソフトを1つずつご紹介します。

  5. VisualBasic エンジニア

    最終発行日:
    2012/05/04
    読者数:
    339人

    VisualBasic エンジニアはコンピュータでソフトウェア開発をするためにVisualBasic 言語・Basic 言語・スクリプトなど、様々な言語を題材に多くの使用方法・プログラミングテクニックをお送りするマガジンです。

発行者プロフィール

Gushwell

Gushwell

http://gushwell.ifdef.jp/

Microsoft MVP for Visual C# を7年連続で受賞しています。

過去の発行記事