Скачать 236.47 Kb.
|
Статические и виртуальные методы на Паскале. Полиморфизм (16)По умолчанию все методы статические. Статические методы будут связаны со своими объектами во время трансляции (раннее связывание). Виртуальные методы будут связываться во время выполнения (позднее связывание). Познее связывание дает основу полиморфизму. Если в объекте имеется хотя бы один виртуальный метод, то в нем обязательно д.б. конструктор. Конструктор д.б. явно вызван до начала работы с виртуальными методами. X=object procedure Pr; virtual; … end Obj=object(X) procedure Pr; virtual; … end; Виртуальные методы используются для того, чтобы написать в подчиненном объекте новые реализации существующих методов. Конструкторы и деструкторы в Паскале (17) Конструктор должен вызываться в случае динамического создание переменных типа объект. Конструктор необходим для формирования VMT, в котором задана длина объекта. Деструктор обеспечивает доступ к VMT для определения объема освобождаемой памяти. Деструктор может не иметь в своем составе операторов, тогда он обеспечивает только связь с VMT. В общем случае в деструктор желательно включить действия, необходимые перед уничтожением экземпляра объекта. Деструктор, в отличие от конструктора, может быть виртуальным. Конструктор может содержать формальные параметры, деструктор – нет. X=object constructor C(a, b: integer); destructor D; end; Динамическое создание объектов на Паскале (18) Аналогично другим переменным, переменные типа объект могут динамически создаваться и уничтожаться. Для обеспечения динамического вызова в программе должен быть указатель на объект, а сам объект должен содержать конструктор (даже тогда, когда он не содержит виртуальных методов) и деструктор. Для создания экземпляра объекта используется оператор New: New(S1,Init), где S1 – указатель на объект, Init – конструктор объекта. Для уничтожения экземпляра объекта используется оператор Dispose: Dispose(S1,Done); где S1 – указатель, Done – деструктор. Таблица виртуальных методов на Паскале (19) Если в описании объекта имеются виртуальные методы, конструкторы или деструкторы, компилятор создает специальное поле – таблицу виртуального метода VMT (Virtual Method Table). Длина поля VMT 16 битов. Оно расположено в области данных и инициализируется конструктором при его вызове. Выделение в памяти места и заполнение VMT осуществляется транслятором автоматически; программисту VMT недоступно. Структура VMT:
VMT имеется в одном экземпляре для каждого объекта, имеющего виртуальные методы. Чтобы выполнялась проверка инициализации объекта нужно задать директиву {R+} Особенности ООП на языке Object Pascal на Delphi (20) В Delphi имеется 2 подхода к реализации ООП:
type cl1=class end; var mycl1: cl1; Здесь mycl1 – указатель на класс. Память нужно автоматически выделять. В классе обязательно д.б. конструктор. Виртуальные методы в Delphi: type cl1=class procedure Pr; virtual; procedure Qr; virtual; … end; cl2=class(cl1) procedure Pr; override; procedure Qr; virtual; {это уже другая процедура} end; Динамические методы: procedure Pr; dynamic. С точки зрения выполнения то же самое, что и virtual. Создается DMT (dynamic MT). В VMT адреса всех методов, даже предшественников, а в DMT включаются только адреса динамических методов, определенных только в данном классе. Контейнерные классы на C++, назначение, структура (31) КК – классы, предназначенные для хранения данных, организованных определенным образом. Например векторы, списки и т.д. Для каждого контейнера определены методы для работы с его элементами, не зависящие от конкретных типов данных, хранимых в контейнере. Есть библиотека STL – Standard Template Library. Разновидности контейнеров: последовательные (vector, deque, list, stack, queue, priority-queue) и ассоциативные (прямой доступ по ключу: map, multimap, set, multiset, bitset). Последовательные контейнеры (32) Вектор: #include vector p=v.begin(); while(p!=v.end()) {cout << *p; p++;} Есть функции: size(), empty(), push_back() – добавить в конец, pop_back(), insert(место, эл-т), erase(место), at(место). Конструкторы: vector vector vector Ассоциативные контейнеры (33) Определен шаблон для создания пар значений: template T1 first; T2 second; Pair(const T1 &x, const T2 &y); Template }; Операции сравнения: p1 если p1.first или p1.first=p2.first и p1.second Есть возможность определения критерия упорядочивания. Для этого служат функциональные классы. Пример: class if_greater { public: int operator () (int a, int b) const {return a>b;} }; if_greater x; cout << x(1, 5); В ассоциативных класах можно проводить поиск по значениям элементов. Словарь map: Элементы словаря – пары (ключ, значение). По умолчанию упорядочены по ключам. Повторение ключей не допускается. #include #include |
Теоретические подходы к разработке программы маркетинговой деятельности Мероприятия по разработке стратегической программы маркетинговой деятельности на предприятии ООО «Генезис» | Программа по формированию навыков безопасного поведения на дорогах... Методические подходы к разработке механизмов финансирования природоохранных программ | ||
Правительство Российской Федерации Федеральное государственное автономное... Методологические подходы к разработке сценариев и построение алгоритма для проекта в сфере строительства 33 | Рабочая учебная программа дисциплины Это одна из основных теоретических дисциплин профиля, ибо без знания физики работы приборов невозможны сознательные и эффективные... | ||
Рабоч ая учебная программа дисциплины Теоретическая электрохимия Это одна из основных теоретических дисциплин профиля, ибо без знания теоретической электрохимии невозможны сознательные и эффективные... | «Физическая электроника и электронные приборы». подготовки специалистов... Это одна из основных теоретических дисциплин специальности, ибо без знания физики работы приборов невозможны сознательные и эффективные... | ||
Программа по формированию навыков безопасного поведения на дорогах... Современная модель исторического образования предполагает качественно новые подходы к перспективному планированию учебного процесса,... | Рабоч ая учебная программа дисциплины Материалы электронной техники Это одна из основных дисциплин профиля, ибо без знания физико-химических характеристик материалов и протекающих в них физических... | ||
Проект программы «внутришкольная система оценки качества образования» В связи с этим возникла необходимость пересмотреть подходы к организации внутришкольного контроля и определить подходы к построению... | Различные подходы в определении понятия корпорация Реферат на тему: «Различные подходы в определении понятия «корпорация» в доктрине российского права» | ||
Методические указания к разработке рабочей программы При разработке... «российский национальный исследовательский медицинский университет имени н. И. Пирогова» | Современные подходы к созданию системы здоровьесозидающего образования... Годовой план можно использовать в виде памятки, содержащей основные данные о различных мероприятиях. Ответственность за описание... | ||
Методические подходы оценки плодородия садовых агроценозов западного предкавказья бузоверов А. В Ат. Разработаны методические подходы к проведению почвенного мониторинга в садах и установлены показатели (тесты) оценки плодородия... | Дипломная работа посвящена программной реализации и экспериментальному... Дипломный проект посвящен разработке программного комплекса для оптимизации размещения устройств регулирования напряжения в электроэнергетике... | ||
Методические указания по выполнению контрольных работ составлены... При разработке методических указаний по выполнению контрольных работ в основу положен Государственный образовательный стандарт по... | Методические подходы к оценке популяционного риска здоровью на основе... Зайцева Н. В., Шур П. З., Кирьянов Д. А., Камалтдинов М. Р., Цинкер М. Ю. Методические подходы к оценке популяционного риска здоровью... |