Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

pristup privatnim podacima osnovne klase iz izvedene klase

[es] :: C/C++ programiranje :: pristup privatnim podacima osnovne klase iz izvedene klase

[ Pregleda: 2835 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ena_m
BiH

Član broj: 240982
Poruke: 8
*.tel.net.ba.



Profil

icon pristup privatnim podacima osnovne klase iz izvedene klase23.11.2009. u 20:34 - pre 144 meseci
imam klasu Razlomak sa privatnim podacima brojnik i nazivnik; i imam izvedenu klasu drugiRazlomak; unutar izvedene klase drugiRazlomak trebam da koristim privatne podatke osnovne klase Razlomak. ne znam kako, mozetel' mi pomoci?
 
Odgovor na temu

t0d0r

Član broj: 201774
Poruke: 27
*.artcommunication.rs.



Profil

icon Re: pristup privatnim podacima osnovne klase iz izvedene klase23.11.2009. u 20:48 - pre 144 meseci
private clanovi klase nisu dostupni izvedenoj klasi...Da bi ih koristila u izvedenoj klasi,
umesto kljucne reci private stavi protected. Protected clanovi i metode su potpuno vidljivi u izvedenim klasama
a u svim ostalim slucajevima se ponasaju kao private...

 
Odgovor na temu

ena_m
BiH

Član broj: 240982
Poruke: 8
*.tel.net.ba.



Profil

icon Re: pristup privatnim podacima osnovne klase iz izvedene klase23.11.2009. u 21:06 - pre 144 meseci
hmmmm, imam i dalje isti problem, tj. kad promijenim private u protected i dalje mi javlja gresku da koristim sada protected clanove ?!
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1236



+93 Profil

icon Re: pristup privatnim podacima osnovne klase iz izvedene klase23.11.2009. u 22:46 - pre 144 meseci
E pa onda stavi public... Šta u stvari želiš da postigneš? Svrha tih public, protected i private je u velikim projektima, gde ima više programera, i gde su podeljena zaduženja. Ako si jedina na projektu za početak stavi svuda public, a kasnije ćeš shvatiti čemu sve to služi.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8466
*.telenor.co.yu.



+2738 Profil

icon Re: pristup privatnim podacima osnovne klase iz izvedene klase23.11.2009. u 23:38 - pre 144 meseci
Ma, kakav public. Čovek radi zadatak za vežbu iz pravilne upotrebe koncepata. Okači ti ovde problematičan kod, pa da vidimo.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

ena_m
BiH

Član broj: 240982
Poruke: 8
*.tel.net.ba.



Profil

icon Re: pristup privatnim podacima osnovne klase iz izvedene klase24.11.2009. u 14:00 - pre 144 meseci
ima nekih gresaka jos u kodu al mi najvise stvara problem to sto mi javlja da su mi brojnik i nazivnik private, a moram doci do njih, a evo koda:

int nzd(int brojnik, int nazivnik)
{
int ostatak=1;
while (ostatak != 0)
{
ostatak=brojnik%nazivnik;
brojnik=nazivnik;
nazivnik=ostatak;
}
return brojnik;
}

//osnovna klasa
class Razlomak {
int brojnik;
int nazivnik;
public:
Razlomak () { brojnik=0; nazivnik=1; }
Razlomak ( int cijeli ) { Razlomak::brojnik=cijeli; Razlomak::nazivnik=1;}
Razlomak ( int br, int naz ) { brojnik = br; nazivnik = naz;}

void ispis ()const;

void pojednostavi();

friend Razlomak operator + (Razlomak razlomak1, Razlomak razlomak2)
{return Razlomak(razlomak1.brojnik*razlomak2.nazivnik + razlomak2.brojnik*razlomak1.nazivnik, razlomak1.nazivnik*razlomak2.nazivnik);}
friend Razlomak operator - (Razlomak razlomak1, Razlomak razlomak2)
{return Razlomak(razlomak1.brojnik*razlomak2.nazivnik - razlomak2.brojnik*razlomak1.nazivnik,razlomak1.nazivnik*razlomak2.nazivnik);}
friend Razlomak operator * (Razlomak razlomak1, Razlomak razlomak2)
{return Razlomak (razlomak1.brojnik * razlomak2.brojnik,razlomak1.nazivnik * razlomak2.nazivnik);}
friend Razlomak operator / (Razlomak razlomak1, Razlomak razlomak2)
{return Razlomak (razlomak1.brojnik * razlomak2.nazivnik,razlomak1.nazivnik * razlomak2.brojnik);}

friend bool operator == (Razlomak&, Razlomak&);

friend ostream& operator << (ostream&, Razlomak);
friend istream& operator >> (istream&, Razlomak&);

/* void doubleUrazlomak(double){}
friend bool operator < (Razlomak&, Razlomak&) {}
friend bool operator > (Razlomak&, Razlomak&) {}
friend bool operator <= (Razlomak&, Razlomak&) {}
friend bool operator >= (Razlomak&, Razlomak&) {}*/


~Razlomak(){cout << endl<< " " << endl;};
};


void Razlomak::ispis()const
{
cout << brojnik << "/"<< nazivnik;
}
void Razlomak::pojednostavi()
{
int ostatak=nzd(brojnik,nazivnik);


brojnik=brojnik/ostatak;
nazivnik=nazivnik/ostatak;

}


bool operator == (Razlomak &razlomak1, Razlomak &razlomak2)
{
if (razlomak1.brojnik != razlomak2.brojnik)
return false;
else if (razlomak1.nazivnik != razlomak2.nazivnik)
return false;
else
return true;
}




ostream& operator << (ostream &os, Razlomak razlomak1)
{
cout << "raz7 = ";
os << razlomak1.brojnik << "/" << razlomak1.nazivnik << endl;
return os;
}

istream& operator >> (istream &is, Razlomak &razlomak1)
{
is >> razlomak1.brojnik >> razlomak1.nazivnik;
return is;
}



//izvedena klasa
class mojRazlomak : public Razlomak
{
public:
void doubleUrazlomak(double dec);
friend bool operator < (Razlomak&, Razlomak&);
friend bool operator > (Razlomak&, Razlomak&);
friend bool operator <= (Razlomak&, Razlomak&);
friend bool operator >= (Razlomak&, Razlomak&);

~mojRazlomak(){};
};

void doubleUrazlomak(double dec)
{
int sprintf(char *dec);
}

bool operator < (Razlomak razlomak1, Razlomak razlomak2)
{
if (razlomak1.brojnik/razlomak1.nazivnik < razlomak2.brojnik/razlomak2.nazivnik)
return true;
else
return false;
}

bool operator > (Razlomak razlomak1, Razlomak razlomak2)
{
if (razlomak1.brojnik/razlomak1.nazivnik > razlomak2.brojnik/razlomak2.nazivnik)
return true;
else
return false;
}

bool operator <= (Razlomak razlomak1, Razlomak razlomak2)
{
if (razlomak1.brojnik/razlomak1.nazivnik <= razlomak2.brojnik/razlomak2.nazivnik)
return true;
else
return false;
}

bool operator >= (Razlomak razlomak1, Razlomak razlomak2)
{
if (razlomak1.brojnik/razlomak1.nazivnik >= razlomak2.brojnik/razlomak2.nazivnik)
return true;
else
return false;
}



int main(void)
{

Razlomak raz1(9,2);

Razlomak raz2(5,2);
Razlomak raz3,raz4,raz5,raz6,raz7,raz8,raz9,raz10,raz11;

cout<<"raz1 = ";
raz1.ispis();
cout<<endl;
cout<<"raz2 = ";
raz2.ispis();
cout<<endl;

cout<<"unosenje brojnika i nazivnika za operatore ostream i istream:"<<endl;
cin>>raz7;
cout<<raz7;

cout<<"preoptereceni operator + prije skracivanja:";
raz3=raz1+raz2;
raz3.ispis();
cout<<endl;
cout<<"preoptereceni operator + poslije skracivanja:"<<endl<<endl;
raz3.pojednostavi();
raz3.ispis();
cout<<endl<<endl;

cout<<"preoptereceni operator - prije skracivanja:";
raz4=raz1-raz2;
raz4.ispis();
cout<<endl;
cout<<"preoptereceni operator - poslije skracivanja:"<<endl<<endl;
raz4.pojednostavi();
raz4.ispis();
cout<<endl<<endl;

cout<<"preoptereceni operator * prije skracivanja:";
raz5=raz1*raz2;
raz5.ispis();
cout<<endl;
cout<<"preoptereceni operator * poslije skracivanja:"<<endl<<endl;
raz5.pojednostavi();
raz5.ispis();
cout<<endl<<endl;

cout<<"preoptereceni operator / prije skracivanja:";
raz6=raz1/raz2;
raz6.ispis();
cout<<endl;
cout<<"preoptereceni operator / poslije skracivanja:"<<endl<<endl;
raz6.pojednostavi();
raz6.ispis();
cout<<endl<<endl;

cout<<"preoptereceni operator + uz konverziju tipa int u tip razlomak, prije skracivanja:";
raz8=raz1+Razlomak(5);
raz8.ispis();
cout<<endl;
cout<<"preoptereceni operator + uz konverziju tipa int u tip razlomak, poslije skracivanja:"<<endl<<endl;
raz8.pojednostavi();
raz8.ispis();
cout<<endl<<endl;

cout<<"preoptereceni operator - uz konverziju tipa int u tip razlomak, prije skracivanja:";
raz9=raz1-Razlomak(5);
raz9.ispis();
cout<<endl;
cout<<"preoptereceni operator - uz konverziju tipa int u tip razlomak, poslije skracivanja:"<<endl<<endl;
raz9.pojednostavi();
raz9.ispis();
cout<<endl<<endl;

cout<<"preoptereceni operator * uz konverziju tipa int u tip razlomak, prije skracivanja:";
raz10=raz1*Razlomak(5);
raz10.ispis();
cout<<endl;
cout<<"preoptereceni operator * uz konverziju tipa int u tip razlomak, poslije skracivanja:"<<endl<<endl;
raz10.pojednostavi();
raz10.ispis();
cout<<endl<<endl;

cout<<"preoptereceni operator / uz konverziju tipa int u tip razlomak, prije skracivanja:";
raz11=raz1/Razlomak(5);
raz11.ispis();
cout<<endl;
cout<<"preoptereceni operator / uz konverziju tipa int u tip razlomak, poslije skracivanja:"<<endl<<endl;
raz11.pojednostavi();
raz11.ispis();
cout<<endl<<endl;

cout<<"jednakost razlomaka raz1 i raz2 (ispisuje 1-ako su jednaki, 0-ako nisu):"<<endl<<endl;
raz1.pojednostavi();
raz2.pojednostavi();
cout<<(raz1==raz2)<<endl<<endl;

mojRazlomak razlomak,razlomak1,razlomak2;
razlomak.doubleUrazlomak(3.14);

cout << "razlomak1 je manji od razlomka2 (ispisuje 1 ako jest, a 0 ako nije) ";
cout << (razlomak1<razlomak2)<<endl<<endl;
cout << "razlomak1 je veci od razlomka2 (ispisuje 1 ako jest, a 0 ako nije) ";
cout << (razlomak1>razlomak2)<<endl<<endl;
cout << "razlomak1 je manji ili jednak razlomku2 (ispisuje 1 ako jest, a 0 ako nije) ";
cout << (razlomak1<=razlomak2)<<endl<<endl;
cout << "razlomak1 je veci ili jednak razlomku2 (ispisuje 1 ako jest, a 0 ako nije) ";
cout << (razlomak1>=razlomak2)<<endl<<endl;

system("pause");

return 0;
}
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1236



+93 Profil

icon Re: pristup privatnim podacima osnovne klase iz izvedene klase24.11.2009. u 14:41 - pre 144 meseci
Ako članice moraju da budu private (jer je takav zadatak) onda napravi public funkcije recimo getBrojnik i getNazivnik koje samo vraćaju odgovarajuću vrednost, i u celom kodu zameni .brojnik sa .getBrojnik() (obrati pažnju na tačku). Analogno i za nazivnika.

Ako ti niko ništa nije rekao u vezi sa tim private (ne piše u zadatku) onda slobodno ih stavi da budu public.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8466
*.telenor.rs.



+2738 Profil

icon Re: pristup privatnim podacima osnovne klase iz izvedene klase24.11.2009. u 14:56 - pre 144 meseci
1. Fali ti na vrhu

#include<iostream>

using namespace std;

2. Ti pokušavaš da pritupiš podacima iz klase Razlomak iz funkcija koje su prijateljske za izvedenu klasu MojRazlomak. Njih ne može ni klasa Mrazlomak da vidi, a njene prijateljske funkcije ih ne mogu videti ni ako su u osnovnoj klasi zaštićeni (tada ih vidi izvedena klasa, ali ne i prijatelji izvedene klase). Dakle, operatore sprijatelji sa klasom razlomak.

3. Prijateljska funkcija mora imati isti prototip koji je naveden u deklaraciji sprijateljivanja. Ne može u friend stavci argument da se prenosi po referenci, a u implementaciji po vrednosti. To je druga funkcija.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.dynamic.sbb.rs.



+9 Profil

icon Re: pristup privatnim podacima osnovne klase iz izvedene klase24.11.2009. u 23:31 - pre 143 meseci
Važi i obratna stvar, tj. prijateljstvo se ne nasleđuje. Odnosno, ako su neke f-je prijatelji bazne klase, ne znači da su automatski prijatelji izvedene.
 
Odgovor na temu

ena_m
BiH

Član broj: 240982
Poruke: 8
*.tel.net.ba.



Profil

icon Re: pristup privatnim podacima osnovne klase iz izvedene klase25.11.2009. u 19:34 - pre 143 meseci
e hvala na pomoci uspjela sam preko metode getBrojnik i getNazivnik
 
Odgovor na temu

samilen
Saša Milenković
Beograd

Član broj: 11606
Poruke: 106
*.dynamic.sbb.rs.



Profil

icon Re: pristup privatnim podacima osnovne klase iz izvedene klase06.12.2009. u 11:26 - pre 143 meseci
Prouči i rezervisanu reč friend koja omogućuje da neke određene funkcije, ili cele klase imaju pristup privatnim članicama.
 
Odgovor na temu

[es] :: C/C++ programiranje :: pristup privatnim podacima osnovne klase iz izvedene klase

[ Pregleda: 2835 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.