- •Часть 1
- •«Языки программирования»
- •2. Объектно-ориентированное программирование
- •3. Лексические элементы языка
- •4. Типы данных
- •5. Область видимости
- •Операции и выражения
- •Структура программы
- •7. Директивы препроцессора
- •8. Данные вещественного типа (см. Типы данных)
- •10. Данные логического типа
- •11. Программирование ветвлений. Инструкции if и if-else
- •12. Данные символьного типа
- •Описание данных символьного типа
- •13. Программирование циклов
- •14. Оператор выбора (переключатель)
- •15. Указатели
- •16. Массивы
- •17. Практические задания
- •Практическая работа №2 (программирование ветвлений)
- •Практическая работа №3 (программирование циклов)
- •Практическая работа №4(массивы)
2. Объектно-ориентированное программирование
Основным отличием языка СИ++ от языка СИ является наличие в нем средств ООП. Базовые понятия ООП: это инкапсуляция, наследование, полиморфизм. В отличие от Паскаля, вместо понятия «объектный тип данных», в СИ++ используется понятие «класс».
Объектно-ориентированное программирование — это программирование, сфокусированное на данных, причем данные и поведение неразрывно связаны. Вместе данные и поведение представляют собой класс, а объекты являются экземплярами класса. Например, многочлен имеет область значений, и она может изменяться такими операциями, как сложение и умножение многочленов.
ООП рассматривает вычисления как моделирование поведения. То, что моделируется, является объектами, представленными вычислительной абстракцией.
КЛАСС – это структурированный тип, включающий в себя в качестве элементов типизированные данные и функции, применяемые по отношению к этим данным.
Таким образом, инкапсуляция (объединение параметров и методов), заложена в составе элемента класса: типизированные данные- это параметры, а методы реализованы через функции.
ОБЪЕКТ – это экземпляр класса.
ИНКАПСУЛЯЦИЯ – свойство класса, при котором класс замкнут, а его реализация (т.е. набор команд, элементов), скрыта от основной части программы.
НАСЛЕДОВАНИЕ – 2-е фундаментальное понятие ООП. Механизм наследования позволяет формировать иерархии классов. Класс наследник получает свойства класса-предка.
ПОЛИМОРФИЗМ - допускает использование функций с одним и тем же именем применительно к разным наборам аргументов и операндов, а также к разным их типам в зависимости от контекста программы. В СИ++ полиморфизм реализован через механизм перегрузки. Т.е внутри класса допускается существование нескольких функций с одинаковым именем, но различающихся типом результатов и наборами формальных параметров. Компилятор выбирает подходящий вариант в зависимости от количества и типов аргументов.
Преимущества объектно-ориентированного программирования
Центральным элементом ООП является инкапсуляция совокупности данных и соответствующих им операций. Понятие класса с его функциями-членами и членами данных предоставляет программисту подходящий для реализации инкапсуляции инструмент. Переменные класса являются объектами, которыми можно управлять.
Кроме того, классы обеспечивают сокрытие данных. Права доступа могут устанавливаться или ограничиваться для любой группы функций, которым необходим доступ к деталям реализации. Тем самым обеспечивается модульность и надежность.
Еще одной важной концепцией ООП является поощрение повторного использования кода с помощью механизма наследования. Суть этого механизма — получение нового производного класса из существующего, называемого базовым. При создания производного класса базовый класс может быть дополнен или изменен. Таким путем могут создаваться иерархии родственных типов данных, которые используют общий код.
При использовании ООП решение будет более модульным, следовательно, более понятным и простым для модификации и обслуживания. Кроме того, такое решение будет более пригодно для повторного использования. Например, если в программе нужен стек, то он легко заимствуется из существующего кода. В обычном процедурном языке программирования такие структуры данных часто «вмонтированы» в алгоритм и не могут экспортироваться.
