OOП  Примери

Дефинирање класа

Синтакса
class ime_na_klasata {
private:   /* nacin na pristap so promenlivite. Moze da bide private, public ili protected */
    /* deklaracija na promenlivi i metodi koi ne se vidlivi nadvor od klasata */
public :
    /* deklaracija na promenlivi i metodi koi se vidlivi nadvor od klasata */
};
Пример
class Kuboid {
private:
        int a, b, c;
public:
        // Default konstruktor
        Kuboid(){
                cout << "Default konstruktor" << endl;
        }
        // konstruktor so argumenti
        Kuboid(int aa, int bb, int cc) {
                a = aa;
                b = bb;
                c = cc;
                cout << "Konstruktor" << endl;
        }
        ~Kuboid() {        cout << "Destruktor" << endl; }
        // Method za presmetka na povrsina
        int povrsina() {
                return 2 * (a * b + a * c + b * c);
        }
        // Method for computing volume
        int volumen() {
                return a * b * c;
        }
};
Синтакса
  • Конструктор (Constructor) - посебен метод на секоја класа кој се повикува секогаш кога се креира (инстанцира) објект од класата
  • Деструктор (Destructor) - посебен метод на секоја класа кој се повикува кога треба да се ослободи меморијата која ја опфатил конструираниот објект
Пример 1. Да се напише класа за опишување на геометриско тело триаголник. Во класата да се напишат методи за пресметување на плоштината и периметарот на триаголникот.
Потоа да се напише главна програма во која ќе се инстнацира еден објект од оваа класа со вредности за страните кои претходно ќе се прочитаат од стандарден влез. На овој објект да се повикат соодветните методи за пресметување на плоштината и периметарот.
#include <iostream>
#include <cmath>
using namespace std;

class Triagolnik {
private:
    int a, b, c;
public:
    // Konstruktor
    Triagolnik(int x, int y, int z) {
        a = x;
        b = y;
        c = z;
    }
    // Destruktor
    ~Triagolnik() {
    }

    int perimetar() {
        return a + b + c;
    }

    float povrsina() {
        float s = (a + b + c) / 2;
        return sqrt(s * (s - a) * (s - b) * (s - c));
    }
};
int main() {
    int a, b, c;
    cin >> a >> b >> c;
    Triagolnik t(a, b, c);
    cout << "Povrsina: " << t.povrsina() << endl;
    cout << "Perimetar: " << t.perimetar() << endl;
    return 0;
}
Пример 2. Да се напише класа за опишување на геометриско тело правоаголник. Во класата да се напишат методи за пресметување на плоштината и периметарот на правоаголникот.
Потоа да се напише главна програма во која ќе се инстнацира еден објект од оваа класа со вредности за страните кои претходно ќе се прочитаат од стандарден влез. На овој објект да се повикат соодветните методи за пресметување на плоштината и периметарот.

#include<iostream>
using namespace std;

class pravoagolnik{
    private:
        int a;
        int b;

    public:
    pravoagolnik(int aa,int bb)
    {
        a=(aa>=0)?aa:0;
        b=(bb>=0)?bb:0;
    }

    int povrsina(){
        return a*b;
    }
    int obem(){
        return 2*(a+b);
    }
 

};

int main()
{
    pravoagolnik prav(4,5);
    cout<<prav.obem()<<endl;
    cout<<prav.povrsina()<<endl;
}

 

Пример 3. Да се напише класа во која ќе се чуваат основни податоци за време :

  • час
  • минута
  • секунда.
Напишете главна програма во која се задаваат вредности на час, минута и секунда, а потоа ги печати со функција (Да се проба со функција која ќе биде во и надвор од класата).

#include<iostream>
using namespace std;

class vreme {
public:
    int cas;
    int minuta;
    int sekunda;

public:
    // void pecati(int,int,int);

void pecati(int c,int m,int s)
{
    cout<<c<<":"<<m<<":"<<s<<endl;
}

};

    //void vreme::pecati(int c,int m,int s)
    //{
        // cout<<c<<":"<<m<<":"<<s<<endl;
    //}

int main()
{
    vreme V;
    V.cas=19;
    V.minuta=30;
    V.sekunda=20;
    V.pecati(V.cas,V.minuta,V.sekunda);
}
 

Пример 4. Да се напише класа во која ќе се чуваат основни податоци за студент:
  • име на студент
  • индекс
  • оцена.
Напишете главна програма во која се читаат од стандарден влез податоци за 3 студенти, а потоа се печати листата на студенти.

#include<iostream>
#include<cstdlib>
#include<cstring>

using namespace std;

class student{
    private:
        char ime[10];
        int brIndex;
        int ocena;

    public:
        student(char im[]="",int brInd=0,int oc=0)
        {
            strcpy(ime,im);
            brIndex=brInd;
            ocena=oc;
       }

      void setIme(char im[]){
           strcpy(ime,im);
      }
      void setBr(int brInd){
          brIndex=brInd;
     }
     void setOc(int oc){
         ocena=oc;
     }

    char *getIme(){
        return ime;
    }
    int getbrIndex(){
        return brIndex;
    }
    int getocena(){
        return ocena;
    }

    void pecati(char *im,int brInd,int oc){     //*im=im[]
        cout<<im<<brInd<<oc<<endl;
    }
};


int main()
{
    class student stud[3];
    int i=0;
    char ime[10];
    int brIndex;
    int ocena;

    for(i=0;i<3;i++){
        cout<<"Vnesete ime!"<<endl;
        cin>>ime;
        cout<<"Vnesete broj na indeks!"<<endl;
        cin>>brIndex;
        cout<<"Vnesete ocena!"<<endl;
        cin>>ocena;
        stud[i].setIme(ime);
        stud[i].setBr(brIndex);
        stud[i].setOc(ocena);
        stud[i].pecati(stud[i].getIme(),stud[i].getbrIndex(),stud[i].getocena());
       // cout<<stud[i].getIme()<<stud[i].getbrIndex()<<stud[i].getocena()<<endl;
    }
}