2018年1月24日水曜日

開発環境

初めてのC# 第2版 (Jesse Liberty (著)、Brian MacDonald (著)日向 俊二 (翻訳)、オライリージャパン)の14章(ジェネリックとコレクション)、14.6(練習問題)、練習14-3.を取り組んでみる。

コード

using System;
using System.Collections.Generic;

namespace sample14_1
{
    abstract class Animal:IComparable<Animal>
    {
        private int weight;
        private string name;
        public Animal(int weight, string name)
        {
            this.weight = weight;
            this.name = name;
        }
        abstract public void Speak();
        abstract public void Move();

        public override string ToString()
        {
            return String.Format("Name: {0}, Weight: {1}", name, weight);
        }
        public int CompareTo(Animal rhs)
        {
            return this.weight.CompareTo(rhs.weight);
        }
    }
    class Cat: Animal
    {
        public Cat(int weight, string name) : base(weight, name) {}
        public override void Speak()
        {
            Console.WriteLine("にゃーにゃー");
        }
        public override void Move()
        {
            Console.WriteLine("スルスル");
        }
        public override string ToString()
        {
            return string.Format("[Cat] {0}", base.ToString());  
        }
    }
    class Dog: Animal
    {

        public Dog(int weight, string name) : base(weight, name) { }
        public override void Speak()
        {
            Console.WriteLine("わんわん");
        }
        public override void Move()
        {
            Console.WriteLine("テクテク");
        }
        public override string ToString()
        {
            return string.Format("[Dog] {0}", base.ToString());
        }    
    }
    class Program
    {
        static void Main(string[] args)
        {
            Cat cat1 = new Cat(10, "cat1");
            Cat cat2 = new Cat(30, "cat2");
            Dog dog1 = new Dog(20, "dog1");
            Dog dog2 = new Dog(40, "dog2");
            Animal[] animals = { cat1, cat2, dog1, dog2 };
            Stack<Animal> stack = new Stack<Animal>();
            Queue<Animal> queue = new Queue<Animal>();
            foreach (var animal in animals)
            {
                stack.Push(animal);
                queue.Enqueue(animal);
            }

            Console.WriteLine("Array");
            foreach (var item in animals)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("Stack");
            foreach (var item in stack)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("Queue");
            foreach (var item in queue)
            {
                Console.WriteLine(item);
            }
        }
    }
}

入出力結果(Terminal)

Array
[Cat] Name: cat1, Weight: 10
[Cat] Name: cat2, Weight: 30
[Dog] Name: dog1, Weight: 20
[Dog] Name: dog2, Weight: 40
Stack
[Dog] Name: dog2, Weight: 40
[Dog] Name: dog1, Weight: 20
[Cat] Name: cat2, Weight: 30
[Cat] Name: cat1, Weight: 10
Queue
[Cat] Name: cat1, Weight: 10
[Cat] Name: cat2, Weight: 30
[Dog] Name: dog1, Weight: 20
[Dog] Name: dog2, Weight: 40

Press any key to continue...


0 コメント:

コメントを投稿