Квадрат

...

...

То по виду вызова метода невозможно определить, какая из трех приведенных выше реализаций Name будет выполнена. Все зависит от того, на какой конкретный объект указывает указатель ptr.

...

...

...

...

Виртуальные методы

Нарушение асептики выполнения инъекции может привести к

К физическому методу стерилизации относят

Применение перекиси водорода относится к методу антисептики

Стерилизация — это

Дезинфекция — это

Антисептика — это комплекс мероприятий

Асептика — это комплекс мероприятий

а) по борьбе с инфекцией в ране

б) по профилактике попадания инфекции в рану

в) по дезинфекции инструментов

г) по стерилизации инструментов

а) по борьбе с инфекцией в ране

б) по профилактике попадания инфекции в рану

в) по дезинфекции инструментов

г) по стерилизации инструментов

а) комплекс мероприятий, предупреждающих попадание микробов в рану

б)уничтожение всех микроорганизмов, в том числе и спорообразующих

в) уничтожение патогенных микробов

г) механическое удаление микроорганизмов с поверхности изделий медицинского назначения

а) комплекс мероприятий, предупреждающих попадание микробов в рану

б)уничтожение всех микроорганизмов, в том числе и спорообразующих

в) уничтожение патогенных микробов

г) механическое удаление микроорганизмов с поверхности изделий медицинского назначения

а) физическому

б) химическому

в) механическому

г) биологическому

а) автоклавирование

б) погружение в 70% раствор этилового спирта

в) погружение в 6% раствор перекиси водорода

г) воздействие парами формалина

а) воздушной эмболии б) аллергической реакции в) абсцессу г) липодистрофии

В обоих классах, выведенных из класса Item, имеется метод Title, выдающий в качестве результата заглавие книги или название журнала. Кроме этого метода, полезно было бы иметь метод, выдающий полное название любой единицы хранения. Реализация этого метода различна, поскольку название книги и журнала состоит из разных частей. Однако вид метода – возвращаемое значение и аргументы – и его общий смысл один и тот же. Название – это общее свойство всех единиц хранения в библиотеке, и логично поместить метод, выдающий название, в базовый класс.

class Item {

public:

virtual String Name(void) const;

};

class Book: public Item {

public:

virtual String Name(void) const;

};

class Magazin: public Item {

public:

virtual String Name(void) const;

};

Реализация метода Name для базового класса тривиальна: поскольку название известно только производному классу, мы будем возвращать пустую строку.

String Item::Name(void) const { return ""; }

Для книги название состоит из фамилии автора, названия книги, издательства и года издания:

String Book::Name(void) const { return author + title + publisher + String(year);}

У журнала полное название состоит из названия журнала, года и номера:

String Magazin::Name(void) const { return title + String(year) + String(number);}

Методы Name определены как виртуальные с помощью описателя virtual, стоящего перед определением метода. Виртуальные методы реализуют идею полиморфизма в языке Си++. Если в программе используется указатель на базовый класс Item и с его помощью вызывается метод Name:

Item* ptr;

String name = ptr->Name();

Item* ptr;

if (type == "Book") ptr = new Book;

else if (type == "Magazin") ptr = new Magazin;

String name = ptr->Name();

В данном фрагменте программы, если переменная type, обозначающая тип библиотечной единицы, была равна "Book", то будет вызван метод Name класса Book. Если же она была равна "Magazin", то будет вызван метод класса Magazin.

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

Приведем еще один пример виртуального метода. Предположим, в графическом редакторе при нажатии определенной клавиши нужно перерисовать текущую форму на экране. Форма может быть квадратом, кругом, эллипсом и т.д. Мы введем базовый класс для всех форм Shape. Конкретные фигуры, с которыми работает редактор, будут представлены классами Square (квадрат), Circle (круг), Ellipse ( эллипс), производными от класса Shape. Класс Shape определяет виртуальный метод Draw для отображения формы на экране.

class Shape {

public:

Shape();

virtual void Draw(void);

};

class Square: public Shape {

public:

Square();

virtual void Draw(void);

private:

double length; // длина стороны

};


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: