{
[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, которую в дальнейшем можно будет использовать для создания удаленных объектов.