Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_OOP.docx
Скачиваний:
5
Добавлен:
21.09.2019
Размер:
59.42 Кб
Скачать
  1. Основные парадигмы объектно-ориентированного программирования: полиморфизм.

Полиморфизм (от греческого слова polymorphism, означающего "много форм") — это

качество, которое позволяет одному интерфейсу получать доступ к целому классу дейст-

вий.. Тот же принцип можно применить и к программированию. Рассмотрим, напри-

мер, стек (stack), т.е. область памяти, функционирующую по принципу "последним

пришел — первым обслужен". Предположим, вы пишете программу, для которой

нужно организовать три различных типа стека. Один стек предназначен для целочис-

ленных значений, второй — для значений с плавающей точкой, а третий — для сим-

волов. В этом случае для реализации каждого стека используется один и тот же алго-

ритм, несмотря на различие в типах сохраняемых данных. В случае не объектно-

ориентированного языка вам пришлось бы создать три набора "стековых" подпро-

грамм, имеющих различные имена. Но благодаря полиморфизму в среде С# можно

создать один общий набор "стековых" подпрограмм, который обрабатывает все три

типа стека. Иными словами, зная, как использовать один стек, можно использовать

все остальные.

Концепцию полиморфизма часто выражают такой фразой: "один интерфейс —

много методов". Это означает, что для выполнения группы подобных действий можно

разработать общий интерфейс. Полиморфизм позволяет понизить степень сложности

программы, предоставляя программисту возможность использовать один и тот же ин-

терфейс для задания общего класса действий. Конкретное (нужное в том или ином

случае) действие (метод) выбирается компилятором. Программисту нет необходимо-

сти делать это вручную. Его задача — правильно использовать общий интерфейс.

  1. Принцип разделения спецификации и реализации класса (*.h, *.cpp) (только для С++)

Обычно описание классов выносят из текста основной программы в отдельные файлы с расширением h (от англ. header file – заголовочный файл). В качестве имени файла, как правило, используется имя класса. В нашем случае полное имя файла будет Person.h . Для включения заголовочного файла в основной файл программы следует применить директиву компилятора #include. Разработанный на С++ класс обычно поставляется пользователю в виде двух файлов: заголовочного файла (файла с расширением h) и библиотеки. Библиотека содержит откомпилированные функции, которые раньше находились в cpp-файле класса. .h/.hpp содержат объявления чего либо

- Глобальная переменная (переменные)

- Функция(Функции)

- Классы

- Структуры

- Новые типы данных

- препроцессорные переменные, макросы

- Плюс конечно же шаблоны, который должны быть реализованы в этом же файле.

.c/.cpp Содержат реализацию, либо можно сказать программный код, данные

- Глобальная переменная

- Реализация функций(но не шаблонных, хотя при желании)

- Реализация Классов.

- Реализация Структур.

Вывод таков.

.c/.cpp содержат программный код(данные, переменные) которые линковщик будет линковать для получения исполняемого файла(exe, dll, sys ... )

.h/.hpp содержат только объявления, и линковщик грубо говоря об них не знает, так что программный код(данные), не могут попасть в исполняемый файл(exe, dll, sys ... ).

Шаблонный генерируется во время компиляции и за это отвечает компилятор, так что как он его слинкует это его задача.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]