Конструирование объектов. Объекты и классы. Компоненты классов. Конструкторы. Экземпляры класса. Пример создания описания класса

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

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

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

1 КОНСТРУИРОВАНИЕ ОБЪЕКТОВ

1.1 Цель работы

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

1.2 Оpганизация самостоятельной работы

При подготовке к лабораторной работе необходимо изучить лекционные материалы по темам “Объекты”, «Конструкторы», «Доступ к элементам класса».

1.2.1 Объекты и классы

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

Объекты, которые имеют одинаковую структуру, группируются вместе в “классы объектов”.

Создание абстрактных типов данных (классов) - это основополагающая концепция в объектно-ориентированном программировании. Абстрактные типы данных работают почти так же, как и базовые типы: можно создавать переменные этого типа (называемые объектами или экземплярами) и манипулировать этими переменными (это называется посылка сообщений или запрос; посылается сообщение и объект определяет, что нужно с ним делать).

Первый объектно-ориентированный язык Simula-67 был создан для решения “проблемы банковского кассира”. Имеется группа кассиров, клиентов, счетов, переводов и денег — множество “объектов”. Объекты каждого класса похожи: каждый счет имеет баланс, каждый кассир может принимать вклад. В то же время, каждый объект имеет свое собственное состояние: каждый счет имеет различный баланс, каждый кассир имеет имя. Поэтому кассиры, клиенты, счета, переводы и т.п. - уникальная сущность в компьютерной программе. Эта сущность и есть объект, а каждый объект принадлежит определенному классу, который определяет его характеристики и черты поведения.

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

Как только класс описан, можно создать столько объектов этого класса, сколько нужно, а затем манипулировать этими объектами. Каждый объект может удовлетворять только определенные запросы.

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

1.2.2 Компоненты классов

Классы обладают членами-данными (полями) и членами-функциями (методами).

Члены-функции определяют функциональные возможности класса.

Описание класса в языке С++ имеет две части: объявление и тело класса.

Функция – набор операторов, выполняющих некоторую задачу.

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

Если определение функции расположено за пределами класса, то оно приобретает вид:

void Car:: stop() {

speed=0;

}

1.2.3 Конструкторы

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

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

Пример:

class Complex{

private:

float re, im;

public:

Complex ();   

Complex (float, float);

};

Конструкторам дается такое же имя, как и классу. Конструкторы не возвращают значения. Примеры создания экземпляра класса Complex:

Complex c1= Complex (2, 5);

Complex c2(5, 10); // сокращенно

Complex d;

1.2.4 Экземпляры класса

В общем виде синтаксис обращения к элементам класса следующий:

имяЭкземпляра . имяФункцииИлиПеременной

Complex d;
cout<<d.day;

d.print();

1.2.5 Пример создания описания класса

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

#include <iostream.h>

#include <conio.h>

using std::cout;

class Complex{

private:

float re, im;

public:

Complex ();   

Complex (float, float);

void setComplex (float, float);

void print();

};

Complex:: Complex() // конструктор, создающий нулевое комплексное число

{re=0;

im=0;

}

Complex::Complex(float r, float i) // конструктор, создающий

// комплексное число  с ненулевой действительной и мнимой частью

{re=r;

im=i;

}

void Complex::setComplex(float r, float i){ // функция установки значений

// действительной и мнимой частей комплексного числа

re=r;

im=i;

}

void Complex:: print() // функция печати комплексного числа

{

cout<<re<<" + i*"<<im<<"\n";

}

int main(){   // тестирующая функция

Complex c1= Complex (2, 5);

Complex c2= Complex (5, 10);

с1.print();

Complex d;

d.print();

d.setComplex(7, 9.5);

d.print();

getch();

return 0;

}

main() – это функция, в которой происходит тестирование описанного класса Complex.

1.3 Описание лабораторной установки

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

1.4 Порядок выполнения и методические указания по выполнению работы

1.  Проанализируйте предметную область согласно выданного варианта задания. Выделите основные члены-данные и члены-функции, которыми будет обладать класс.

2.  Опишите класс. В описание класса необходимо включить, помимо функций, указанных в задании, 2-3 конструктора; функции считывания и установки значений полей get() и set(); ввода и вывода. При реализации конструктора и функций класса, меняющих значения членов-данных, следить за корректностью данных объекта. При необходимости студент самостоятельно вводит в проект дополнительные функции. За студентом сохраняется право, по согласованию с преподавателем, расширить функциональность своего класса.

3.  Напишите тестирующую функцию, работающую с экземплярами созданного класса, в том числе при помощи указателей, ссылок, массивов.

1.5. Содержание отчета

В отчет необходимо включить:

цель лабораторной работы;

описание роли классов и объектов в объектно-ориентированной программе;

распечатку текста описания класса, членов-функций и тестирующей функции и результатов ее работы;

выводы.

1.6. Контрольные вопросы и задания

1.  Что представляют собой объекты и классы?

2.  Что представляет собой член-функция? Как ее объявить?

3.  Что такое поля класса? Какие модификаторы доступа можно использовать с полями?

4.  Добавьте в программу обработку ситуации неверного ввода данных.

5.  Отделите интерфейс класса от его реализации.

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