Объектно- ориентированное программирование – новый способ подхода к программированию. Основное понятие языков объектно- ориентированного программирования – объект.
Объект – это логическая единица, которая содержит данные и правила (методы) обработки этих данных. В качестве таких правил обработки выступают функции, т.е. объект объединяет в себе данные и функции, обрабатывающие эти данные. Внутри объекта данные и функции могут быть
- частными (приватными, private),
- защищенными (protected)
- общими (public).
Объектно – ориентированные языки обладают четырьмя важнейшими характеристиками:
инкапсуляцией, наследованием, полиморфизмом, абстракцией типов.
Понятие инкапсуляции означает, что в качестве единого целого рассматривается объединение некоторой группы данных и некоторой группы функций, называемых функциями- членами. В объекте реализована защита данных: если данные или функции- члены объявлены приватными или защищенными, то к ним нет доступа извне. Зато данные и функции, объявленные общими, доступны любому внешнему объекту.
Наследование позволяет одним объектам приобретать атрибуты и свойства других объектов, т.е. строить иерархию объектов, переходя от более общего к частному, уточняя и конкретизируя объект.
Полиморфизм означает, что одно и то же имя может использоваться для логически связанных, но разных целей, т.е. имя определяет класс действий, которые в зависимости от типа данных могут существенно отличаться. Например, сложение x и y для разных типов данных – целых, комплексных чисел, векторов.
Для того, чтобы определить объект, надо сначала определить его форму с помощью ключевого слова class. Например, определим класс queue, который затем будем использовать для определения объектов. Очередь- это структура данных, для которой введены действия «поставить в очередь» и «обслужить», при этом постановка в очередь осуществляется в конец очереди, а обслуживание происходит с начала очереди. Пусть очередь состоит из целочисленного массива и двух целочисленных переменных- маркера начала и маркера конца очереди. Поставить в очередь- это заполнить заданным значением очередной элемент массива с конца очереди. Обслужить – выдать значение очередного элемента с начала очереди. Очередь считается полной, если заполнен последний элемент массива. Очередь считается пустой, если маркеры начала и конца очереди указывают на один и тот же элемент массива.
Объявим класс queue:
|
По умолчанию все элементы класса приватные.
Приватные элементы не могут использоваться никакими функциями, не являющимися членами класса. Приватные функции, которые также можно определить, могут вызываться только другими функциями-членами класса. Чтобы переменные и функции были доступны для всех частей программы, следует объявить их общими, т.е. после ключевого слова public.
Функции init( ), qput( ) и qget( ) называются членами-функциями класса queue. Эти функции имеют доступ к приватной части класса, т.к. они объявлены в классе.
После создания класса можно определить объект (переменную) этого типа с использованием имени класса, например, queuea,b; т. е. создали два объекта (a и b) одного типа. Классы – это не объекты (переменные), а шаблоны (типы) для создания объектов.
Для описания функций- членов класса необходимо указать, к какому классу относится эта функция.
Определим функцию init() класса queue следующим образом:
|
Для вызова функции из любой части программы, не являющихся членами класса, достаточно написать имя объекта и операцию точка, например a.init().
Следующая программа реализует модель структуры данных «очередь».
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.