2018年4月12日木曜日

開発環境

Head First C# ―頭とからだで覚えるC#の基本 (Andrew Stellman (著)、Jennifer Greene (著)、佐藤 嘉一 (監修, 監修)、木下 哲也 (翻訳)、オライリージャパン)の6章(インタフェースと抽象クラス - クラスに約束を守らせる)、エクササイズ(p. 241)を取り組んでみる。

コード

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.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp17
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ScaryScary fingersTheClown = new ScaryScary("大きな靴", 32);
            FunnyFunny someFunnyClown = fingersTheClown;
            IScaryClown someOtherScaryclown = someFunnyClown as IScaryClown;
            someOtherScaryclown.Honk();
        }
    }
}

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp17
{
    static class Program
    {
        /// <summary>
        /// アプリケーションのメイン エントリ ポイントです。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }

    public interface IClown
    {
        string FunnyThingIHave { get; }
        void Honk();
    }

    public interface IScaryClown: IClown
    {
        string ScaryThingIHave { get; }
        void ScareLittleChildren();
    }

    public class FunnyFunny : IClown
    {
        private string funnyThingIHave;

        public FunnyFunny(string funnyThingIHave)
        {
            this.funnyThingIHave = funnyThingIHave;
        }
        
        public string FunnyThingIHave
        {
            get { return funnyThingIHave; }
        }

        public void Honk()
        {
            MessageBox.Show("プップー!私は" + funnyThingIHave);
        }
    }

    public class ScaryScary : FunnyFunny, IScaryClown
    {
        private int numberOfScaryThings;

        public ScaryScary(string funnyThingIHave, int numberOfScaryThings) : 
            base(funnyThingIHave)
        {
            this.numberOfScaryThings = numberOfScaryThings;
        }

       public string ScaryThingIHave
        {
            get { return numberOfScaryThings + "匹のクモをもっています"; }
        }

        public void ScareLittleChildren()
        {
            MessageBox.Show("ブー!残念!");
        }
    }
}

0 コメント:

コメントを投稿