29 мая 2013

Машины, грузовики.

Ещё одно небольшое задание на c#. Про наследование. Задание таково:

Создать базовый класс Car (машина), характеризуемый торговой маркой (строка),
числом цилиндров, мощностью. Определить методы переназначения и изменения мощности.
Создать производный класс Lorry (грузовик), характеризуемый также грузоподъемностью кузова.
Определить функции переназначения марки и изменения грузоподьемности.
Реализировать вывод на экран, методы получения значений полей и методы установки значений полей, а также необходимые конструкторы (если это не указано в задании явно).
Конструкторы и методы обязательно должны проверять параметры на допустимость; в случае неправильных данных - выводить значение об ошибке и заканчивать работу. Преобразование в строку реализовать в виде функции преобразования string.

using System;

namespace MyProject
{

    static class Program
    {
        public static int Main(string[] args)
        {
            int power = 0;
            string model = "";
            Console.WriteLine("Input power:");

            try
            {
                power = int.Parse(Console.ReadLine());
            }
            catch
            {
                Console.WriteLine("Wrong data");
                Console.ReadKey();
                return -1;
            }
            Lorry l = new Lorry(power);
            Console.WriteLine(l.ToString());


            Console.WriteLine("Input new model:");

            try
            {
                model = Console.ReadLine();
            }
            catch
            {
                Console.WriteLine("Wrong data");
                Console.ReadKey();
                return -1;
            }
            l.ChangeModel(model);

            Console.WriteLine(l.ToString());
            Console.ReadKey();
            return 0;
        }
    }

    public abstract class Car
    {
        string model;
        int cylinder;
        int power;

        public string Model
        {
            get
            {
                Console.WriteLine("Current Model = {0}.", model);
                return model;
            }
            set
            {
                model = value;
                Console.WriteLine("Change model to {0}.", model);
            }
        }
        public int Cylinder
        {
            get { return cylinder; }
            set { cylinder = value; }
        }

        public int Power
        {
            get
            {
                Console.WriteLine("Current Power = {0}.", power);
                return power;
            }
            set
            {
                power = value;
                Console.WriteLine("Change power to {0}.",power);
            }
        }

        public Car()
        {
            Cylinder = 4;
        }

        public void AssignPower(int p)
        {  
            Console.WriteLine("Change!");
            Power = p;
        }

        public void ChangePower(int p)
        {
            Console.WriteLine("Change!");
            Power += p;
        }

        public override string ToString()
        {

            return "\nSummary:\nModel: " + Model + "\nCylinder: " + Cylinder + "\nPower: " + power+"\n";
        }
    }

    public class Lorry : Car
    {
        int capacity;
        public int Capacity
        {
            get
            {
                return capacity;
            }
            set
            {
                capacity = value;
            }
        }
        public Lorry(int p)
            : base()
        {
            Power = p;
            Model = "PowerModel";
        }

        public Lorry(string model)
            : base()
        {
            Model = model;
            Power = 1;
        }

        public void ChangeModel(string newModel)
        {
            Model = newModel;
        }
    }
}

Комментариев нет: