- •1 Характеристика мови програмування
- •2.4 Опис класів та методів
- •2.7 Контрольний приклад
- •3.4 Опис класів та методів
- •3.7 Керівництво користувачеві
- •3.4 Опис класів та методів
- •4.7 Контрольний приклад
- •5.4 Опис класів та методів
- •6.4 Опис класів та методів
- •6.7 Контрольний приклад
- •7.4 Опис класів та методів
- •7.7 Контрольний приклад
- •Список використаних джерел
6.4 Опис класів та методів
При реалізації задачі в якості об’єктів розглядаємо форми для обчислення тих чи інших змінних. Для заданих об’єктів в проекті розроблені наступні класи: CFox5Dlg, Csv, Czz1, Czz2 з наступними інтерфейсними частинами представлених у підрозділу 6.4 і наступною реалізацію представленою у підрозділу 6.5.
Клас CFox5Dlg має наступний інтерфейс:
class CFox5Dlg : public CDialog
{
// Construction
public:
CFox5Dlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CFox5Dlg)
enum { IDD = IDD_FOX5_DIALOG };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CFox5Dlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CFox5Dlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnMenuitem32773();
afx_msg void OnMenuitem32771();
afx_msg void OnMenuitem32772();
afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP() };
Клас Czz1 має наступний інтерфейс:
class Czz1 : public CDialog
{
// Construction
public:
Czz1(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(Czz1)
enum { IDD = IDD_DIALOG1 };
float m_r;
float m_h;
CString m_res;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(Czz1)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(Czz1)
afx_msg void OnButton2();
afx_msg void OnButton1();
afx_msg void OnButton3();
//}}AFX_MSG
DECLARE_MESSAGE_MAP() };
Методи є обробниками подій кнопок. Члени змінних додаються до класу за допомогою майстра ClassWizard, шляхом зв’язування об’єктів для вводу значень змінних та заданих ідентифікаторів для змінних, це представлено у таблиці 6.3
Таблиця 6.3 – Члени – змінні класу Czz1
Ідентифікатор об’єкта |
Ідентифікатор змінної - члена класу |
Тип змінної |
IDC_EDIT1 |
m_r |
float |
IDC_EDIT2 |
m_h |
float |
IDC_EDIT3 |
m_res |
CString |
Клас Czz2 має наступний інтерфейс:
class Czz2 : public CDialog
{
// Construction
public:
Czz2(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(Czz2)
enum { IDD = IDD_DIALOG2 };
float m_r;
float m_h;
CString m_res;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(Czz2)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(Czz2)
afx_msg void OnButton1();
afx_msg void OnButton3();
afx_msg void OnButton2();
//}}AFX_MSG
DECLARE_MESSAGE_MAP() };
Методи є обробниками подій кнопок. Члени змінних додаються до класу за допомогою майстра ClassWizard, шляхом зв’язування об’єктів для вводу значень змінних та заданих ідентифікаторів для змінних, це представлено у таблиці 6.4
Таблиця 6.4 – Члени – змінні класу Czz2
Ідентифікатор об’єкта |
Ідентифікатор змінної - члена класу |
Тип змінної |
IDC_EDIT1 |
m_r |
float |
IDC_EDIT2 |
m_h |
float |
IDC_EDIT3 |
m_res |
CString |
6.5 Програмний код
//Блок 1 – інтерфейс класу Csv
class Csv
{
public:
double rs(float r);
double rs(float r,float h);
Csv();
virtual ~Csv();
// afx_msg double proc1(float);
// afx_msg double proc1(float, float);
template <class T> T TriangleSquare(T r)
{ return(T)((4.0/3.0)*pow(r,3)); }
template <class T> T TriangleSquare(T r, T h)
{ return (T)(3.14*pow(r,2)*h); }};
//Блок 2 – реалізація класу Csv
Csv::Csv()
{
}
Csv::~Csv()
{
//r=0;
// h=0;
}
double Csv::rs(float r)
{
return((4.0/3.0)*3.14*pow(r,3));
}
double Csv::rs(float r,float h)
{
return(3.14*pow(r,2)*h);
}
//Блок 3 – метод по обробці кнопки Button1 на формі перегрузки
void Czz1::OnButton1()
{
double se;
CString s;
UpdateData();
if (m_r=0) MessageBox("Нет такого шара радиус кооторого равен 0"); else
if (m_r<0) MessageBox("Радиус не может быть меньше 0"); else
{ Csv ob1;
se=ob1.rs(m_r);
m_res.Format("%4.2f",se);}
UpdateData(false);
}
//Блок 4 – метод по обробці кнопки Button3 на формі перегрузки
void Czz1::OnButton3()
{
double se;
CString s;
UpdateData();
if (m_r<=0) MessageBox("Нет такого цилиндра радиус кооторого равен 0"); else
if (m_h<=0) MessageBox("Нет такого цилиндра высота кооторого равна 0"); else
{Csv ob2;
se=ob2.rs(m_r,m_h);
m_res.Format("%4.2f",se);}
UpdateData(false);
}
//Блок 5 – метод по обробці кнопки Button1 на формі шаблону
void Czz2::OnButton1()
{
double se;
UpdateData();
Csv ob1;
se=ob1.rs(m_r);
m_res.Format("%4.2f",se);
UpdateData(false);
}
//Блок 6 – метод по обробці кнопки Button3 на формі шаблону
void Czz2::OnButton3()
{
double se;
UpdateData();
Csv ob2;
se=ob2.rs(m_r,m_h);
m_res.Format("%4.2f",se);
UpdateData(false);
}
//Блок 7 – метод по обробці пунктів меню
void CFox5Dlg::OnMenuitem32773()
{
CString Message ="\t \t Вы \n \t действительно \n хотите завершить работу?" ;
CString Title = "Завершение работы";
UINT nType = MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2 ;
int anser = MessageBox ( Message , Title , nType ) ;
if (anser==IDYES) CDialog:: OnOK();
}
void CFox5Dlg::OnMenuitem32771()
{
Czz1 ds;
ds.DoModal();
}
void CFox5Dlg::OnMenuitem32772()
{
Czz2 sd;
sd.DoModal();
}
//Блок 7 – метод по обробці контекстного меню
void CFox5Dlg::OnContextMenu(CWnd* pWnd, CPoint point)
{ CMenu cMenu, *pMenu;
cMenu.LoadMenu(IDR_MENU1);
pMenu=cMenu.GetSubMenu(0);
pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
}
6.6 Керівництво користувачеві
Для запуску програми запустити файл Fox5.exe. Після чого з’явиться меню програми яка представлена на рисунку 6.4.
Рисунок 6.4 – Меню
Для розв’язання задачі перегрузка необхідно натиснути на пункт меню «Перегрузка». Після чого з’явиться форма з умовою задачі та вводу даних для розв’язання задачі, яка представлена на рисунку 6.5.
Рисунок 6.5 – Форма перегрузки
Для розрахунку треба ввести необхідні данні, тобто R та h. Для виводу результатів треба натиснути кнопки, які виконують розрахунки – «Вичислення об’єму кулі», «Вичислення об’єму циліндру». Для виходу з програми або для переходу на інший розрахунов нажміть на кнопку «ВИХІД».
Для розв’язання задачі шаблон необхідно натиснути на пункт меню «Шаблон». Після чого з’явиться форма з умовою задачі та вводу даних для розв’язання задачі, яка представлена на рисунку 6.6.
Рисунок 6.6 – Форма шаблону
Для розрахунку треба ввести необхідні данні, тобто R та h. Для виводу результатів треба натиснути кнопки, які виконують розрахунки – «Вичислення об’єму кулі», «Вичислення об’єму циліндру». Для виходу з програми або для переходу на інший розрахунов нажміть на кнопку «ВИХІД».