Fråga : Hur man programmerar väl

Jag har design/ideologic problem, och universitetsläraren vet att vilken lösning choose.

ClassWithData - är klassificerar att lagerdata för ClassWithFunction
ClassWithFunction - är, klassificera som gör något, genom att kalla dess, fungerar

class A
{cd för
ClassWithData; Cf för
ClassWithFunction;
private:
{(cd)
cf.function, för
RunWrapper ();            
för
}};

OR

class A
{cd för
ClassWithData; Cf för
ClassWithFunction;
private:
{
cf.function (x) för
RunWrapper (ClassWithData& x);            
för
}};
Iam som för

(RunWrapper är privat ofcourse), är förvirrad med det, därför att, jag skriver ibland något liknande i det första exemplet och ibland en något liknande, understöder utan någon reson.
" klar "

Svar : Hur man programmerar väl

Ok I ser, tack för att posta titelraderna. :)

Detta kodifierar overcomplicating klart saker, dess endast 1 klassificerar faktiskt nödvändigt, ganska än 3.

Låter appell det ”bearbeta”:

klassificera processaa
{
offentligt:
    Bearbeta (std:: wstring executable_name_, std:: wstring command_line_);
    ~Process (annullera);

    annullera StartProcess ();

privat:
    utan laga kraft CreateProcessAsActiveSession ();
    bool GetActoveConsoleSessionId (DWORD&-session_id);

privat:
    std:: wstring executable_name_;
    std:: wstring command_line_;
};

Medlem-fungera ”StartProcess” hör hemma in i denna klassificerar, därför att allt som den behöver benämner in, av data, är här.

Du ser att den har alla funktionsduglighet, som 3na klassificerar, men den encapsulates datan, och fungerar som fungerar på att data i 1 förlägger. Det är vad betyds av ”inkapsling” benämner in av OO-Att programmera.
Plusen det har ett mer ren att ha kontakt och är lättare att använda.

Kanske det gör det klarerare, om du funderare om att tillfoga nya funktionsdugligheter, lika KillProcess och andra, dem som alla hör hemma in i detta, klassificerar. Uppehället datan och fungerar som fungerar på att data i 1 förlägger tillsammans.
Andra lösningar  
 
programming4us programming4us