開発環境
- OS: Windows 10 Pro
- IDE(統合開発環境): Visual Studio Community 2017
Head First C# ―頭とからだで覚えるC#の基本 (Andrew Stellman (著)、Jennifer Greene (著)、佐藤 嘉一 (監修, 監修)、木下 哲也 (翻訳)、オライリージャパン)の5章(継承 - オブジェクトの系図)、エクササイズ(p. 178)を取り組んでみる。
コード
BirthdayParty.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace __DinnerParty { class BirthdayParty { const int CostOfFoodPerPerson = 2500; private int numberOfPeople; public int NumberOfPeople { get { return numberOfPeople; } set { numberOfPeople = value; CalculateCostOfDecorations(fancyDecorations); } } private int cakeSize; public int CakeSize { get { return cakeSize; } set { if (numberOfPeople <= 7) { cakeSize = 7; } else { cakeSize = 15; } } } private string cakeWriting = ""; public string CakeWriting { get { return this.cakeWriting; } set { int maxLength; if (CakeSize == 7) { maxLength = 16; } else { maxLength = 16; } if (value.Length > maxLength) { MessageBox.Show( CakeSize + "号のケーキには文字が多すぎます。"); this.cakeWriting = cakeWriting.Substring(0, maxLength); } else { this.cakeWriting = value; } } } private bool fancyDecorations; public decimal CostOfDecorations = 0; public BirthdayParty(int numberOfPeople, bool fancyDecorations) { this.NumberOfPeople = numberOfPeople; this.fancyDecorations = fancyDecorations; CalculateCostOfDecorations(fancyDecorations); } public void CalculateCostOfDecorations(bool fancy) { fancyDecorations = fancy; if (fancy) { CostOfDecorations = (NumberOfPeople * 1500M) + 5000M; } else { CostOfDecorations = (NumberOfPeople * 750M) + 3000M; } } public decimal CalculateCost() { decimal totalCost = CostOfDecorations + CostOfFoodPerPerson * NumberOfPeople + CakeWriting.Length * 10M; if (CakeSize == 15) { totalCost *= 2; } return totalCost; } } }
Form1.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace __DinnerParty { public partial class Form1 : Form { DinnerParty dinnerParty; BirthdayParty birthdayParty; public Form1() { InitializeComponent(); dinnerParty = new DinnerParty((int)numericUpDown1.Value, healthyBox.Checked, fancyBox.Checked); DisplayDinnerPartyCost(); birthdayParty = new BirthdayParty((int)numberBirthday.Value, fancyBirthday.Checked); DisplayBirthdayPartyCost(); } private void fancyBox_CheckedChanged(object sender, EventArgs e) { dinnerParty.CalculateCostOfDecorations(fancyBox.Checked); DisplayDinnerPartyCost(); } private void healthyBox_CheckedChanged(object sender, EventArgs e) { dinnerParty.SetHealthyOption(healthyBox.Checked); DisplayDinnerPartyCost(); } private void numericUpDown1_ValueChanged(object sender, EventArgs e) { dinnerParty.NumberOfPeople = (int)numericUpDown1.Value; DisplayDinnerPartyCost(); } private void DisplayDinnerPartyCost() { decimal Cost = dinnerParty.CalculateCost(healthyBox.Checked); costLabel.Text = Cost.ToString("c"); } private void DisplayBirthdayPartyCost() { decimal Cost = birthdayParty.CalculateCost(); birthdayCost.Text = Cost.ToString("c"); } private void numberBirthday_ValueChanged(object sender, EventArgs e) { birthdayParty.NumberOfPeople = (int)numberBirthday.Value; DisplayBirthdayPartyCost(); } private void fancyBirthday_CheckedChanged(object sender, EventArgs e) { birthdayParty.CalculateCostOfDecorations(fancyBirthday.Checked); DisplayBirthdayPartyCost(); } private void cakeWriting_TextChanged(object sender, EventArgs e) { birthdayParty.CakeWriting = cakeWriting.Text; DisplayBirthdayPartyCost(); } } }
0 コメント:
コメントを投稿