Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР20-С++-16-сентября-2012 (1).doc
Скачиваний:
33
Добавлен:
12.11.2019
Размер:
1.18 Mб
Скачать

2.4.3.2. Пример

Создать объект «параллелепипед». Вычислить объем. Поля объекта: длина, ширина, высота фигуры.

2.4.3.3. Программы

2.4.3.3.1. Первый принцип инкапсуляции: объединение данных и методов

Вариант а. Исходные данные заданы присваиванием

//Лабораторная работа № 20

//Простейший класс

//Вариант № 30

//Задание 3-1

//Первый принцип инкапсуляции: объединение данных и методов

//Исходные данные заданы присваиванием

//Выполнила ст. Петрова А.А.

#include <iostream.h> // for cin cout

#include <conio.h>

using namespace std;

class CBox // объявление класса

{

public: // спецификатор доступа

double m_length; // поле - длина

double m_width; // поле - ширина

double m_height; // поле - высота

double Volume( );//объявление метода – вычисление объема

};

// определение метода класса вне объявления класса

double CBox::Volume()

{ return m_length * m_width * m_height;}

int main()

{

CBox mybox1;

// создание статического объекта (экземпляра класса)

// поля – public - нарушение второго принципа инкапсуляции

mybox1.m_length = 2; // инициализация полей !!!

mybox1.m_width = 3;

mybox1.m_height = 4;

cout << mybox1.Volume() << endl; //вычисление объема =24

//создание динамического объекта

// поля – public - нарушение второго принципа инкапсуляции

CBox *pmybox2 = new CBox;

pmybox2->m_length = 5; // инициализация полей !!!

pmybox2->m_width = 6;

pmybox2->m_height = 7;

// вычисление объема =210

cout << pmybox2->Volume() << endl;

delete pmybox2; // удаление динамического объекта

cout << "\nНажмите любую клавишу..." ;

getch();

return 0;

}

Тестирование – вариант а

Вариант б. Исходные данные заданы вводом

//Лабораторная работа № 20

//Простейший класс

//Задание 3-1m

//Вариант № 30

//Первый принцип инкапсуляции: объединение данных и методов

//Исходные данные заданы вводом

//Выполнила ст. Петрова А.А.

#include <iostream.h> // for cin cout

#include <conio.h>

using namespace std;

class CBox // объявление класса

{

public: // спецификатор доступа

double m_length; // поле - длина

double m_width; // поле - ширина

double m_height; // поле - высота

double Volume( );//объявление метода – вычисление объема

};

// определение метода класса вне объявления класса

double CBox::Volume()

{ return m_length * m_width * m_height;}

int main()

{

double length; // поле - длина

double width; // поле - ширина

double height; // поле - высота

CBox mybox1;

// создание статического объекта (экземпляра класса)

// поля – public - нарушение второго принципа инкапсуляции

cout << "Длина = ";cin >> length; //Ввод данных для полей

cout << "Ширина = ";cin >> width;

cout << "Высота = ";cin >> height;

mybox1.m_length = length; // Инициализация полей !!!

mybox1.m_width = width;

mybox1.m_height = height;

cout << mybox1.Volume() << endl; //Вычисление объема =24

//создание динамического объекта

// поля – public - нарушение второго принципа инкапсуляции

CBox *pmybox2 = new CBox;

cout << "Длина = ";cin >> length; //Ввод данных для полей

cout << "Ширина = ";cin >> width;

cout << "Высота = ";cin >> height;

pmybox2->m_length = length; // инициализация полей !!!

pmybox2->m_width = width;

pmybox2->m_height = height;

// вычисление объема =210

cout << pmybox2->Volume() << endl;

delete pmybox2; // удаление динамического объекта

cout << "\nНажмите любую клавишу..." ;

getch();

return 0;

}

Тестирование – вариант б