Лабораторная работа № 1
Объектно-ориентированное проектирование.
Объекты и классы.
Выполнил:
Студент группы ЭС-21
Рубцов К.М.
Цель работы: изучить последовательность прохождения этапов объектно-ориентированного программирования.
Индивидуальное задание.
Имеется некоторый источник света, который генерирует множество фотонов с некой известной частотой.
В лаборатории изобретён фильтр, позволяющий отсеивать фотоны с некоторыми свойствами, а именно: если частота кратна некой частоте.
Определить из множества заданных фотонов количество отфильтрованных и суммарную отфильтрованную энергию(E = h * ν , h = 6,626 * 10-34).
Для выполнения задачи спроектировать класс фильтра, для которого определить поле фильтрующей частоты, поле отфильтрованной энергии, метод посылки фотона через фильтр (один параметр - частота фотона, целое число в Гц).
Задать в классе конструктор с одним параметром, для которого определить действие обнуления фильтрованной энергии и действие задания по параметру частоты фильтрации.
В деструкторе вывести в консоль сумму отфильтрованной энергии.
Продемонстрировать в программе запись и чтение полей класса, а также работу с одним объектом этого класса.
Листинг программы:
#include <iostream>
#include <stdlib>
const double gc_h = 6.626e-31;
// Cоздаем класс фильтра.
class filter_t {
public:
// Фильтрующая частота.
int m_friengucy_filter;
// Суммарная отфильтрованная энергия.
double m_energy;
// Установка частоты фильтра, обнуление энергии.
filter_t(int friengucy) {
m_energy = 0;
m_friengucy_filter = friengucy;
};
//определяем метод посылки фотона через фильтр
void filt(int friengucy_foton) {
//реализуем проверку на кратность частоты
if(friengucy_foton % m_friengucy_filter == 0) {
//увеличение отфильтрованной энергии на энергию отфильтрованного фотона
m_energy += friengucy_foton*gc_h;
}
}
// Задем деструктор, выводящий в консоль сумму отфильтрованной энергии.
~filter_t(){
std::cout<< " Энергия отфильтрованных фотонов равна " << m_energy <<"КДж." <<std::endl;
};
}; // class filter
int main(){
// Определяем фильтр.
filter_t filter(100);
// Количество фотонов.
int quant_foton;
// Вспомогательная переменная, частота фильтремого фотона.
int now_foton=0, friengucy_foton;
std::cout << "Частота фильтра равна " << filter.m_friengucy_filter << " МГц;" <<std::endl;
std::cout << " Введите лимит фильтруемых фотонов: " <<std::endl << " >";
std::cin >> quant_foton;
std::cout << std::endl;
//Генерация фотонов с фильтрацией.
while(quant_foton >= now_foton){
friengucy_foton = rand();
filter.filt(friengucy_foton);
now_foton++;
}
//Активируем деструктор
filter.~filter_t();
std::cin >> quant_foton;
return 0;
Скриншот:
Выводы: изучен способ создания консольных приложений защищённого режима в среде Borland C++ Builder, изучена методика работы в интегрированной среде разработки (IDE); отобразили на практике теоретические знания об объектах и классах (создание класса, задание его методов, свойств, конструкторов и деструкторов, встроенные в язык средства очистки стекового фрейма с упреждённым вызовом деструкторов, инициализацию экземпляра класса); решена задача тестирования полученного класса в интерактивном режиме; изучен метод оформления программного кода, альтернативный венгерской нотации.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.