MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Альтернативные Интерфейсы

Название:Альтернативные Интерфейсы
Просмотров:153
Раздел:Информатика, программирование
Ссылка:none(0 KB)
Описание:Интерфейс. Реализация. Как Этим Пользоваться. Обработка Ошибок. Обобщенные Классы. Ограниченные Интерфейсы.

Часть полного текста документа:

Альтернативные Интерфейсы
    После того, как описаны средства языка, которые относятся к производным классам, обсуждение снова может вернуться к стоящим задачам. В классах, которые описываются в этом разделе, основополагающая идея состоит в том, что они однажды написаны, а потом их используют программисты, которые не могут изменить их определение. Физически классы состоят из одного или более заголовочных файлов, определяющих интерфейс, и одного или более файлов, определяющих реализацию. Заголовочные файлы будут помещены куда-то туда, откуда пользователь может взять их копии с помощью директивы #include. Файлы, определяющие реализацию, обычно компилируют и помещают в библиотеку. Интерфейс
    Рассмотрим такое написание класса slist для однократно связанного списка, с помощью которого можно создавать как однородные, так и неоднородные списки объектов тех типов, которые еще должны быть определены. Сначала мы определим тип ent:
    typedef void* ent;
    Точная сущность типа ent несущественна, но нужно, чтобы в нем мог храниться указатель. Тогда мы определим тип slink:
    class slink {
    friend class slist;
    friend class slist_iterator;
    slink* next;
    ent e;
    slink(ent a, slink* p) { e=a; next=p;}
    };
    В одном звене может храниться один ent, и с помощью него реализуется класс slist:
    class slist {
    friend class slist_iterator;
    slink* last; // last->next - голова списка
    public:
    int insert(ent a); // добавить в голову списка
    int append(ent a); // добавить в хвост списка
    ent get(); // вернуться и убрать голову списка
    void clear(); // убрать все звенья
    slist() { last=0; }
    slist(ent a) { last=new slink(a,0); last->next=last; }
    ~slist() { clear(); }
    };
    Хотя список очевидным образом реализуется как связанный список, реализацию можно изменить так, чтобы использовался вектор из ent"ов, не повлияв при этом на пользователей. То есть, применение slink"ов никак не видно в описаниях открытых функций slist"ов, а видно только в закрытой части и определениях функций. Реализация
    Реализующие slist функции в основном просты. Единственная настоящая сложность - что делать в случае ошибки, если, например, пользователь попытается get() что-нибудь из пустого списка. Здесь приводятся определения членов slist. Обратите внимание, как хранение указателя на последний элемент кругового списка дает возможность просто реализовать оба действия append() и insert():
    int slist::insert(ent a)
    {
    if (last)
    last->next = new slink(a,last->next);
    else {
    last = new slink(a,0);
    last->next = last;
    }
    return 0;
    }
    int slist::append(ent a)
    {
    if (last)
    last = last->next = new slink(a,last->next);
    else {
    last = new slink(a,0);
    last->next = last;
    }
    return 0;
    }
    ent slist::get()
    {
    if (last == 0) slist_handler("get fromempty list");
    // взять из пустого списка
    slink* f = last->next;
    ent r f->e;
    if (f == last)
    last = 0;
    else
    last->next = f->next;
    delete f;
    return f;
    }
    Обратите внимание, как вызывается slist_handler. ............






Похожие работы:

Название:Некоторые новые данные анализа сил и потерь на советско-германском фронте
Просмотров:645
Описание: Г.Ф.Кривошеев (Доклад на заседании Ассоциации историков Второй мировой войны 29.12.1998 г.) Уже не раз в выступлениях президента, членов правительства, в средствах массовой информации сообщалось число потерь как вое

Название:Некоторые черты религиозного быта Челябинска в XVIII — начале XIX века
Просмотров:640
Описание: Конюченко А. И. История строительства челябинских церквей в дореволюционный период и их последующая судьба получили отражение в работах трех авторов, вклад которых в изучение прошлого нашего города навряд ли смо

Название:Некоторые особенности хеттских домашних праздников
Просмотров:638
Описание: Арутюнян Р.С. Среди хеттских клинописных источников, обнаруженных в царских архивах Хаттусы (столицы древнего Хеттского государства, располагавшейся в 150 км к востоку от современной Анкары), основную часть состав

Название:Некоторые аспекты анализа депозитарных операций
Просмотров:522
Описание: Выполнение депозитарных операций лежит в основе деятельности по хранению и учету ценных бумаг. Под депозитарной операцией понимается совокупность действий, осуществляемых депозитарием с учетными регистрами, а т

Название:Некоторые методические приемы выделения инженерно-геологических элементов при проведении изысканий
Просмотров:481
Описание: для проектирования магистральных нефтепроводов А. Э. Курилович, Воронежский государственный университет В связи с увеличением объемов экспорта энергоносителей за рубеж в настоящее время в нашей стране развива

 
     

Вечно с вами © MaterStudiorum.ru