Head First C#
頭とからだで覚えるC#の基本
(オライリージャパン)
Andrew Stellman (著), Jennifer Green (著)
佐藤 嘉一 (監修), 木下 哲也 (翻訳)
開発環境
- Microsoft Windows 8.1 Pro (VMware Fusion 6, OS X Mavericks - Apple) (OS)
- C# (プログラミング言語)
- Microsoft Visual Studio Express 2013 for Windows Desktop (統合開発環境, IDE)
Head First C#―頭とからだで覚えるC#の基本 (Andrew Stellman (著)、Jennifer Green (著)、佐藤 嘉一 (監修)、木下 哲也 (翻訳)、オライリージャパン)の5章(継承: オブジェクトの系図)、エクササイズ(p.178)を解いてみる。
エクササイズ(p.178)
コード
Form1.cs
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
BirthdayParty birthdayParty;
public Form1()
{
InitializeComponent();
birthdayParty = new BirthdayParty((int)numberBirthday.Value, cakeWriting.Text, fancyBirthday.Checked);
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void numberBirthday_ValueChanged(object sender, EventArgs e)
{
birthdayParty.NumberOfPeople = (int)numberBirthday.Value;
DisplayBirthdayparty();
}
private void fancyBirthday_CheckedChanged(object sender, EventArgs e)
{
birthdayParty.CalculateCostOfDecoration(fancyBirthday.Checked);
DisplayBirthdayparty();
}
void DisplayBirthdayparty()
{
cakeWriting.Text = birthdayParty.CakeWriging;
decimal cost = birthdayParty.CalculateCost();
birthdayCost.Text = cost.ToString("C");
}
private void cakeWriting_TextChanged(object sender, EventArgs e)
{
birthdayParty.CakeWriging = cakeWriting.Text;
DisplayBirthdayparty();
}
}
class BirthdayParty
{
int numberOfPeople;
decimal CostOfDecorations;
int CakeSize;
string cakeWriging;
bool decoration;
public BirthdayParty(int numberOfPeople, string cakeWriging, bool decoration)
{
this.numberOfPeople = numberOfPeople;
CalculateCostOfDecoration(decoration);
CalculateCakeSize();
this.cakeWriging = cakeWriging;
this.decoration = decoration;
}
public int NumberOfPeople
{
get { return numberOfPeople; }
set
{
numberOfPeople = value;
CalculateCostOfDecoration(decoration);
CalculateCakeSize();
}
}
public void CalculateCostOfDecoration(bool decoration)
{
if (decoration)
{
CostOfDecorations = 1500 * numberOfPeople + 5000;
}
else
{
CostOfDecorations = 750 * numberOfPeople + 1500;
}
}
void CalculateCakeSize()
{
if (NumberOfPeople <= 4)
{
CakeSize = 7;
}
else
{
CakeSize = 15;
}
}
public string CakeWriging
{
get { return this.cakeWriging; }
set
{
int maxLength;
if (CakeSize == 7)
{
maxLength = 16;
}
else
{
maxLength = 40;
}
if (value.Length > maxLength)
{
MessageBox.Show(CakeSize + "号のケーキには文字数が多すぎます");
if (maxLength > this.cakeWriging.Length)
{
maxLength = this.cakeWriging.Length;
}
this.cakeWriging = cakeWriging.Substring(0, maxLength);
}
else
{
this.cakeWriging = value;
}
}
}
public decimal CalculateCost()
{
return CostOfDecorations + cakeWriging.Length * 25;
}
}
}
0 コメント:
コメントを投稿