2018年7月17日火曜日

開発環境

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

コード

MainPage.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;

namespace App2
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();

            string result = "";
            INose[] noses =
            {
                new Acts(),
                new Clowns(),
                new Of76()
            };

            foreach (INose nose in noses)
            {
                result += nose.Ear() + " " + nose.Face + "\n";
            }

            DisplayAlert("", result, "OK");
        }
    }

    public interface INose
    {
        int Ear();
        string Face { get; }
    }
    public abstract class Picasso : INose
    {
        private string face;

        public Picasso(string face)
        {
            this.face = face;
        }

        public virtual string Face => face;
        public virtual int Ear()
        {
            return 7;
        }
    }
    public class Clowns: Picasso
    {
        public Clowns() : base("Clowns") { }
    }
    public class Acts:Picasso
    {
        public Acts() : base("Acts") { }
        public override int Ear()
        {
            return 5;
        }
    }
    public class Of76:Clowns
    {
        public override string Face => "Of76";
    }
}

0 コメント:

コメントを投稿