Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пз1 Классы и объекты.docx
Скачиваний:
16
Добавлен:
09.04.2015
Размер:
71.85 Кб
Скачать

Практическое занятие № 1

Создание и использование классов и объектов

Цель занятия:

  • изучить технику программирования нового типа данных (определение класса),

  • изучить использование объектов определяемого типа.

  • рассмотреть различные варианты сочетаний классов с другими классами и объектами

Время на выполнение работы: 2 часа

Учебные вопросы:

  1. Описание классов

  2. Создание объектов и работа с ними

  3. Создание методов и работа с ними

Подготовка к выполнению работы:

  1. Изучить рекомендованную литературу.

  2. Изучить материал настоящего руководства.

Материалы для подготовки к занятию:

  1. Конспект лекций

  2. [1] стр. 178 - 182

Основные теоретические сведения Определение класса

Класс можно определить с помощью конструкции

class имя_класса { компоненты класса };

Точка с запятой в конце ставится обязательно. В этом определении:

  • служебное слово - class;

  • имя класса — идентификатор;

  • компоненты класса — определения и объявления данных и принадлежащих классу функций.

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

  • с полями и методами;

  • только с полями;

  • только с методами;

  • без полей и без методов.

Класс без полей и без методов называется пустым классом.

Элементы класса типа struct no умолчанию открыты и доступны в других частях программы. Члены класса class по умолчанию закрыты и недоступны вне данного класса. Доступ к содержимому класса задается спецификаторами доступа, которые обозначаются ключевыми словами public и private. Ключевое слово public объявляет элемент класса доступным вне класса, а ключевое слово private закрывает доступ снаружи. После ключевого слова требуется поставить знак “:” (двоеточие).

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

Примеры объявлений классов приведены в листинге 1.

Листинг 1. Примеры объявлений классов

class NullType {}; //пустой класс

class Fraction

{

int num;

Int denum; //поля - закрыты

public:

void reduce(); //метод - открыт

};

class XXX

{

int yyy(); //метод - закрыт

public:

int fff(int t); //метод - открыт

int RRR; //поле - открыто

};

class Money

{

private:

double Rubls;

public:

void Add(const double &r);

void Display();

};

class Date

{

int month, day, year; // поля - месяц, день, год

public:

void set(int d, int m, int y); //метод - установить дату

void get(int &d, int &m, int &y); //метод - получить дату

void next(); // метод - установить следующую дату

void print(); // метод - показать дату

};

Использование класса

Имея определение класса, можно объявлять переменные типа «имя_класса». Переменная класса называется объектом, или экземпляром класса. Класс объявляется один раз, а вот объектов можно создать столько, сколько необходимо. Объекты объявляются аналогично переменным встроенного типа:

имя_класса имя_объекта; // скалярный объект

имя_класса *имя_объекта; // указатель

имя_класса имя_объекта[количество]; // массив

Следующие переменные могут быть объявлены для приведенных в листинге 1 классов:

NullType a, *pb; // скалярный объект и указатель

Date *pd; // указатель

Money t; // скалярный объект

Money *p; // указатель

Money m[100]; // массив объектов

Переменную можно инициализировать другой переменной того же класса. Разрешается объявлять и ссылки на объекты с обязательной инициализацией.

Money x = t; //инициализация переменной

Date y(d); //инициализация переменной

Date &u = y; //обязательная инициализация ссылки

Если поля открыты, разрешается обычная инициализация полей инициализатором структуры, например

class Person

{ public: string Fio; double summa; };

Person Kunaev = { "Kупаев H.”, 10000.00 };

Указатели могут быть инициализированы так же, как и указатели на переменные встроенных типов:

Money *pt = new Money, *pp = pt, *ps;//объявление указателей

ps = new Money; //и создание объектов

Date *pd = new Date(), *pr; //объявление указателей

pr = new Date(); //и создание объектов

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

class Count

{

Money Summa; // сумма счета

unsigned long NumberCount; // номер счета

Date D; // дата открытия счета

public: