Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания.doc
Скачиваний:
9
Добавлен:
18.04.2015
Размер:
619.52 Кб
Скачать

36

Концепция класса

Ключевым понятием объектно-ориентированного проектирования и программирования является понятие класса.

Класс представляет собой обобщение однородных объектов реального мира. Другими словами, класс описывает общие свойства и поведение некоторой совокупности объектов. Свойства класса представлены в виде переменных класса, а его поведение – в виде методов (функций). Например, в виде класса может быть представлена концепция человека (персоны). Переменными такого класса будут: ФИО, текущие паспортные данные, номер свидетельства о рождении и т.п. В основу методов может быть положено следующее поведение: поступление на работу, получение заработной платы и т.д.

Класс описывает свойства и поведение объектов статическим способом. Это значит, что содержание класса не может быть изменено без изменения и повторной сборки программного обеспечения. Экземпляры классов (объекты) в ходе работы программы создаются и удаляются в вычислительной среде динамически, в соответствии с кодом программы. Если класс – это описание свойств объектов, то экземпляр класса отражает конкретный объект реального мира. Например, класс «человек» описывает свойства всех людей, а отдельный экземпляр этого класса – соответствует конкретному человеку.

Переменные класса

Класс содержит описание двух аспектов – структурного аспекта и аспекта поведения. Остановимся на первом. Структура данных класса представляет собой последовательность переменных. Порядок следования переменных важен и определяет их расположение в памяти при создании объектов.

Как и другие переменные, переменная класса относится к некоторому типу и имеет имя (уникальное в рамках класса). Тип переменной характеризуется размером, то есть количеством байт, занимаемых каждым значением. В качестве типа переменной могут быть использованы другие классы объектов. В этом случае нижестоящий объект (являющийся переменной класса) входит как часть в вышестоящий объект. Приведем пример класса на языке C++:

class Person {

int number; -- Индивидуальный номер человека

char name[10]; -- Имя

int age; -- Возраст

float height; -- Рост

};

В соответствии с размером переменных на стадии компиляции для каждого класса формируется описание расположения переменных в памяти относительно начала объектов, например, следующего вида:

Имя класса

переменной в классе

Тип переменной

Название переменной

Смещение от начала объекта

Размер переменной

Person

1

int

Number

0

4

Person

2

char[]

Name

4

10

Person

3

int

Age

14

4

Person

4

float

Height

18

4

Иллюстративно структуру объектов класса в памяти можно представить следующим образом:

Все объекты, принадлежащие одному классу, имеют одинаковый размер, равный сумме размеров всех входящих переменных. Этот размер определяется на стадии компиляции и остается постоянным до тех пор, пока в структуру данных класса не будут внесены изменения.

Описанный аспект класса очень близок к понятию «структура» структурного программирования. Но есть и отличия, которые будут изложены при обсуждении управления доступом к переменным класса.