Характеристики объектно-ориентированных языков. Конструкторы и деструкторы. Дружественные функции

Страницы работы

7 страниц (Word-файл)

Содержание работы

Объектно- ориентированное программирование – новый способ подхода к программированию. Основное понятие языков объектно- ориентированного программирования – объект.

Объект – это логическая единица, которая содержит данные и правила (методы) обработки этих данных. В качестве таких правил обработки выступают функции, т.е. объект объединяет в себе данные и функции, обрабатывающие эти данные. Внутри объекта данные и функции могут быть

-  частными (приватными, private),

-  защищенными (protected)

-  общими (public).

Объектно – ориентированные языки обладают четырьмя важнейшими характеристиками:

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

Понятие инкапсуляции означает, что в качестве единого целого рассматривается объединение некоторой группы данных и некоторой группы функций, называемых функциями- членами. В объекте реализована защита данных: если данные или функции- члены объявлены приватными или защищенными, то к ним нет доступа извне. Зато данные и функции, объявленные общими, доступны любому внешнему объекту.

Наследование позволяет одним объектам приобретать атрибуты и свойства других объектов, т.е. строить иерархию объектов, переходя от более общего к частному, уточняя и конкретизируя объект.

Полиморфизм означает, что одно и то же имя может использоваться для логически связанных, но разных целей, т.е. имя определяет класс действий, которые в зависимости от типа данных могут существенно отличаться. Например, сложение x и y для разных типов данных – целых, комплексных чисел, векторов.

Для того, чтобы определить объект, надо сначала определить его форму с помощью ключевого слова class. Например, определим класс queue, который затем будем использовать для определения объектов. Очередь- это структура данных, для которой введены действия «поставить в очередь» и «обслужить», при этом постановка в очередь осуществляется в конец очереди, а обслуживание происходит с начала очереди. Пусть очередь состоит из целочисленного массива и двух целочисленных переменных- маркера начала и маркера  конца очереди. Поставить в очередь- это заполнить заданным значением очередной элемент массива с конца очереди. Обслужить – выдать значение очередного элемента с начала очереди. Очередь считается полной, если заполнен последний элемент массива. Очередь считается пустой, если маркеры начала и конца очереди указывают на один и тот же элемент массива.

Объявим класс queue:

class queue {

private:           / режим доступа private к элементам класса

int q[10];

int sloc,rloc;   / маркеры начала и конца очереди

public:            / режим доступа public к функциям -членам класса

void init(void);

void qput(int i);                прототипы функций-членов класса

int qget(void);

};

 
 


 По умолчанию все элементы класса приватные.

Приватные элементы не могут использоваться никакими функциями, не являющимися членами класса. Приватные функции, которые также можно определить,  могут вызываться только другими функциями-членами класса. Чтобы переменные и функции были доступны для всех частей программы, следует объявить их общими, т.е. после ключевого слова public.

Функции init( ), qput( ) и  qget( ) называются членами-функциями класса queue. Эти функции  имеют доступ к приватной части класса, т.к. они объявлены в классе.

После создания класса можно определить объект (переменную) этого типа с использованием имени класса, например, queuea,b; т. е. создали два объекта (a и b) одного типа. Классы – это не объекты (переменные), а шаблоны (типы) для создания объектов.

Для описания функций- членов класса необходимо указать, к какому классу относится эта функция.

Определим функцию init() класса queue следующим образом:

void queue::init(void)   // функция init принадлежит классу queue

{

rloc=sloc=0;

}

 
 


Для вызова функции из любой части программы, не являющихся членами класса, достаточно написать имя объекта и  операцию точка, например   a.init().

Следующая программа реализует модель структуры данных «очередь».

Похожие материалы

Информация о работе