初心者のためのC#プログラミング本格入門42 - オブジェクト指向プログラミングをしよう
数回にわたって、「プロパティ」、「メソッド」、「コンストラクタ」の三つの文法について学びました。しかし、個々に学んでも身につきません。そこで、この3つの文法の使用し、今まで作成してきた「自由に計算式を指定して計算するプログラム」を改良します。
先ずは、オブジェクト指向プログラミングをする前のMainメソッドを見てみましょう。
static void Main()
{
string end = "";
do
{
//計算式を入力
string message = "計算式を入力して下さい";
string inputValue = InputValue( message );
//計算式を解析して値と符号を得る
System.Tuple<bool, char, int[], int>
result = AnalyzeExpression( inputValue );
int count = result.Item4;
if ( result.Item1 == false | count <= 1 )
{
string error = "計算式が間違っています。";
end = "Error";
System.Console.WriteLine( error );
continue;
}
char sign = result.Item2;
int[] values = result.Item3;
//計算して結果を表示
int resultValue = Calculation( values, sign, count );
ShowResult( inputValue, resultValue );
System.Console.WriteLine( "" );
end = GetEnd();
} while ( end != "" );
}
このサンプルプログラムは、Item4などといった作成者にしかわからないものが使用されていて非常に分かり辛いです。この手のプログラムは、作成者すらも時間がたてば、一目で理解できなくなってしまいます。オブジェクト指向プログラミングをすると、理解しやすいプログラムになります。
static void Main()
{
string end = "";
do
{
//計算式を入力
string message = "計算式を入力して下さい";
string inputValue = InputValue( message );
//計算式を解析して値と符号を得る
Analyzer analyzer = new Analyzer();
analyzer.AnalyzeExpression( inputValue );
int count = analyzer.Count;
if ( analyzer.Success == false | count <= 1 )
{
string error = "計算式が間違っています。";
end = "Error";
System.Console.WriteLine( error );
continue;
}
char sign = analyzer.Sign;
int[] values = analyzer.Values;
//計算して結果を表示
int resultValue = Calculation( values, sign, count );
ShowResult( inputValue, resultValue );
System.Console.WriteLine( "" );
end = GetEnd();
} while ( end != "" );
}
このプログラムは、Analyzerクラスに各種プロパティを定義し、Item4といったプロパティを置き変えただけです。これだけでも随分と読みやすくなります。さらに、読みやすくするために用意した変数が不要になり、より簡潔に記述できます。
static void Main()
{
string end = "";
do
{
//計算式を入力
string message = "計算式を入力して下さい";
string inputValue = InputValue( message );
//計算式を解析して値と符号を得る
Analyzer analyzer = new Analyzer();
analyzer.AnalyzeExpression( inputValue );
if ( analyzer.Success == false | analyzer.Count <= 1 )
{
string error = "計算式が間違っています。";
end = "Error";
System.Console.WriteLine( error );
continue;
}
//計算して結果を表示
int resultValue = Calculation(
analyzer.Values, analyzer.Sign, analyzer.Count );
ShowResult( inputValue, resultValue );
System.Console.WriteLine( "" );
end = GetEnd();
} while ( end != "" );
}
以上の様に、オブジェクト指向プログラミングを行うと、人間が読みやすいプログラムを記述できます。もちろん、オブジェクト指向プログラミングの効用はこれだけではありません。さらに便利な構文をどんどん紹介していきます。お楽しみに♪