Наследование и его использование для реализации полиморфизма.
Насле́дование — механизм объектно-ориентированного программирования (наряду с инкапсуляцией, полиморфизмом и абстракцией), позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом.
Другими словами, класс-наследник реализует спецификацию уже существующего класса (базовый класс). Это позволяет обращаться с объектами класса-наследника точно так же, как с объектами базового класса.
Полиморфизм реализуется с помощью наследования классов и виртуальных функций. Класс-потомок наследует сигнатуры методов класса-родителя, а реализация, в результате переопределения метода, этих методов может быть другой, соответствующей специфике класса-потомка. Другие функции могут работать с объектом как с экземпляром класса-родителя, но если при этом объект на самом деле является экземпляром класса-потомка, то во время исполнения будет вызван метод, переопределенный в классе-потомке. Это называется поздним связыванием.
Класс-потомок сам может быть родителем. Это позволяет строить сложные схемы наследования — древовидные или сетевидные.
Абстрактные (или чисто виртуальные) методы не имеют реализации вообще (на самом деле некоторые языки, например C++, допускают реализацию абстрактных методов в родительском классе). Они специально предназначены для наследования. Их реализация должна быть определена в классах-потомках.
Класс может наследовать функциональность от нескольких классов. Это называется множественным наследованием. Множественное наследование создаёт известную проблему (в C++), когда класс наследуется от нескольких классов-посредников, которые в свою очередь наследуются от одного класса (так называемая «Проблема ромба»): если метод общего предка был переопределён в посредниках, неизвестно, какую реализацию метода должен наследовать общий потомок. Решается эта проблема путём отказа от множественного наследования для классов и разрешением множественного наследования для полностью абстрактных классов (то есть интерфейсов) (C#, Delphi, Java), либо через виртуальное наследование (C++).
- Начальные сведения об объектно-ориентированном программировании (программа как динамический набор взаимодействующих объектов).
- Классы и объекты (экземпляры класса), главные отличия класса от объекта.
- Открытый интерфейс класса и его составляющие (свойства методы и события).
- Инкапсуляция и ее назначение.
- Понятие о полиморфизме, предназначение полиморфизма.
- Наследование и его использование для реализации полиморфизма.
- Понятие распределенного приложения. Клиенты и серверы.
- Пятислойная архитектура распределенных приложений.
- Архитектура, ориентированная на сервисы. Понятие об облачных вычислениях.
- Локальные и глобальные компьютерные сети. Internet.
- Сетевые протоколы и их роль в передаче данных.
- Стандарт xml, языки разметки html и xhtml.
- Дата-центры, провайдеры данных и прокси-серверы.
- Базы данных и хранилища данных.
- Понятие о сжатии информации и архивах. Примеры программ архивации Windows.
- Защита информации путем разграничения доступа.
- Защита информации путем шифрования.
- Цифровая подпись и ее назначение.
- Понятие о вредоносном программном обеспечении (вирусы и программы-шпионы).
- Средства борьбы с вредоносным по (на примерах Kaspersky Internet Security и Microsoft Security Essentials).
- Компьютер как средство связи. Коммуникаторы и смартфоны.
- Электронная почта (на примерах Microsoft Outlook и Windows Live).
- Понятие об электронной коммерции: интернет-магазины, платежные системы и т.П.
- Понятие о по для решения бизнес-задач (на примерах Microsoft Office и 1с Предприятие).