Читаем C# 4.0: полное руководство полностью

    System.Runtime.Serialization.Serializationlnfo si,

    System.Runtime.Serialization.StreamingContext sc) : base(si, sc) { }

В данном примере используется только конструктор, вызываемый по умолчанию, но ради наглядности этого примера в классе исключения NotFoundException реализуются все конструкторы, определенные в классе Exception. Обратите внимание на то, что эти конструкторы вызывают эквивалентный конструктор базового класса, определенный в классе Exception. А поскольку класс исключения NotFoundException ничем не дополняет базовый класс Exception, то для любых дополнительных действий нет никаких оснований.

В приведенной ниже программе все рассмотренные выше фрагменты кода объединяются вместе, а затем демонстрируется применение класса PhoneList. Кроме того, в ней создается класс EmailFriend. Этот класс не наследует от класса PhoneNumber, а следовательно, он не может использоваться для создания объектов класса PhoneList.

// Более практический пример, демонстрирующий применение

// ограничения на базовый класс.

using System;

// Специальное исключение, генерируемое в том случае,

// если имя или номер телефона не найдены,

class NotFoundException : Exception {

  /* Реализовать все конструкторы класса Exception. Эти конструкторы выполняют вызов конструктора базового класса. Класс NotFoundException ничем не дополняет класс Exception и поэтому не требует никаких дополнительных действий. */

  public NotFoundException() : base() { }

  public NotFoundException(string str) : base(str) { }

  public NotFoundException(

        string str, Exception inner) : base(str, inner) { }

  protected NotFoundException(

    System.Runtime.Serialization.SerializationInfo si,

    System.Runtime.Serialization.StreamingContext sc) : base(si, sc) { }

}

// Базовый класс, в котором хранятся имя абонента

// и номер его телефона,

class PhoneNumber {

  public PhoneNumber(string n, string num) {

    Name = n;

    Number = num;

  }

  public string Number { get; set; }

  public string Name { get; set; }

}

// Класс для телефонных номеров друзей,

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) { }

  // ...

}

// Этот класс не наследует от класса PhoneNumber.

class EmailFriend {

  // ...

}

// Класс PhoneList способен управлять любым видом списка телефонных номеров,

// при условии, что он является производным от класса PhoneNumber.

class PhoneList 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 T FindByName(string name) {

    for (int i = 0; i < end; i++) {

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных