// Автоматически реализуемые свойства, в которых // хранятся имя абонента и номер его телефона, public string Number { get; set; } public string Name { get; set; }
Далее создадим классы, наследующие классPhoneNumber: FriendиSupplier.Эти классы приведены ниже.
// Класс для телефонных номеров друзей, class Friend : -PhoneNumber {
public Friend(string n, string num, bool wk) : base(n, num)
{
IsWorkNumber = wk;
}
public bool IsWorkNumber { get; private set; }
// ...
}
// Класс для телефонных номеров поставщиков, class Supplier : PhoneNumber {
public Supplier(string n, string num) : base(n, num) { }
// ...
}
Обратите внимание на то, что в классFriendвведено свойствоIsWorkNumber,возвращающее логическое значениеtrue,если номер телефона является рабочим.
Для управления списками телефонных номеров создадим еще один класс под названиемPhoneList.Его следует сделать обобщенным, поскольку он должен служить для управления любым списком телефонных номеров. В функции такого управления должен, в частности, входить поиск телефонных номеров по заданным именам и наоборот, поэтому на данный класс необходимо наложить ограничение по типу, требующее, чтобы объекты, сохраняемые в списке, были экземплярами класса, производного от классаPhoneNumber.
// Класс PhoneList способен управлять любым видом списка телефонных // номеров, при условии, что он является производным от класса PhoneNumber.
class PhoneList
T[] phList; int end;
public PhoneList {
phList = new T[10]; end = 0;
}
// Добавить элемент в список, public bool Add(T newEntry) { if(end == 10) return false; phList[end] = newEntry; end++;
return true;
// Найти и возвратить сведения о телефоне по заданному имени, public Т FindByName(string name) { for(int i=0; i
// Имя может использоваться, потому что его свойство Name // относится к членам класса PhoneNumber, который является // базовым по накладываемому ограничению, if(phList[i].Name == name) return phList[i];
}
// Имя отсутствует в сгояске. throw new NotFoundException;
}
// Найти и возвратить сведения о телефоне по заданному номеру, public Т FindByNumber(string number) { for (int i=0; i
// Номер телефона также может использоваться, поскольку // его свойство Number относится к членам класса PhoneNumber,
// который является базовым по накладываемому ограничению, if(phList[i].Number == number) return phList[i];
}
// Номер телефона отсутствует в списке, throw new NotFoundException;
}
// ...
}