Изучение механизмов, способов вызова и обработки исключений в среде C++ Builder, страница 7

Файл filter.hpp:

#if !defined( _FILTER_HPP_ )

#define _FILTER_HPP_

extern const double gc_h;

//! Класс фильтра.

class filter_t {

        public:

                //! Вывод поля класса "фильтрованная энергия".

                void

                print_frien_filter();

                //! Вывод поля класса "фильтрованная энергия".

                double

                print_energy();

                //! Установка частоты фильтра, обнуление энергии.

                filter_t(int friengucy);

                //! Определяем метод посылки фотона через фильтр

                void

                filt(int friengucy_foton);

                //! Задем деструктор, выводящий в консоль сумму отфильтрованной энергии.

                ~filter_t();

                //! Метод, обнуляющий отфильтрова нную энергию.

                void

                zero_energy(){

                        m_energy=0;

                }

        private:

                //! Фильтрующая частота.

                int m_friengucy_filter;

                //! Суммарная отфильтрованная энергия.

                double m_energy;

}; // class filter

#endif

Файл filter.hpp:

#if !defined( _FILTER_MOD_HPP_ )

      #define _FILTER_MOD_HPP_

//! Класс модернизированного фильтра.

#include "filter.hpp"

class filter_mod_t : public filter_t

{

        public:

        void

        //! Оператор посылки фотона через фильтр

        operator>>(int friengucy_foton_mod);

        //! Оператор обнуления отфильтрованной энергии

        void

        operator!();

        filter_mod_t(int friengucy);

};

#endif

Файл filter_mod.hpp:

#if !defined( _FILTER_MOD_HPP_ )

      #define _FILTER_MOD_HPP_

//! Љ« бб ¬®¤Ґа­Ё§Ёа®ў ­­®Ј® дЁ«мва .

#include "errors.hpp"

#include "filter.hpp"

class filter_mod_t : public filter_t

{

        public:

        void

        //! Оператор посылки фотон  через фильтр

        operator>>(int friengucy_foton_mod);

        //! Оператор обнуления отфильтров нной энергии        void

        operator!();

        //! Метод проверки на неотрицательность передоваемого параметра.

        void

        filter_mod_t::set_frien( double frien );

        filter_mod_t(int friengucy);

};

#endif

Файл class_filter_mod.cpp:

#include "filter_mod.hpp"

#include <iostream>

//! Оператор >> - посылка фотона в фильтр.

void

filter_mod_t::operator>>(int friengucy_foton_mod){

        filt(friengucy_foton_mod);

}

//! Оператор ! - обнуление отфильтрованной энергии.

void

filter_mod_t::operator!(){

        zero_energy();

}

filter_mod_t::filter_mod_t(int friengucy) : filter_t(friengucy){

};

void

filter_mod_t::set_frien( double frien ){

if (frien<0){

            frien=0;

            throw my_exception("╫рёЄюЄр ЇюЄюэр юЄЁшЎрЄхы№эр!");

        };

}

Файл errors.hpp:

#if !defined (_ERRORS_HPP_)

#define _ERRORS_HPP_

#include "filter_mod.hpp"

#include <fstream>

#include <iomanip.h>

/*!

\class my_exception_ex_t.

\brief Класс предназначен для обработки некорректного ввода данных, в частности, для

обработки ввода отрицательного зночения скорости.

\warning Данный класс не имеет аналогов и предназначен для

внутреннего использования.

\attention При использовании могут осуществлятьсяпоследующие модификации,

интерфейс методов при этом не изменится.

*/

class my_exception{

private:

    string m_description;

public:

    my_exception( string description );

    void

    set_description( string description );

    string

    get_description();

};

#endif

Файл errors.cpp:

# include "errors.hpp"

/*! Далее представлен исполняемый код класса my_exception_ex_t, хранящего

текстовое описание ошибки. */

my_exception::my_exception( string description )

{

    set_description( description );

}

void

my_exception::set_description( string description )

{

    m_description = description;

}

string

my_exception::get_description()

{

    return m_description;

}

Скриншот документации Doxygen:

Скриншот рабочего окна программы:

Вывод: при выполнении лабораторной работы были изучены механизмы, способы вызова и обработки исключений в среде C++ Builder.