Ezt így van helyesen megoldva?
Most tanulom az OO programozást de nem tudom,hogy ennek a programnak így kell e kinéznie objektum orientáltan.
//main.cpp
# include <iostream>
# include <windows.h>
using std::cout;
using std::cin;
using std::endl;
typedef unsigned short ushort;
//globális változók:
ushort mm = 0;
class SIM
{
public:
SIM();
~SIM();
void Pin(ushort x);
void Pukk(ushort y);
void Pukk2(ushort z);
void Bead(ushort m);
private:
ushort *itsPin;
ushort *itsPukk;
ushort *itsPukk2;
ushort *itsSzamlalo;
ushort itsBead;
};
SIM::SIM()
{
itsPin = new ushort(1234);
itsPukk = new ushort(4321);
itsPukk2 = new ushort(6789);
itsSzamlalo = new ushort(3);
}
SIM::~SIM()
{
delete itsPin;
delete itsPukk;
delete itsPukk2;
delete itsSzamlalo;
}
void SIM::Pin(ushort x)
{
if(x == *itsPin)
{
cout <<"PIN-kod jo";
Sleep(500);cout <<".";
Sleep(500);cout <<".";
Sleep(500);cout <<".";
Sleep(500);cout <<".";
Sleep(500);cout <<".";
exit(0);
}
else
{
*itsSzamlalo-=1;
cout <<"PIN-kod rossz ";
if(*itsSzamlalo > 0)
{cout <<"meg "<< *itsSzamlalo <<" lehetoseged van \n";}
if(*itsSzamlalo > 0){mm = 1;Bead(mm);}
else {mm = 2;Bead(mm);}
}
}
void SIM::Pukk(ushort y)
{
if(y == *itsPukk)
{
cout <<"PUKK-kod jo ";
*itsSzamlalo+= 1;
Bead(1);
}
else
{
cout <<"PUKK-kod rossz ";
Bead(3);
}
}
void SIM::Pukk2(ushort z)
{
if(z == *itsPukk2)
{
cout <<"PUKK2-kod jo ";
Bead(2);
}
else
{
cout <<"PUKK2-kod rossz SIM-zarolva! \n"
<<"KILEPES!!";
Sleep(500);cout <<".";
Sleep(500);cout <<".";
Sleep(500);cout <<".";
Sleep(500);cout <<".";
Sleep(500);cout <<".";
exit(0);
}
}
void SIM::Bead(ushort m)
{
mm = m;
switch(mm)
{
case 1:
cout <<"Add meg a PIN-kodot: "; cin >> itsBead; Pin(itsBead);
break;
case 2:
cout <<"Add meg a PUKK-kodot: "; cin >> itsBead; Pukk(itsBead);
break;
case 3:
cout <<"Add meg a PUKK2-kodot: "; cin >> itsBead; Pukk2(itsBead);
break;
}
}
int main()
{
SIM *Simcard = new SIM;
Simcard->Bead(1);
delete Simcard;
cin.get();
return 0;
}
Külön header file-ba rakják az osztály member-einek és metódusainak definícióit és külön az osztály implementációt.
Utána meg be include-olják az osztály(ok) header file(-ai)-t.
A main-ba a Simcard változót statikusan is példányosíthatnád.
Az osztály adattagjainak nem kell pointernek lenniük, ha nem muszáj. A konstruktorba pedig szebb lenne egy olyan, ami három paramétert vár és abból ad értéket a pin, puk,puk2 változóknak.
az a globális mm változó NAGYON csúnya. "mm = 1;Bead(mm);" ennek semmi értelme nincs. "Bead(1);" és jól van.
Amúgy szerintem korrekt program, és destruktort sosem írok, a külön header és cpp fájlok viszont kellenek (csomagokra bontás)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!