Изучение последовательности прохождения этапов объектно-ориентированного программирования

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

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

Лабораторная работа № 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); отобразили на практике теоретические знания об объектах и классах (создание класса, задание его методов, свойств, конструкторов и деструкторов, встроенные в язык средства очистки стекового фрейма с упреждённым вызовом деструкторов, инициализацию экземпляра класса); решена задача тестирования полученного класса в интерактивном режиме; изучен метод оформления программного кода, альтернативный венгерской нотации.

Похожие материалы

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