П. 5.3. Объявление объекта




Некоторые замечания по объектно-ориентированному программированию

В идеале в языке С++ программирование должно быть объектно-ориентированное (ООП), единицей программирования является класс, на основе которого создаются объекты.

Основные понятия и принципы ООП: объект, класс, инкапсуляция, наследование и полиморфизм. Класс является обобщением понятия типа данных и задает свойства и поведение объектов класса, называемых так же экземплярами класса. Каждый объект принадлежит некоторому классу.

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

При программировании на С++ обычно используются стандартные блоки: классы из библиотек классов и функции из стандартной библиотеки AINI C, классы и функции, создаваемые вами самими, и классы и функции, созданные другими программистами, но доступные вам.

До сих пор рассматривалось использование готовых объектов из стандартной библиотеки (объекты cin, cout, объект endl и т.д.). С их помощью можно решить много задач. Но даже самый лучший набор готовых объектов нельзя применить ко всем задачам, для этого создаются собственные объекты. Гораздо проще справиться с большими и сложными проблемами, имея возможность описать объекты, о которых идет речь в задаче. Моделировать работу системы отопления проще, имея возможность манипулировать переменными, соответствующими датчикам температур, параметрам помещения и т.д.

Классы предоставляют возможность программисту моделировать объекты, которые имеют атрибуты или характеристики (представленные как данные-элементы) и способы поведения или операции (представленные как функции-элементы).

Класс – это механизм для создания объектов, представляет собой набор переменных, зачастую различных типов, скомбинированный с набором функций, предназначенных для работы с ним. Таким образом, класс можно представлять как объединение данных и процедур, предназначенных для их обработки.

Данные класса называются также переменными класса, а в языке С++ – данными-членами класса. Процедуры называются методами класса, в С++ – функциями-членами класса[14].

Формально в языке С++ класс определяется как новый тип, а объекты класса декларируются как переменные этого типа. Главное отличие объекта от обычно переменной заключается в том, что с ним уже связаны не только определенные значения данных, но и методы, т.е. функции класса, определяющие поведение объектов класса. Фактически каждый объект может решать определенные задачи, манипулируя своими данными с помощью методов класса.

Переменные определяют свойства и состояния объекта. Методы определяют поведение класса в языке [15].

 

П. 5.2. Объявление класса

 

Прежде чем создать собственный объект (новый тип) необходимо объявить собственный класс. Класс объявляется при помощи ключевого слова class.

 

сlass имя_класса

{

private: // по умолчанию

// закрытые функции и переменные класса

public:

// открытые функции и переменные класса

}

список_объектов;

 

В объявлении класса список_объектов не обязателен, можyj объявить объекты класса позже, по мере необходимости.

Для объявления открытых или закрытых разделов класса используются ключевые слова public и private. Каждое ключевое слово изменяет режим доступа данных объявленных ниже его до конца объявления класса или до тех пор, пока не встретится следующее ключевое слово управления доступом.

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

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

Пример. Объявим класс Car:

class Car

{

// данные-члены

// закрытый элемент класса

unsigned short Key; // переменная для хранения символического

// ключа

// открытые элементы класса

public:

unsigned int itsYear; // переменная для хранения значения

// возраст автомобиля

unsigned int numbDoors; // переменная для хранения значения

// числа дверей в автомобиле

// функция-член класса

void Start();

};

 

Здесь класс имеет одну закрытую переменную, две открытые переменные и одну открытую функцию.

При объявлении класса память не резервируется, объявление просто сообщает компилятору о существовании класса Car, о том какие данные он содержит, а также о том, что он умеет делать. Кроме того, объявление сообщает компилятору о размере класса, т.е. сколько место он должен зарезервировать для каждого объекта класса Car. Выделение памяти требуют переменные, метод Start() не требует выделения памяти, поскольку для функций-членов объекта пространство в памяти не резервируется.

 

п. 5.3. Объявление объекта

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

Объект нового типа (нового класса) определяется точно так же, как и любая целочисленная переменная: сначала указывается тип (имя класса), а затем имя переменной (имя объекта).

Объявим объект:

Car myZaparozec; //определение объекта класса (или типа) Car

 

 
 

После определения объекта класса возникает необходимость получить доступ к членам (переменным и методам) этого объекта. Для этого используется оператор «.» точка, который позволяет обратиться к элементам объекта непосредственно. При этом компилятор выдаст подсказку вида:

 

 

Поэтому, для того, чтобы присвоить значение переменной-члену itsAge объекта myZaparozec, можно записать:

myZaparozec.itsYear =20;

Важно помнить, что значения присваиваются не классу, а переменным-членам объекта.

Для вызова метода Start() используется запись:

myZaparozec.Start ()

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-15 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: