19821

Віртуальні методи. Абстрактні класи

Доклад

Информатика, кибернетика и программирование

Абстрактний клас в обєктноорієнтованому програмуванні базовий клас який не передбачає створення екземплярів. Абстрактні класи реалізують на практиці один з принципів ООП поліморфізм. Абстрактний клас може містити і не містити абстрактні методи і властивості...

Украинкский

2015-01-12

17.72 KB

8 чел.

Абстрактний клас в об'єктно-орієнтованому програмуванні - базовий клас, який не передбачає створення екземплярів. Абстрактні класи реалізують на практиці один з принципів ООП - поліморфізм. Абстрактний клас може містити (і не містити [1]) абстрактні методи і властивості. Абстрактний метод не реалізується для класу, в якому описаний, однак повинен бути реалізований для його неабстрактних нащадків. Абстрактні класи являють собою найбільш загальні абстракції, тобто мають найбільший обсяг і найменше зміст.
В одних мовах створювати екземпляри абстрактних класів заборонено, в інших це допускається (наприклад, Delphi), але звернення до абстрактного методу об'єкта цього класу в процесі виконання програми призведе до помилки. У багатьох мовах допустимо оголосити будь-який клас абстрактним, навіть якщо в ньому немає абстрактних методів (наприклад, Java), саме для заборони створення екземплярів.Абстрактний клас можна розглядати в якості інтерфейсу до сімейства класів, породженому ним, але, на відміну від класичного інтерфейсу, абстрактний клас може мати певні методи, а також властивості.
Абстрактні методи часто є і віртуальними, у зв'язку з чим поняття «абстрактний» і «віртуальний» іноді плутають.

Віртуальний метод (віртуальна функція) - в об'єктно-орієнтованому програмуванні метод (функція) класу, який може бути перевизначений в класах-спадкоємців так, що конкретна реалізація методу для виклику буде визначатися під час виконання.Таким чином, програмісту необов'язково знати точний тип об'єкта для роботи з ним через віртуальні методи: достатньо лише знати, що об'єкт належить класу або спадкоємцю класу, в якому метод оголошений.
Віртуальні методи - один з найважливіших прийомів реалізації поліморфізму. Вони дозволяють створювати загальний код, який може працювати як з об'єктами базового класу, так і з об'єктами будь-якого його класу-спадкоємця. При цьому базовий клас визначає спосіб роботи з об'єктами і будь-які його спадкоємці можуть надавати конкретну реалізацію цього способу. У деяких мовах програмування, наприклад в Java, немає поняття віртуального методу, дане поняття слід застосовувати лише для мов, в яких методи батьківського класу не можуть бути перевизначені за замовчуванням, а тільки за допомогою деяких допоміжних ключових слів. У деяких же (як, наприклад, в Python), всі методи - віртуальні.
Базовий клас може і не надавати реалізації віртуального методу, а лише декларувати його існування. Такі методи без реалізації називаються «чистими віртуальними» (переклад англ. Pure virtual) або абстрактними. Клас, у якому хоча б один такий метод, теж буде абстрактним. Об'єкт такого класу створити не можна (в деяких мовах допускається, але виклик абстрактного методу призведе до помилки).Спадкоємці абстрактного класу повинні надати реалізацію для всіх його абстрактних методів, інакше вони, в свою чергу, будуть абстрактними класами.
Для кожного класу, що має хоча б один віртуальний метод, створюється таблиця віртуальних методів. Кожен об'єкт зберігає покажчик на таблицю свого класу. Для виклику віртуального методу використовується такий механізм: з об'єкта береться покажчик на відповідну таблицю віртуальних методів, а з неї, за фіксованим зсуву, - покажчик на реалізацію методу, використовуваного для даного класу. При використанні множинного спадкування або інтерфейсів ситуація дещо ускладнюється за рахунок того, що таблиця віртуальних методів стає нелінійною.


 

А также другие работы, которые могут Вас заинтересовать

40600. Формирование документа XML и его DTD 570.5 KB
  Язык XML – это язык разметки, описывающий целый класс объектов данных, называемых документами XML. Документы XML обычно хранятся в виде текстовых файлов с расширением
40601. Подход RАD. Стадии реализации и внедрения 19.83 KB
  На данной фазе разработчики производят итеративное построение реальной системы на основе полученных в предыдущей фазе моделей а также требований нефункционального характера. Тестирование системы осуществляется непосредственно в процессе разработки. После окончания работ каждой отдельной команды разработчиков производится постепенная интеграция данной части системы с остальными формируется полный программный код выполняется тестирование совместной работы данной части приложения с остальными а затем тестирование системы в целом. Завершается...
40602. Стандарты проектирования 26.29 KB
  Важнейшие шаги процесса BSP их последовательность получить поддержку высшего руководства определить процессы предприятия определить классы данных провести интервью обработать и организовать данные интервью можно встретить практически во всех формальных методиках а также в проектах реализуемых на практике. ISO IEC 12207:1995 стандарт на процессы и организацию жизненного цикла. В соответствии с базовым международным стандартом ISO IEC 12207 все процессы ЖЦ ПО делятся на три группы: 1.
40603. Стандарты проектирования. АИС 53 KB
  Вендрова Проектирование ПО Ход урока Организационный момент 24 мин: Приветствие оформление документов к занятию Повторение пройденного материала применяемая методика выводы1520 мин Устные ответы на вопросы: Дайте характеристику стадии реализации по классической схеме Дайте характеристику стадии реализации по методологии RD Дайте характеристику стадии внедрения по классической схеме Дайте характеристику стадии внедрения по методологии RD Как осуществляется оценка размера приложений Перечислите основные...
40604. Создание SADT-диаграмм по произвольным проектам 574.5 KB
  Стандарт IDEF0 базируется на трех основных принципах: Принцип функциональной декомпозиции любая функция может быть разбита на более простые функции; Принцип ограничения сложности количество блоков от 2 до 8 в BPwin условие удобочитаемости; Принцип контекста моделирование делового процесса начинается с построения контекстной диаграммы на которой отображается только один блок главная функция моделирующей системы. Диаграммы главные компоненты модели все функции и интерфейсы на них представлены как блоки и дуги. Место соединения дуги...
40605. Создание ERD диаграмм методом IDEF I 499.5 KB
  Панель Toolbox Вид кнопки Назначение кнопки Создание новой сущности. Для установки категориальной связи нужно щелкнуть по кнопке далее по сущностиродителю и затем по сущностипотомку. Для связывания двух сущностей нужно щелкнуть по кнопке далее по сущностиродителю затем по сущностипотомку. Создание связи многие ко многим Создание неидентифицирующей связи После создания сущности ей нужно задать атрибуты.
40606. Построение диаграмм вариантов использования 70.24 KB
  Краткие сведения о диаграмме вариантов использования. Диаграмма вариантов использования является самым общим представлением функциональных требований к системе. Для последующего проектирования системы требуются более конкретные детали которые описываются в документе называемом сценарием варианта использования или потоком событий flowofevents.
40607. Построение диаграмм классов 196.48 KB
  Повторить общие сведения о диаграммах классов Построить диаграмму классов Сформировать отчет по практической работе №7 После того как мы определились с функциональными требованиями к системе и её границами начнём анализировать предметную область с целью построения диаграммы классов. Основные элементы диаграммы классов Основными элементами являются классы и связи между ними. Ассоциация ssocition представляет собой отношения между экземплярами классов.
40608. Построение диаграмм состояний 263.95 KB
  Повторить общие сведения о диаграммах состояний Построить диаграмму состояний Сформировать отчет по практической работе №8 Диаграмма состояний определяет последовательность состояний объектавызванных последовательностью событий. Порядок построения диаграммы Создайте диаграмму состояний для объектов класса Заказ. Соответствующая диаграмма состояний представлена на рисунке: Сохраните диаграмму.