Mensekiクラス

ホームC#入門講座第3章:ものづくり技術論 > Mensekiクラス

Mensekiクラス

クラスの作り方

これまでのように、すべてMain()メソッドの中に記述する方式では、単に「円の面積を求めるプログラム」を作ることはできますが、「様々な図形の面積を求めるプログラム」を作ると極めて繁雑になります。また、そのプログラムをまた別のプログラムで使う可能性がある場合、別のプログラムから呼び出せるものとして定義しなくてはなりません。

そこで、Mensekiクラスを作ることにします。まずは、円の面積を求める機能だけを実装しましょう。

using System;

namespace NewWorld
{
	class Menseki
	{
		// フィールド
		private double r = 0;
		
		// プロパティ
		public double R 
		{
			get { return this.r; }
			set
			{
				if(value > 0)
					this.r = value;
				else
					Console.WriteLine("負の値は入力できません");
			}
		}
		
		// メソッド
		public double Circle()
		{
			return Math.Pow(this.r, 2) * Math.PI;
		
		}
	}
		
	class MainClass
	{
		public static void Main(string[] args)
		{
			Console.WriteLine("円の面積を求めます。半径を入力してください");
			double r = double.Parse(Console.ReadLine());
			
			Menseki men = new Menseki();
			men.R = r;
			
			double s = men.Circle();
			Console.WriteLine("半径{0}の円の面積は{1}です。",r ,s);
		}
	}
}

Mensekiクラスの分析

このMensekiクラスを用いたプログラムには、この章で習うことのすべてがつまっています。

これらを分けて解説し、すべて理解したところでほかの図形も定義していく、という手順になります。今回は最初の2つだけ解説します。

クラスの定義

クラスの定義は極めて簡単です。「class」キーワードに続けてクラス名を記述するだけです。

クラス直下に存在するのがすべてメンバになります。

クラスが「継承」を行うときは、「:」コロンを使って以下のように記述します。

class MainForm : System.Windows.Forms.Form

このソースコードは、ウィンドウを使う際に登場します。「MainFormクラス」は「System.Windows.Forms名前空間のFormクラス」を継承しているので、何もしなくてもFormクラスの機能を満たすことになります。

ここでは継承は関係ありません。

public/private アクセス修飾子

public や private は、クラスの外からのアクセスを許可するかどうかを示します。

public はクラスの外からのアクセスを許可し、private は許可しません。Mensekiクラスでは、フィールドrだけが private で、残りのプロパティとメソッドは public です。

フィールドrは private なので外部から「半径」を直接代入することはできません。よって、プロパティRを通じて代入します。プロパティRにはマイナスの場合をチェックする機能があるので、半径が負の面積の値を求めるというエラーを回避できます。

public や private はこのように使い分けることによって、クラスの独立自尊を保ちます。

次回は、プロパティの定義方法を学びます。