- •1. Краткие теоретические сведения
- •1.1. Объектно-ориентированный подход-Бузюков
- •1.2. Этапы разработки ооп систем
- •1.3. Декомпозиция
- •1.5. Концепции ооп
- •1.6. Синтаксис объявления класса
- •1.7. Методы класса
- •1.8. Объявление объектов
- •1.9. Конструктор
- •1.10. Деструктор
- •1.11. Инкапсуляция
- •1.12. Полиморфизм
- •1.13. Указатель this
- •1.14. Статические члены класса
- •1.15. Дружественные функции и классы
- •1.16. Вложенные классы
- •1.17. Элементы класса
- •1.17.1. Данные-элементы
- •1.17.2. Элементы-функции
- •1.17.3. Доступ к данным-элементам
- •1.17.4. Вызов функций-элементов
- •1.17.5. Указатели на компоненты-функции.
- •2. Задание
- •2.4.1.2. Пример для варианта 30
- •2.4.1.2.1. Разработка алгоритма решения.
- •2.4.1.2.2. Описание структуры класса.
- •2.4.1.2.2.1. Описание полей класса.
- •2.4.1.2.2.2. Функции-аксессоры.
- •2.4.1.3. Программа
- •2.4.1.4. Тестирование
- •2.4.2. Задание 2. Простейшие классы и объекты
- •2.4.2.1. Условие задания
- •2.4.2.2. Пример
- •2.4.2.3. Программа
- •2.4.2.4. Тестирование
- •2.4.3. Задание 3. Простейший класс. Объединение данных и методов
- •2.4.3.1. Условие задания
- •2.4.3.2. Пример
- •2.4.3.3. Программы
- •2.4.3.3.1. Первый принцип инкапсуляции: объединение данных и методов
- •2.4.3.3.2. Второй принцип инкапсуляции: защита от внешнего вмешательства
- •2.4.3.3.3. Независимость интерфейса от реализации
- •2.4.3.3.4. Конструктор, деструктор
- •2.4.3.3.5. Определение методов вне класса
- •2.4.3.3.6. Конcтантные поля, методы и объекты
- •2.4.3.4. Тестирование
- •2.4.4. Задание 4. Пользовательский класс
- •2.4.4.1. Условие задания
- •2.4.4.2. Методические указания.
- •1. Пример определения класса.
- •2. Пример реализации конструктора с выдачей сообщения.
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Объектно-ориентированный подход-Бузюков 2
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;
}
Тестирование – вариант б