
- •1 Характеристика мови програмування
- •2.4 Опис класів та методів
- •2.7 Контрольний приклад
- •3.4 Опис класів та методів
- •3.7 Керівництво користувачеві
- •3.4 Опис класів та методів
- •4.7 Контрольний приклад
- •5.4 Опис класів та методів
- •6.4 Опис класів та методів
- •6.7 Контрольний приклад
- •7.4 Опис класів та методів
- •7.7 Контрольний приклад
- •Список використаних джерел
7.4 Опис класів та методів
При реалізації задачі в якості об’єктів розглядаємо форми для обчислення тих чи інших змінних. Для заданих об’єктів в проекті розроблені наступні класи: CFox6Dlg, Czz1, Czz2, CKvadr_base, CKvadr1, CKvadr2 з наступними інтерфейсними частинами представлених у підрозділу 7.4 і наступною реалізацію представленою у підрозділу 7.5.
Клас CFox6Dlg має наступний інтерфейс:
class CFox6Dlg : public CDialog
{
// Construction
public:
CFox6Dlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CFox6Dlg)
enum { IDD = IDD_FOX6_DIALOG };
float m_a;
float m_b;
float m_v;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CFox6Dlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CFox6Dlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnMenuitem32771();
afx_msg void OnMenuitem32772();
afx_msg void OnMenuitem32773();
afx_msg void OnRadio1();
afx_msg void OnRadio2();
afx_msg void OnRadio3();
afx_msg void OnMas();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
Методи є обробниками подій кнопок. Члени змінних додаються до класу за допомогою майстра ClassWizard, шляхом зв’язування об’єктів для вводу значень змінних та заданих ідентифікаторів для змінних, це представлено у таблиці 7.3
Таблиця 7.3 – Члени – змінні класу CFox6Dlg
Ідентифікатор об’єкта |
Ідентифікатор змінної - члена класу |
Тип змінної |
IDC_EDIT1 |
m_a |
float |
IDC_EDIT2 |
m_b |
float |
IDC_EDIT2 |
m_v |
float |
Клас Czz1 має наступний інтерфейс:
class Czz1 : public CDialog
{
// Construction
public:
Czz1(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(Czz1)
enum { IDD = IDD_DIALOG1 };
// NOTE: the ClassWizard will add data members here
//}}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)
// NOTE: the ClassWizard will add member functions here
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
Клас Czz2 має наступний інтерфейс:
class Czz2 : public CDialog
{
// Construction
public:
Czz2(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(Czz2)
enum { IDD = IDD_DIALOG2 };
int m_i;
int m_j;
CMSFlexGrid m_mas;
//}}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 OnRadio1();
afx_msg void OnRadio2();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
Методи є обробниками подій кнопок. Члени змінних додаються до класу за допомогою майстра ClassWizard, шляхом зв’язування об’єктів для вводу значень змінних та заданих ідентифікаторів для змінних, це представлено у таблиці 7.4.
Таблиця 7.4 – Члени – змінні класу Czz2
Ідентифікатор об’єкта |
Ідентифікатор змінної - члена класу |
Тип змінної |
IDC_EDIT4 |
m_i |
Int |
IDC_EDIT5 |
m_j |
Int |
IDC_MSFLEXGRID1 |
m_mas |
CMSFLEXGRID |
6.5 Програмний код
//Блок 1 – інтерфейс класів CKvadr_base, CKvadr1, CKvadr2
class CKvadr_base
{
protected:
float a, float p, float s;
public:
CKvadr_base();
CKvadr_base(float);
virtual ~CKvadr_base();
float p1_kvadr();
float s1_kvadr();
};
class CKvadr1:public CKvadr_base
{
// public:CKvadrat;
protected:
float b;
public:
CKvadr1();
CKvadr1(float a1,float);
virtual ~CKvadr1();
float p1_kvadr();
float s1_kvadr();
};
class CKvadr2:public CKvadr1
{
// public:CKvadrat;
protected:
float v;
public:
CKvadr2();
CKvadr2(float a1,float b1,float);
virtual ~CKvadr2();
float p1_kvadr();
float s1_kvadr();
};
//Блок 2 – реалізація класів CKvadr_base, CKvadr1, CKvadr2
CKvadr_base::CKvadr_base()
{
}
CKvadr_base::~CKvadr_base()
{
}
CKvadr_base::CKvadr_base(float a1)
{
a=a1;
}
float CKvadr_base::p1_kvadr()
{
p=2*(a+a);
return(p);
}
float CKvadr_base::s1_kvadr()
{
s=a*a;
return(s);
}
CKvadr1::CKvadr1(float a1,float b1):CKvadr_base(a1)
{
b=b1;
}
CKvadr1::CKvadr1()
{
}
CKvadr1::~CKvadr1()
{
}
float CKvadr1::p1_kvadr()
{
p=2*(a+b);
return(p);
}
float CKvadr1::s1_kvadr()
{
s=a*b;
return(s);
}
CKvadr2::CKvadr2(float a1,float b1,float v1):CKvadr1(a1,b1)
{
v=v1;
}
CKvadr2::CKvadr2()
{
}
CKvadr2::~CKvadr2()
{
}
float CKvadr2::p1_kvadr()
{
p=2*(a+b);
return(p);
}
float CKvadr2::s1_kvadr()
{
s=a*b*v;
return(s);
}
//Блок 3 – інтерфейс класy Czz1
class Czz1 : public CDialog
{
// Construction
public:
Czz1(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(Czz1)
enum { IDD = IDD_DIALOG1 };
// NOTE: the ClassWizard will add data members here
//}}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)
// NOTE: the ClassWizard will add member functions here
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//Блок 4 – інтерфейс класy Czz2
class Czz2 : public CDialog
{
// Construction
public:
Czz2(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(Czz2)
enum { IDD = IDD_DIALOG2 };
int m_i;
int m_j;
CMSFlexGrid m_mas;
//}}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 OnRadio1();
afx_msg void OnRadio2();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//Блок 5 – метод по обробці кнопки RadioButton1 на формі масиву.
void Czz2::OnRadio1()
{
int p=0,pr=0;
int stolb;
CString s,w,mn,mx,sw,st,qw;
int st2,i,j;
UpdateData();
stolb=m_i+1;
st2=m_j+1;
for (i=1;i<st2;i++)
for (j=1;j<stolb;j++){
m_mas.SetRow(i);
m_mas.SetCol(j);
if (atoi(m_mas.GetText())>0)
{pr=pr+1;}
if (atoi(m_mas.GetText())<0)
{p=p+1;}
}
if (pr==0) {MessageBox("Нет положительных элементов в данном массиве");}
else{s.Format("%d",pr);s="Кол-во положительных элементов = "+s; MessageBox(s);}
if (p==0) {MessageBox("Нет отрицательных элементов в данном массиве");}
else{s.Format("%d",p);s="Кол-во отрицательных элементов = "+s; MessageBox(s);}
}
//Блок 6 – метод по обробці кнопки RadioButton2 на формі масиву.
void Czz2::OnRadio2()
{
int p=0,pr=0;
int stolb;
CString s,w,mn,mx,sw,st,qw;
int st2,i,j;
UpdateData();
stolb=m_i+1;
st2=m_j+1;
for (i=1;i<st2;i++)
for (j=1;j<stolb;j++){
m_mas.SetRow(i);
m_mas.SetCol(j);
if (atoi(m_mas.GetText())==0)
{pr=pr+1;} }
if (pr==0) {MessageBox("Нет элементов с нулевым значением в данном массиве");}
else{s.Format("%d",pr);s="Кол-во нулевых элементов = "+s; MessageBox(s);}
}
//Блок 7 – метод по обробці кнопки Button1 на формі масиву.
void Czz2::OnButton1()
{ int stolb;
CString s;
int st2,i,j;
UpdateData();
stolb=m_i+1;
st2=m_j+1;
m_mas.SetCols(stolb);
m_mas.SetRows(st2);
int **mas=new int *[st2];
for (i=1;i<st2;i++)
mas[i]=new int [stolb];
for (i=1;i<st2;i++)
for (j=1;j<stolb;j++)
{
m_mas.SetRow(i);
m_mas.SetCol(j);
mas[i][j]=rand()%801-400;
s.Format("%d",mas[i][j]);
m_mas.SetText(s);
}}
//Блок 8 – метод по обробці кнопки RadioButton1 на формі об’ектів.
void CFox6Dlg::OnRadio1()
{
float se,qe;
CString s,q;
UpdateData();
CKvadr_base ob1(m_a);
se=ob1.p1_kvadr();
qe=ob1.s1_kvadr();
s.Format("%4.2f",se);
q.Format("%4.2f",qe);
s="Периметр = "+s+"; Площадь = "+q;
MessageBox(s);
UpdateData(false);
}
//Блок 9 – метод по обробці кнопки RadioButton2 на формі об’ектів.
void CFox6Dlg::OnRadio2()
{
float se,qe;
CString s,q;
UpdateData();
CKvadr1 ob2(m_a,m_b);
se=ob2.p1_kvadr();
qe=ob2.s1_kvadr();
s.Format("%4.2f",se);
q.Format("%4.2f",qe);
s="Периметр = "+s+"; Площадь = "+q;
MessageBox(s);
UpdateData(false);
}
//Блок 10 – метод по обробці кнопки RadioButton3 на формі об’ектів.
void CFox6Dlg::OnRadio3()
{
// TODO: Add your control notification handler code here
float se,qe;
CString s,q;
UpdateData();
CKvadr2 ob3(m_a,m_b,m_v);
se=ob3.p1_kvadr();
qe=ob3.s1_kvadr();
s.Format("%4.2f",se);
q.Format("%4.2f",qe);
s="Периметр = "+s+"; Площадь = "+q;
MessageBox(s);
UpdateData(false);
}
7.6 Керівництво користувачеві
Для запуску програми запустити файл Fox6.exe. Після чого з’явиться меню програми яка представлена на рисунку 7.5.
Рисунок 7.5 – Меню
Для розрахунку треба ввести необхідні данні, тобто задати значення елементу, а саме 2 сторони та угол між ними. Для виводу результатів треба натиснути кнопки, які виконують розрахунки – «Квадрат», «Прямокутник», «Паралелограм» після чого автоматично з’явиться результат в діалоговому вікні.
Для розв’язання задачі з масивом необхідно натиснути на пункт меню «Mas». Після чого з’явиться форма з умовою задачі та вводу даних для розв’язання задачі, яка представлена на рисунку 7.6.
Рисунок 7.6 – Масиви
Для розрахунку треба ввести необхідні данні, тобто задати кількість елементів та самі елементи. Для виводу результатів треба натиснути кнопки, які виконують розрахунки – «Кількість парних і непорних», «Кількість елементів з нульовим значенням».