- •Основные положения объектно-ориентированного программирования. Технология объектно-ориентированного программирования: назначение и применение.
- •Основные парадигмы объектно-ориентированного программирования: абстракция.
- •Основные парадигмы объектно-ориентированного программирования: инкапсуляция. Доступ к элементам класса (public, protected, private).
- •Основные парадигмы объектно-ориентированного программирования: полиморфизм.
- •Пространство имен: назначение и применение.
- •Структура класса: члены класса, свойства (элементы), методы, конструкторы и деструкторы, ссылка на себя (this).
- •Управление доступом к членам класса.
- •Конструкторы класса: по умолчанию, с аргументами, копирующие.
- •Перегружаемые методы класса.
- •Статические члены класса: назначение и применение.
- •Константные члены класса: константные свойства, константные методы.
- •Обработка исключений (try/catch/throw-конструкция).
- •Вложенные объекты.
- •Вложенные классы.
- •Принципы преобразования типов.
- •Виртуальные функции.
- •Абстрактные классы.
- •Перегружаемые операторы: бинарные, унарные, префиксные, постфиксные.
- •Спецификация cli. Структура .Net Framework.
- •С#: пространства имен, структура класса, свойства.
Основные парадигмы объектно-ориентированного программирования: полиморфизм.
Полиморфизм (от греческого слова polymorphism, означающего "много форм") — это
качество, которое позволяет одному интерфейсу получать доступ к целому классу дейст-
вий.. Тот же принцип можно применить и к программированию. Рассмотрим, напри-
мер, стек (stack), т.е. область памяти, функционирующую по принципу "последним
пришел — первым обслужен". Предположим, вы пишете программу, для которой
нужно организовать три различных типа стека. Один стек предназначен для целочис-
ленных значений, второй — для значений с плавающей точкой, а третий — для сим-
волов. В этом случае для реализации каждого стека используется один и тот же алго-
ритм, несмотря на различие в типах сохраняемых данных. В случае не объектно-
ориентированного языка вам пришлось бы создать три набора "стековых" подпро-
грамм, имеющих различные имена. Но благодаря полиморфизму в среде С# можно
создать один общий набор "стековых" подпрограмм, который обрабатывает все три
типа стека. Иными словами, зная, как использовать один стек, можно использовать
все остальные.
Концепцию полиморфизма часто выражают такой фразой: "один интерфейс —
много методов". Это означает, что для выполнения группы подобных действий можно
разработать общий интерфейс. Полиморфизм позволяет понизить степень сложности
программы, предоставляя программисту возможность использовать один и тот же ин-
терфейс для задания общего класса действий. Конкретное (нужное в том или ином
случае) действие (метод) выбирается компилятором. Программисту нет необходимо-
сти делать это вручную. Его задача — правильно использовать общий интерфейс.
Принцип разделения спецификации и реализации класса (*.h, *.cpp) (только для С++)
Обычно описание классов выносят из текста основной программы в отдельные файлы с расширением h (от англ. header file – заголовочный файл). В качестве имени файла, как правило, используется имя класса. В нашем случае полное имя файла будет Person.h . Для включения заголовочного файла в основной файл программы следует применить директиву компилятора #include. Разработанный на С++ класс обычно поставляется пользователю в виде двух файлов: заголовочного файла (файла с расширением h) и библиотеки. Библиотека содержит откомпилированные функции, которые раньше находились в cpp-файле класса. .h/.hpp содержат объявления чего либо
- Глобальная переменная (переменные)
- Функция(Функции)
- Классы
- Структуры
- Новые типы данных
- препроцессорные переменные, макросы
- Плюс конечно же шаблоны, который должны быть реализованы в этом же файле.
.c/.cpp Содержат реализацию, либо можно сказать программный код, данные
- Глобальная переменная
- Реализация функций(но не шаблонных, хотя при желании)
- Реализация Классов.
- Реализация Структур.
Вывод таков.
.c/.cpp содержат программный код(данные, переменные) которые линковщик будет линковать для получения исполняемого файла(exe, dll, sys ... )
.h/.hpp содержат только объявления, и линковщик грубо говоря об них не знает, так что программный код(данные), не могут попасть в исполняемый файл(exe, dll, sys ... ).
Шаблонный генерируется во время компиляции и за это отвечает компилятор, так что как он его слинкует это его задача.