Студопедия
Карамелька - детский развивающий канал


Авиадвигателестроения Административное право Административное право Беларусии Алгебра Архитектура Безопасность жизнедеятельности Введение в профессию «психолог» Введение в экономику культуры Высшая математика Геология Геоморфология Гидрология и гидрометрии Гидросистемы и гидромашины История Украины Культурология Культурология Логика Маркетинг Машиностроение Медицинская психология Менеджмент Металлы и сварка Методы и средства измерений электрических величин Мировая экономика Начертательная геометрия Основы экономической теории Охрана труда Пожарная тактика Процессы и структуры мышления Профессиональная психология Психология Психология менеджмента Современные фундаментальные и прикладные исследования в приборостроении Социальная психология Социально-философская проблематика Социология Статистика Теоретические основы информатики Теория автоматического регулирования Теория вероятности Транспортное право Туроператор Уголовное право Уголовный процесс Управление современным производством Физика Физические явления Философия Холодильные установки Экология Экономика История экономики Основы экономики Экономика предприятия Экономическая история Экономическая теория Экономический анализ Развитие экономики ЕС Чрезвычайные ситуации ВКонтакте Одноклассники Мой Мир Фейсбук LiveJournal Instagram

Абстрактные классы: определение, назначение, примеры использования




Чистая виртуальная функция не имеет реализации, ее нельзя вызвать в программе, она служит лишь как основа для дальнейшего полиморфного переопределения в производном классе. Если в классе определена хотя бы одна чистая виртуальная функция, он становится абстрактным. Главное отличие абстрактных классов – на их основе невозможность создавать объекты, они могут служить только основой для наследования. Класс Shape по замыслу является абстрактным, поэтому его можно переопределить следующим образом:

class Shape

{ protected:

Point base;

int color;

public:

virtual void show()=0;

virtual void hide()=0;

void move(int xn,int yn)

{ hide()

base.x+=xn; base.y+=yn;

show();

} };

Интерфейс: назначение, синтаксис определения, примеры использования.

Интерфейс – это декларация той функциональности, которую должен обеспечивать реализующий интерфейс класс. Часто говорят, что интерфейс является контрактом, который должен исполнять класс, объявивший себя наследником класса и тем самым вызвавшийся этот контракт исполнять. Определяется интерфейс с помощью ключевого слова interface и содержит лишь набор абстрактных членов:

interface имя{

тип имя_метода1 (список_параметров);

тип имя_свойства{set; get;}

}

Как видно из примера, в определение интерфейса помещаются лишь прототипы методов и свойств. Тела методов и аксессоров свойств не могут быть определены в интерфейсе, они задаются лишь в классах, наследующих интерфейс.

В теле интерфейса не указываются модификаторы доступа к членам, нельзя использовать для методов интерфейса ключевые слова virtual и static.

Например, определим интерфейс, отвечающий за проверку корректности заполнения данных различного типа – телефонных номеров, адресов e-mail, дат и других типов данных, поступающих от при регистрации пользователей, заполнении анкет и т.п.

public interface ICheckExp

{

bool checkPhone(string phoneNumb);

bool checkEmail(string emailStr);

bool checkDate(string dateStr);

}

В интерфейс включены три метода, осуществляющие проверку корректности переданных им строк, содержащих, соответственно, номер телефона, адреса электронной почты и даты. Теперь классы, реализующие подобную проверку (например, анкета или web-форма регистрации пользователей), наследуя этот интерфейс возьмут на себя обязательства определить конкретные реализации этих методов.





Дата добавления: 2015-02-04; просмотров: 945; Опубликованный материал нарушает авторские права? | Защита персональных данных | ЗАКАЗАТЬ РАБОТУ


Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Сдача сессии и защита диплома - страшная бессонница, которая потом кажется страшным сном. 7953 - | 6568 - или читать все...

Читайте также:

 

54.90.86.231 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.


Генерация страницы за: 0.002 сек.