- •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.3.3. Независимость интерфейса от реализации
//Лабораторная работа № 20
//Независимость интерфейса от реализации
//Вариант № 30
//Задание 3-3
//Выполнила ст. Петрова А.А.
#include <iostream> // for cin cout
#include <conio.h>
using namespace std;
class CBox // объявление класса
{
// по умолчанию спецификатор доступа private
double m_Size[3]; // поле - массив
public: // определение методов класса при объявлении
void Setlength(double sl)
{m_Size[0] = sl; }
void Setwidth(double sw)
{m_Size[1] = sw; }
void Setheight(double sh)
{m_Size[2] = sh; }
// доступ к полям через методы класса
double Getlength()
{ return m_Size[0]; }
double Getwidth()
{ return m_Size[1]; }
double Getheight()
{ return m_Size[2]; }
double Volume( ); // метод – вычисление объема
};
// определение метода класса вне объявления класса
double CBox::Volume()
{ return m_Size[0] * m_Size[1] * m_Size[2]; }
// программа не изменяется
int main()
{
// создание статического объекта (экземпляра класса)
CBox mybox1;
// инициализация полей через методы класса
mybox1.Setlength(2);
mybox1.Setwidth(3);
mybox1.Setheight(4);
cout<<mybox1.Getheight()<<" "<<mybox1.Volume()<< endl;
// 4 24
// создание динамического объекта
CBox *pmybox2 = new CBox;
// инициализация полей через методы класса
pmybox2->Setlength(5);
pmybox2->Setwidth(6);
pmybox2->Setheight(7);
cout<<pmybox2->Getlength()<<" "<<pmybox2->Volume()<<endl;
delete pmybox2; // удаление динамического объекта
cout << "\nНажмите любую клавишу..." ;
getch();
return 0;
}
Тестирование
2.4.3.3.4. Конструктор, деструктор
//Лабораторная работа № 20
//Конструктор, деструктор
//Вариант № 30
//Задание 3-4
//Выполнила ст. Петрова А.А.
#include <iostream> // for cin cout
#include <conio.h>
using namespace std;
class CBox // объявление класса
{
// по умолчанию спецификатор доступа private
double m_length; // поле - длина
double m_width; // поле - ширина
double m_height; // поле - высота
public:
CBox()//конструктор для инициализации полей значениями =0
{ m_length = 0; m_width = 0; m_height = 0; }
// перегруженный конструктор
// для инициализации двух полей значениями,
// третье поле инициализируется 0
CBox(double l, double w)
{ m_length = l; m_width = w; m_height = 0;}
// перегруженный конструктор для инициализации полей
CBox(double l, double w, double h)
{ m_length = l; m_width = w; m_height = h; }
~CBox () // деструктор
{ cout << "destructor CBox done"<<endl;}
void Print ()
{ cout<<" L = "<<m_length<<" W = "<<m_width<<
" H="<<m_height<<endl;
}
double Volume( )
{ return m_length * m_width * m_height; }
};
int main()
{ // вызов конструктора для инициализаци полей
// значениями 0 0 0
CBox mybox1;
mybox1.Print();
// вызов конструктора для инициализаци полей
// значениями 1 2 3
CBox mybox2(1, 2, 3);
mybox2.Print();
// вызов конструктора для инициализаци полей
// значениями 1 2 0
CBox mybox3(1, 2);
mybox3.Print();
// вызов стандартного конструктора копирования
CBox mybox4 = mybox2;
mybox4.Print();
// вызов стандарного конструктора копирования
mybox1 = mybox2;
mybox1.Print();
cout << "\nНажмите любую клавишу..." ;
getch();
return 0;
} // вызов деструктора
Тестирование