Name = n;

Number = num;

}

// Автоматически реализуемые свойства, в которых // хранятся имя абонента и номер его телефона, 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> where T : PhoneNumber {

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<end; i++) {

// Имя может использоваться, потому что его свойство Name // относится к членам класса PhoneNumber, который является // базовым по накладываемому ограничению, if(phList[i].Name == name) return phList[i];

}

// Имя отсутствует в сгояске. throw new NotFoundException();

}

// Найти и возвратить сведения о телефоне по заданному номеру, public Т FindByNumber(string number) { for (int i=0; i<end; i++) {

// Номер телефона также может использоваться, поскольку // его свойство Number относится к членам класса PhoneNumber,

// который является базовым по накладываемому ограничению, if(phList[i].Number == number) return phList[i];

}

// Номер телефона отсутствует в списке, throw new NotFoundException();

}

// ...

}

Ограничение на базовый класс разрешает коду в классе PhoneList доступ к свойствам Name и

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату