men forstår ikke meningen i at putte variabler i private, også lave acceseor metoder.
Der er ingen mening, det er rent spild af tid. Det er en meget gammel mani blandt nogle OO-nørder, som har misforstået OO. Du vinder intet.
Til Jess; naturligvis er det en god ide at sætte sig ind i grundprincipperne i OO. Men at lave trivielle "accessor metoder" har intet med god OO programmering at gøre og man vinder reelt intet ved at lave "accessor metoder".
Det er jeg ikke enig med dig i. Du har ikke mulighed for at styre adgangen til variablerne hvis de er offentlige på klassen.
Forestil dig at du har en klasse som nedenstående. Det er dog kun et lille tænkt eksempel og ikke alle aspekter omkring sikkerhed er dækket i det.
class CPrincipal {
public:
char* pszUsername;
char* pszPassword;
}
Ovenstående vil gøre det muligt for alle umiddelbart at læse og skrive både brugernavn og adgangskode. Vælger du i stedet at bruge accessor metoder, så kan du pludselig begynde at styre adgangen og samtidig adgang til variablerne.
class CPrincipal {
public:
const char* getUserName();
void setUserName(const char* name);
void setPassword(const char* newpass);
void setPassword(const char* oldpass, const char* newpass);
private:
char* pszUsername;
char* pszPassword;
}
void CPrincipal::setUserName(const char* name)
{
if (!isMemberOf("admin")) // pseudo funktion
return;
// ToDo change name
}
void CPrincipal::setPassword(const char* newpass)
{
if (!isMemberOf("admin")) // pseudo funktion
return;
// ToDo change password
}
void CPrincipal::setPassword(const char* oldpass,
const char* newpass)
{
if (strcmp(pszPassword, oldpass))
return;
// ToDo change password
}
Herved tvinger du brugeren af klassen til at bruge den logik du har lagt og du beskytter tilgangen til dataene. Er alle medlemsvariable offentlige, så er der ingen grund til at bruge accessor metoderne. Man kan jo rette i dem direkte, så derfor laver man metoderne private.
Ved brug af flere DLL'er er det endvidere MEGET fornuftigt at bruge accessor metoder, da du så kan indkapsle dine allokeringer/deallokeringer i en DLL. Er alle variable public, så kan de blive allokeret fra en vilkårlig DLL, hvilket giver et meget dårligt og igennemskueligt design.
Indlæg senest redigeret d. 19.05.2008 17:20 af Bruger #10448