Namespace CarGeneralAsm

{

[Serializable]

public class Radio // класс радиоприемника

{

public Radio(){}

public void On(bool state)

{

if(state == true) Console.WriteLine("Радио включено!");

else Console.WriteLine("Радио выключено!");

//if(state == true) MessageBox.Show ("Радио включено!");

//else MessageBox.Show("Радио выключено!");

}

}

[Serializable]

public class Car // класс автомобиля

{

protected string petName; //Название автомобиля

protected int maxSpeed; //Максимальная скорость

protected Radio theRadio = new Radio();//Переменная-объект типа Радиоприемника

public Car(string PetName, int maxSpeed)//Конструктор

{

this.petName = PetName;

this.maxSpeed = maxSpeed;

}

// Пусть значения всех переменных будут автоматически установлены по умолчанию

public Car() {} //Конструктор по умолчанию

//Свойства:

public string PetName

{

get { return petName; }

set { petName = value; }

}

public int MaxSpeed

{

get { return maxSpeed; }

set { maxSpeed = value; }

}

//Метод управления радиоприемником

public void TurnOnRadio(bool state) { theRadio.On(state); }

}

[Serializable]

public class JamesBondCar: Car // Класс автомобиля для Джэймса Бонда

{

// Переменные:

bool canFly; // Возможность летать

bool canSubmerge; // Возможность плавать под водой

public JamesBondCar(){} // Конструктор по умолчанию

public JamesBondCar(string petName, int maxSpeed, bool canFly, bool canSubmerge)

: base(petName, maxSpeed)

{

this.canFly = canFly;

this.canSubmerge = canSubmerge;

}

// Свойства:

public bool CanFly

{

set { canFly = value; }

get { return canFly; }

}

public bool CanSubmerge

{

set { canSubmerge = value; }

get { return canSubmerge; }

}

// Методы, выдающие разные оконные сообщения:

public string CanFly()

{

if (canFly) return "Может летать!";

else return "Не может летать!";

}

public string CanSubmerge()

{

if (canSubmerge) return "Может плавать под водой!";

else return "Не может плавать - тонет!";

}

}

// Это объект MBR-типа, обеспечивающий доступ к связанным с ним объектам MBV.

public class CarProvider: MarshalByRefObject //Класс гаража спец.машин

{

// список автомобилей, имеющихся в гараже

private List<JamesBondCar> theJBCars =new List<JamesBondCar>();

public CarProvider() // Конструктор по умолчанию

{

Console.WriteLine("Создан поставщик автомобилей");

//MessageBox.Show("Создан поставщик автомобилей");

// Добавление нескольких автомобилей в список.

theJBCars.Add(new JamesBondCar("QMobile", 140, true, true));

theJBCars.Add(new JamesBondCar("Flyer", 150, true, false));

theJBCars.Add(new JamesBondCar("Swimmer", 160, false, true));

theJBCars.Add(new JamesBondCar("BasicJBC", 170, false, false));

}

// Методы:

// -получения списка всех атомобилей для Джэймса Бонда типа JamesBondCar.

public List<JamesBondCar> GetAllAutos(){ return theJBCars; }

// -поление определенного автомобиля JamesBondCar.

public JamesBondCar GetJBCByIndex(int i){ return (JamesBondCar)theJBCars[i]; }

// -добавление нового автомобиля

public void AddNewJBCar(string petName, int maxSpeed, bool canFly, bool canSubmerge)

{

theJBCars.Add(new JamesBondCar(petName, maxSpeed, canFly, canSubmerge));

}

}

}

В результате успешной компиляции получим соответствующую динамическую библиотеку CarGeneralAsm.dll, которую в дальнейшем можно будет использовать для создания удаленных объектов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow