FIRE研究

FIRE達成に向けて学んだ投資や知識を書いています。

paiza 問題集 C#編 STEP: 8 クラスの継承 回答例

クラスの継承 C#編 STEP: 8 クラスの継承回答例です。

using System;
using System.Collections.Generic;
class Program
{
    static void Main()
    {
        // 自分の得意な言語で
        // Let's チャレンジ!!
        var line = Console.ReadLine().Split(' ');
        var n = int.Parse(line[0]);
        var k = int.Parse(line[1]);
        var customers = new List<Person>();
        for(int i=0;i<n;i++){
            var age = int.Parse(Console.ReadLine());
            if(age < 20){
                customers.Add(new Person());
            }else{
                customers.Add(new Adult());
            }
        }
        for(int i=0;i<k;i++){
            line = Console.ReadLine().Split(' ');
            customers[int.Parse(line[0])-1].doOrder(line[1],line[2]);
        }
        foreach(var customer in customers){
            Console.WriteLine(customer.bill);
        }
    }
    public class Person{
        public int bill{get;set;}
        public virtual void doOrder(string menu,string price){
            if(menu == "food" || menu == "softdrink"){
                this.bill += int.Parse(price);
            }
        }
    }
    public class Adult : Person{
        bool alcoholOrdered = false;
        public override void doOrder(string menu,string price){
            this.bill += int.Parse(price);
            if(menu == "alcohol"){
                this.alcoholOrdered = true;
            }
             if(menu == "food" && alcoholOrdered){
                this.bill -= 200;
            }           
        }
    }
}