06 июля 2010

Работа с интерфейсами и классами.

Имеем задание:

Задание 4. Создайте проект типа библиотеки классов по имени Vehicles и напишите в нем
код, реализующий семейство объектов типа Vehicle. Реализовать необходимо девять объектов и два интерфейса.



Итого имеем:
Класс 1 - Vehicle
Класс 2 - Vehicle.Car
Класс 3 - Vehicle.Train
Класс 4 - Vehicle.Car.CompactCar
Класс 5 - Vehicle.Car.SUV
Класс 6 - Vehicle.Car.Pickup
Класс 7 - Vehicle.Train.PassengerTrain
Класс 8 - Vehicle.Train.FreightTrain
Класс 9 - Vehicle.Train.DobeyBougie402
и
Интерфейс 1 - IPassengerCarrier
Интерфейс 2 - IHeavyLoadCarrier


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyTest
{
    public class Vehicle
    {
        public class Car
        {
        }
        public class Train
        {
        }
        public interface IPassengerCarrier
        {
        }
        public interface IHeavyLoadCarrier
        {
        }
        public class CompactCar : Vehicle.Car, Vehicle.IPassengerCarrier
        {
        }
        public class SUV : Vehicle.Car, Vehicle.IPassengerCarrier
        {
        }

        public class Pickup : Vehicle.Car, Vehicle.IHeavyLoadCarrier
        {
        }

        public class PassengerTrain : Vehicle.Train, Vehicle.IPassengerCarrier
        {
        }

        public class FreightTrain : Vehicle.Train, Vehicle.IHeavyLoadCarrier
        {
        }

        public class DobeyBougie402 : Vehicle.Train
        {
        }
    }
}


Собственно тут без проблем:)

Задание 5. Создайте проект типа консольного приложения по имени Traffic, ссылающийся
на проект Vehicles. dll (из упражнения 4). Добавьте в него функцию по имени
AddPasenger, принимающую любой объект с интерфейсом IPassengerCarrier.
Для доказательства работоспособности кода вызывайте эту функцию с
использованием экземпляров всех объектов, которые поддерживают этот интерфейс,
вызывая для каждого из них унаследованный от System.Object метод ToString
и выводя результат на экран.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyTest;

namespace ConsoleApplication1
{
    class Program
    {

        static void AddPassenger(object Vehicle)
        {
            Console.WriteLine(Vehicle.ToString());

            if (Vehicle is Vehicle.IPassengerCarrier)
            {

                Console.WriteLine("Может перевозить людей.");
            }
            else
            {
                Console.WriteLine("Не может перевозить людей.");
            }
        }

        static void Main(string[] args)
        {
            MyTest.Vehicle.CompactCar MiniCooper = new Vehicle.CompactCar();
            MyTest.Vehicle.SUV Volkswagen = new MyTest.Vehicle.SUV();
            MyTest.Vehicle.Pickup Ford = new MyTest.Vehicle.Pickup();
            MyTest.Vehicle.PassengerTrain Sapsan = new MyTest.Vehicle.PassengerTrain();
            MyTest.Vehicle.FreightTrain VIL = new MyTest.Vehicle.FreightTrain();
            MyTest.Vehicle.DobeyBougie402 SuperPoezd = new MyTest.Vehicle.DobeyBougie402();


            Vehicle.Car[] MyVehicleCar = new Vehicle.Car[3] {MiniCooper,Volkswagen,Ford};
            Vehicle.Train[] MyVehicleTrain = new Vehicle.Train[3] {Sapsan,VIL,SuperPoezd};

            foreach (Vehicle.Car Car in MyVehicleCar)
            {
                AddPassenger(Car);
            }

            foreach (Vehicle.Train Train in MyVehicleTrain)
            {
                AddPassenger(Train);
            }
          Console.ReadKey();        
        }
    }
}

Проще придумать не смог...

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