C# BMI計算 で基礎から学ぶ
全体像
namespace XXXX
{
アクセス修飾子 class Xxx
{
//メンバ変数
アクセス修飾子 データ型 メンバ変数名1{get; set;} *1
…
//コンストラクタ:クラスの外部から持ってくるもの
アクセス修飾子 Xxx (データ型 引数*2)
{
this.メンバ変数*1 = 引数*2
…
}
//メンバ関数
アクセス修飾子 (void or データ型) 関数名()
{
//処理
}
}
}
オブジェクトとは
オブジェクト指向とは、
データと処理をひとかたまりにすること。
クラスとは
クラスとは、
・雛型(ひながた)のこと。
・データと処理を定義すること。
class Xxxx
{
フィールド(データ, メンバ変数)
メソッド1(別名:メンバ関数, 処理)
メソッド2(別名:メンバ関数, 処理)など
}
クラス:例えば
人間クラスの属性(データの集まり)を考えてみる。
なんでもいい。身長、名前、生年月日、電話番号、好きな色、性別などなど。
キーワードはclass
そうしたデータをメンバ変数(フィールド)、それらを処理するものをメンバ関数という。
メンバー = メンバ変数 + メンバ関数
関数とは?(知らない人向け)
次に、処理(メンバ関数):処理する前後で考えてみる。
ブラックボックスに1を入れる。2が返ってきた。
2を入れる。4が返ってきた。
Nを入れる。2Nが返ってきた。
2倍になっている!←ざっくりこれがメンバ関数
Nを入れる。2Nが返ってきた。
N:引数(ひきすう)
2N:を戻り値 であることも抑えよう。
インスタンス
インスタンスとは
・クラスにデータを与えること。
・定義したデータと処理にデータを与えること。
・実際にデータを雛型に入れること。
すなわち、クラス内で宣言したメンバーにデータを入れて、処理をしてもらう!ということ。
キーワードはnew
実例:複数人のBMIを求めよう。
事前知識:
1. 動的配列
2. n人の体重と身長からBMIの数値と判定を出す。
・Humanクラスを作成
メンバー変数:名前と身長(m)、体重(kg)の3つ
メンバー関数:BmiクラスのBMIの計算メソッドを呼び出し、計算させ、名前とBMI、判定結果を表示する
・Bmiクラスを作成
メンバー変数:
メンバー関数:BmiクラスのBMIの計算メソッドを呼び出し、計算させ、名前とBMI、判定結果を表示する
using System;
using System.Collections.Generic;
public class Human
{
// ここで定義されるのはクラスレベルのフィールド(メンバ変数)
private string _name;
private double _weight;
private double _height;
// コンストラクタ
public Human(string name, double weight, double height)
{
Name = name;
Weight = weight;
Height = height;
}
// プロパティ(初期値, 値の検証)
public string Name
{
get { return _name; }
set
{
if (string.IsNullOrEmpty(value))
throw new ArgumentException("名前は空ではない必要があります。");
_name = value;
}
}
public double Weight
{
get { return _weight; }
set
{
if (value <= 0)
{
throw new ArgumentException("体重は0より大きくなければなりません。");
}
_weight = value;
}
}
public double Height
{
get { return _height; }
set
{
if (value <= 0)
{
throw new ArgumentException("身長は0より大きくなければなりません。");
}
_height = value;
}
}
//BMIの計算
public double bmi => _weight / (_height * _height);
// BMIから判定
public string BMICategory
{
get
{
if (bmi < 18.5)
return "やせ型";
else if (bmi >= 18.5 && bmi < 25)
return "普通";
else if (bmi >= 25 && bmi < 30)
return "肥満1度";
else if (bmi >= 30 && bmi < 35)
return "肥満2度";
else if (bmi >= 35 && bmi < 40)
return "肥満3度";
else
return "肥満4度";
}
}
//名前とBMI、判定を表示
public void DisplayBmi()
{
Console.WriteLine($"{_name}さんは{bmi:F2}({BMICategory}).");
}
}
class Program
{
static void Main()
{
List<Human> people = new List<Human>
{
new Human("Bob", 90, 1.78),
new Human("Charlie", 55, 1.60),
new Human("David", 75, 1.75),
new Human("Eve", 50, 1.58)
};
try
{
people.Add(new Human("Alice", -1, 1.65));
}
catch (ArgumentException e)
{
Console.WriteLine(e.Message);
}
foreach (var person in people)
{
person.DisplayBmi();
}
Console.ReadLine();
}
}
この記事が気に入ったらサポートをしてみませんか?