Лекция 22. Объектно-ориентированное программирование. ü познакомиться с основными понятиями объектно-ориентированного программирования (ООП);
Лекция 22 Объектно-ориентированное программирование
Цели: ü познакомиться с основными понятиями объектно-ориентированного программирования (ООП); ü определить понятие класса, основные свойства классов. 1. Объектно-ориентированное программирование. Объектно-ориентированное программирование (ООП) – это система принципов и способов организации и построения программ, которая основана на представлении программы в виде совокупности взаимодействующих некоторым образом объектов. Для каждого объекта определяются конкретные характеристики, которые вытекают из условия задачи, то есть какие-то из них можно опустить, а какие-то оставить. Характеристики, которые определяются для конкретного объекта, называются свойствами. Сам объект может управлять своими свойствами при помощи методов – наборов функций, которые могут изменять состояние объекта (значения переменных в программе). Полностью объект описывается свойствами и методами управления свойствами. Основным понятием ООП в языке Си++ является понятие класса. Класс – это произвольный структурированный тип, включающий в себя свойства и методы. Класс будет соответствовать определённому объекту предметной области. Классы обладают тремя свойствами (характеристиками как типа данных): 1. инкапсуляция, 2. наследование, 3. полиморфизм. Инкапсуляция – это свойство класса как типа данных содержать в себе одновременно переменные и функции их обработки, то есть свойства и методы. Наследование предполагает возможность использования свойств и методов уже созданного класса для определения нового класса, то есть можно создать так называемый базовый класс и производные классы, которые могут содержать свойства и методы базового класса. Таким образом, строится иерархия классов, или библиотека.
Полиморфизм – это свойство класса, позволяющее определить одно и то же по имени, но разное по смыслу действие. Основные этапы ООП: 1. Определить основные объекты предметной области и их свойства. 2. Определить принципы взаимодействия этих объектов, таким образом, для каждого объекта определить методы управления свойствами. 3. По первым двум пунктам построить иерархию класса, то есть должны быть использованы свойства инкапсуляции, наследования и полиморфизма. В результате может быть создана библиотека классов. Описание классов. Классы описываются в отдельных головных файлах, затем эти файлы подключаются в главной функции с помощью директивы include. Простейшим образом классы можно определить с помощью конструкции: class < имя класса> { < компоненты класса< (свойства и методы класса) }; где class – служебное слово; < имя класса> – произвольно выбираемый идентификатор; < компоненты класса> – определение и описание типизированных данных (объектов) и принадлежащих классу функций (методов). В проекте стандарта языка Си++ указано, что компонентами класса могут быть данные, функции, классы, перечисления, битовые поля, дружественные функции, дружественные классы и имена типов. В простейшем случае компоненты класса – это типизированные данные (базовые и производные) и функции. Заключённый в фигурные скобки список компонентов называют телом класса. Телу класса предшествует заголовок. В простом случае заголовок класса включает ключ класса и его имя. Определение класса всегда заканчивается точкой с запятой. В качестве простейшего примера класса можно использовать структуру, но класс отличается от обычного структурированного типа, по крайней мере, включением компонентных функций. Например, следующая конструкция вводит класс «комплексное число»:
class complex // Вариант класса «комплексное число» { float re; // Вещественная часть float im; // Мнимая часть // Определение значения комплексного числа void def(float re1, float im1) { re=re1; im=im1; } // Вывести на экран значение комплексного числа void disp( ) { cout < < “real=” < < re; cout < < “, imag=” < < im; } }; В отличие от структурного типа в класс (тип) complex, кроме компонентных данных (re, im), включены две компонентные функции def() и disp( ). Класс (как и его частный случай – структура), определённый пользователем, обладает правами типа. Следовательно, можно определить и описать объекты класса и описать объекты класса и создавать производные типы. Итак, класс – это тип, определённый программистом. Каждый тип служит для определения объектов. Для описания объектов класса используется конструкция: < имя класса> < имя объекта>; Например: complex x1, x2, D; // При объявлении класса complex complex *point=& D; // Указатель на объект класса complex complex dim[8]; // Массив объектов класса complex complex & Name=x2; // Ссылка на объект класса complex В определении объекта (класса) входят данные (элементы), соответствующие компонентным данным класса. Компонентные функции класса позволяют обработать данные конкретных объектов класса. Но в отличие от компонентных данных компонентные функции не тиражируются при создании конкретных объектов класса. Если перейти на уровень реализации, то место в памяти выделяется именно для элементов каждого объекта класса. Определение объектов класса предусматривает выделение участка памяти и деление этого участка на фрагменты, соответствующие отдельным элементам объекта, каждый из которых отображает отдельный компонент данных класса. Таким образом, и в объекте x1, и в объекте dim[8] класса complex входит по два элемента типа float, представляющих вещественную и мнимую части комплексных чисел. Как только объекты класса определены, появляется возможность обращения к его компонентам, во-первых, с помощью имён, каждое из которых имеет формат: < имя объекта> . < имя класса> :: < имя элемента>
Имя класса с операцией уточнения области действия ‘:: ’ обычно может быть опущено, и чаще всего для доступа к данным конкретного объекта заданного класса (как и в случае структур) используется уточнённое имя: < имя объекта> . < имя элемента> При этом возможности те же, что и при работе с элементами структур. Например, можно явно присвоить значения элементам объектов класса complex: x1. re=dim[8]. re=1. 24; x1. im=2. 3; dim[8]. im=0. 0;
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|