Міністерство освіти і науки, молоді та спорту України
НУ «ЛП»
Кафедра АСУ
Лабораторна робота №1
із об’єктно-орієнтованого програмування не тему:
“Оголошення та структура класу”
Львів 2012
Мета роботи: ознайомитись з основними компонентами інтегрованого середовища програмування, навчитись створювати, відлагоджувати і виконувати програмні проекти; вивчити оголошення класу та рівні захисту його елементів.
Послідовність роботи: 
Ознайомитись зі складом та режимами роботи обраного інтегрованого середовища.
Ознайомитись зі структурою програми мовою С++.
Побудувати та виконати програмний проект мовою С++.
Ознайомитись з особливостями оголошення класу та його об’єктів.
Відповідно до завдання написати програму мовою С++ та реалізувати її на комп’ютері.
Оформити звіт про роботу.
Текст індивідуального завдання:
Створити клас – дріб (раціональне число, що є відношенням двох цілих чисел). Визначити конструктор, деструктор, функції додавання, віднімання, множення і ділення дробів.
Текст програми
#include <iostream>
using namespace std;
class frac
{
         int num;
         int den;
         int gcd(int a, int b) {
             return (!b) ? a : gcd(b, a % b);
         }
  public:
         frac() { num=den=1; }
         frac(int a, int b) { num=a; den=b; }
         int GetNum() { return num; }
         int GetDen() { return den; }
         double GetRes() { return double(num)/den; }
         void SetNum(int a) { num=a; }               
         void SetDen(int a) { den=a; }
         frac Add(frac obj);
         frac Sub(frac obj);
         frac Mul(frac obj);
         frac Div(frac obj);
};
frac frac::Add(frac obj) {
     int a=num*obj.den+obj.num*den, b=den*obj.den;
     int n=(a>b)?gcd(a,b):gcd(b,a);
     frac obj1(a/n,b/n);
     return obj1;
}
frac frac::Sub(frac obj) {
     int a=num*obj.den-obj.num*den, b=den*obj.den;
     int n=abs((a>b)?gcd(a,b):gcd(b,a));
     frac obj1(a/n,b/n);
     return obj1;
}
frac frac::Mul(frac obj) {
     int a=num*obj.num, b=den*obj.den;
     int n=(a>b)?gcd(a,b):gcd(b,a);
     frac obj1(a/n,b/n);
     return obj1;
}
frac frac::Div(frac obj) {
     int a=num*obj.den, b=den*obj.num;
     int n=(a>b)?gcd(a,b):gcd(b,a);
     frac obj1(a/n,b/n);
     return obj1;
}
int main()
{
    int a, b;
    cout <<"a/b = ";
    cin >> a >> b;
    frac obj1(a,b);
    cout <<"d/c = ";
    cin >> a >> b;
    frac obj2(a,b);
    frac sum=obj1.Add(obj2), riz=obj1.Sub(obj2), dob=obj1.Mul(obj2), chs=obj1.Div(obj2);
    cout <<obj1.GetNum()<<"/"<<obj1.GetDen()<<" + "<<obj2.GetNum()<<"/"<<obj2.GetDen();
    cout <<" = "<<sum.GetNum()<<"/"<<sum.GetDen()<<" = "<<sum.GetRes()<<endl;
    cout <<obj1.GetNum()<<"/"<<obj1.GetDen()<<" - "<<obj2.GetNum()<<"/"<<obj2.GetDen();
    cout <<" = "<<riz.GetNum()<<"/"<<riz.GetDen()<<" = "<<riz.GetRes()<<endl;
    cout <<obj1.GetNum()<<"/"<<obj1.GetDen()<<" * "<<obj2.GetNum()<<"/"<<obj2.GetDen();
    cout <<" = "<<dob.GetNum()<<"/"<<dob.GetDen()<<" = "<<dob.GetRes()<<endl;
    cout <<obj1.GetNum()<<"/"<<obj1.GetDen()<<" / "<<obj2.GetNum()<<"/"<<obj2.GetDen();
    cout <<" = "<<chs.GetNum()<<"/"<<chs.GetDen()<<" = "<<chs.GetRes()<<endl;
    system("PAUSE");
    return 0; }
Реалізації програми
Реалізація 1:
Реалізація 2:
Висновок:  під час виконання цієї лабораторної роботи я ознайомився із поняттям класу, освоїв середовище компілятора DevC++ та реалізував на практиці програму, яка описує клас – дріб з функціями додавання, віднімання, ділення та множення дробів.