Professional Documents
Culture Documents
Oop Av6
Oop Av6
Аудиториски вежби 6
Наследување
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ
И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО
Задача 1
Да се дефинира класа за репрезентација на тениски играч. За секој
тениски играч треба да се чуваат името, презимето како и тоа дали
игра во лига (bool).
#include <iostream>
#include <cstring>
using namespace std;
class TenisIgrac
{
private:
enum { MAX = 20};
char ime[MAX];
char prezime[MAX];
bool Igra_vo_Liga;
public:
TenisIgrac (const char * i = "“,const char * p = "", bool ht = false);
void pecati() const;
bool IgraVoLiga() const
{
return Igra_vo_Liga;
}
void ResetLiga(bool v)
{
Igra_vo_Liga = v;
}
};
int main () {
TenisIgrac Igrac1("Tara", "Boomdea", false);
RangiranIgrac rIgrac1(1140, "Mallory", "Duck", true);
rIgrac1.pecati();
// objekt od izvedena klasa koristi metod od osnovnata
if ( rIgrac1.IgraVoLiga() )
cout << ": pripagja na liga.\n";
else
cout << ": ne pripagja na liga.\n";
Igrac1.pecati ();
// objekt od osnovnata klasa koristi metod od osnovnata
if ( Igrac1.IgraVoLiga())
cout << ": pripagja na liga ";
else
cout << ": ne pripagja na liga.\n";
cout << "Ime: ";
rIgrac1.pecati();
cout << "; Rang: " << rIgrac1.Rangiranje() << endl;
RangiranIgrac rIgrac2( 1212, Igrac1 );
cout << "Ime: ";
rIgrac2.pecati();
cout << "; Rating: " << rIgrac2.Rangiranje() << endl;
return 0;
} Објектно – ориентирано програмирање
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ
И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО
Излез од програмата
Duck, Mallory: pripagja na liga.
Boomdea, Tara: ne pripagja na liga.
Ime: Duck, Mallory; Rang: 1140
Ime: Boomdea, Tara; Rating: 1212
Задача 2
Да се дефинира класа Smetka за работа со банкарска сметка. За
секоја банкарска сметка треба да се чува име и презиме на
корисникот (низа од макс. 35 знаци), број на сметка (long) и
моментално салдо (double). Да се овозможат методи за преглед на
сметката, депонирање и подигнување на пари од сметката.
#include <iostream>
#include <cstring>
using namespace std;
// Osnovna klasa - Smetka
class Smetka
{
private:
enum { MAX = 35};
char imeprezime[MAX];
long smetkaBroj;
double saldo;
public:
Smetka ( const char *ip = "", long sb = -1,
double bal = 0.0 );
void Deposit ( double suma );
void Podiganje ( double suma );
double Saldo() const;
void Pregled() const;
~Smetka() {}
};
// metodi za Smetka
Smetka::Smetka( const char *s, long sb, double bal)
{
strncpy(imeprezime, s, MAX - 1);
imeprezime[MAX - 1] = '\0';
smetkaBroj = sb;
saldo = bal;
}
void Smetka::Deposit( double suma)
{
if (suma < 0)
cout << " Negativno saldo ne e dozvoleno; "
<< "depositot e storniran.\ n";
else
saldo += suma;
}
// metodi na SmetkaPlus
SmetkaPlus::SmetkaPlus( const char *s, long sb, double bal, double mz,
double r ) : Smetka ( s, sb, bal ) // повик на конструктор од Smetka
{
maxZaem = mz;
Dolzi = 0.0;
kamata = r;
}
SmetkaPlus::SmetkaPlus ( const Smetka & ba, double mz , double r )
: Smetka ( ba ) // имплицитно се користи копирачки конструктор
{
maxZaem = mz;
Dolzi = 0.0;
kamata = r;
}
// redefiniranje na Pregled()
void SmetkaPlus::Pregled() const
{
Smetka::Pregled(); // повик на функцијата Pregled() од основната класа
cout << "Maximalen zaem" << maxZaem << endl;
cout << "Dolzi na bankata" << Dolzi << endl;
cout << "Kamata: " << 100 * kamata << "%\ n";
}
// redefiniranje na Podiganje()
void SmetkaPlus::Podiganje( double suma)
{
double bal = Saldo();
if (suma <= bal)
Smetka::Podiganje(suma);
else if ( suma <= bal + maxZaem - Dolzi)
{
double advance = suma - bal;
Dolzi += advance * (1.0 + kamata);
cout << "Dolg kon bankata: " << advance << endl;
cout << "Dolg so kamata: " << advance * kamata << endl;
Deposit(advance);
Smetka::Podiganje(suma);
}
else
cout << "Limitot za kredit e nadminat. Stornirana transakcija.\ n";
}
int main()
{
Smetka Petko ("Petko Petkovski", 381299, 4000 );
SmetkaPlus Trpe ("Trpe Trpevski", 382288, 3000 , 500 , 0.1 );
Petko.Pregled();
cout << endl;
Trpe.Pregled();
cout << endl;
cout << "Deposit od 1000 den na smetkata na Trpe:\ n";
Trpe.Deposit (1000);
cout << "Novo saldo: " << Trpe.Saldo() << endl;
cout << "Podiganje na 4200 den od smetkata na Petko:\ n";
Petko.Podiganje (4200);
cout << "Saldoto na Petko e: " << Petko.Saldo() << endl;
cout << "Podiganje na 4200 den od smetkata na Trpe:\ n";
Trpe.Podiganje( 4200 );
Trpe.Pregled();
return 0;
}
Излез од програмата:
….
Broj na smetka: 382288
Saldo: 3000
Maximalen zaem: 500
Dolzi na bankata: 0
Kamata: 10%