Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 12 Классы_Объекты_Массивы объектов 2015.doc
Скачиваний:
65
Добавлен:
29.02.2016
Размер:
110.59 Кб
Скачать

Глава 12. Классы и объекты. Массивы объектов.

Определение класса, объекта

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

  • определение функций класса

  • создание объектов, доступ к членам класса

  • локальные и глобальные объекты

  • присваивание объектов

Конструкторы, деструкторы

  • конструкторы с параметрами

  • конструкторы по умолчанию

  • перегрузка конструкторов

Массивы объектов

Объектно-ориентированное программирование (в дальнейшем – ООП) – это новый подход к созданию программ, основными понятиями которого являются объект и класс.

Всюду в реальном мире нас окружают объекты: люди, животные, растения, здания, самолёты и тому подобные. Каждый объект характеризуется присущими ему свойствами и совершаемыми действиями (поведением). Объекты, обладающие похожими свойствами и поведением, принадлежат к одним и тем же, или похожим классам.

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

Инкапсуляция – это объединение данных и обрабатывающих их функций в одном объекте.

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

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

Определение класса, объекта

Класс представляет собой тип, определяемый пользователем, и в простейшем случае синтаксис его определения имеет вид:

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

// члены класса

};

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

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

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

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

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

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

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

Набор открытых функций-членов класса представляет открытый интерфейс класса.

class Samp{ // определение класса Samp

int a; // закрытая переменная a

public:

int b; // открытая переменная b

void set(int n); // открытые функции set(), get()

int get();

};

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