29. december 2004 - 13:01Der er
13 kommentarer og 1 løsning
pointere til objekter
Pointere til Objekter Jeg er lidt forvirret omkring pointere til objekter. Aktuelt vil jeg finde ud af hvordan man skal forbinde et medarbejder-objekt med et kunde-objekt:
MEDARBEJDER - KUNDE 1 - M(ange)
Her vil jeg mene der skal være en pointerattribut fra MEDARBEJDER og til KUNDE (Medarbejder kan oprette kunde, ikke omvendt):
Således skulle jeg mene at medarbejder-klassen og kunde-klassen se ud:
class MMedarbejder { public: MMedarbejder(); ~MMedarbejder(); . . . private: int MedarbejderNr; string MedarbejderNavn; string Adgangskode;
// her skal så være pointere til de objekter medarbejderklassen skal have adgang til og bruger (som jeg ser det) Mkunde *Pkunden; // og hvad medarbejderklassen ellers bruger.... } // slut på medarbejder
class MKunde { public: Mkunde::MKunde(); . . . private: int KundeNr; string KundeNavn; string telefon; //osv. F_Medarbejder //fremmednøgle til Medarbejder };
Ovenstående er som jeg selv ser det, men i et eksempel fra datamatikerstudiet, er tingene vendt om (og det gør mig forvirret):
Lager Vare 1 - M(ange) class Mlager { public: Mlager(); . . . private: int LagerId; string LagerNavn; };
class Mvare { public: Mvare(); ~Mvare(); . . private: string VareNr; string VareNavn; float Pris; int AntalPaaLager;
// iflg. Skolen skal oprettes en pointerattribut Lageret, der kan pege på et objekt af Klassen MLager Mlager* Lageret; };
Skulle jeg følge skolens eksempel, ville der gå en pointer fra Kunde(Mange) til Medarbejder(een), det synes jeg ikke lyder rigtigt – Så skulle mange kunder kunne oprette een medarbejder (?!), Mine klasser ville se sådan ud:
class Mmedarbejder { public: Mmedarbejder(); . . . private: int MedarbejderNr; string MedarbejderNavn; string Adgangskode;
}; //Altså INGEN pointer fra Medarbejder til Kunde!
Class Mkunde { public: Mkunde(); ~Mkunde(); . . . private: int KundeNr; string KundeNavn; string telefon; //osv. Mmedarbejder * Medarbejdereren; //pointer fra Medarbejder til Kunde.....
Jeg håber nogen kan forstå min forklaring og fortælle mig, hvad der er ret og hvad der er vrang...
Jeg er ikke helt med - må jeg indrømme. Jeg har en relationel database med fremmednøgler på mange-siden, som du beskriver. Og det er netop vejen, jeg vil navigere, som jeg taler om. Altså i mit tilfælde skal en MEDARBEJDER kunne oprette en KUNDE - og ikke omvendt. Derfor skal der være en pointer fra MEDARBEJDER og til KUNDE - hvis jeg har begge veje, bryder jeg jo med den objektorienterede indkapslingsidé. Er min antagelse rigtig?
indkapsling har ikke noget at gøre med om du kan navigere en eller begge veje - det har noget med at du har et public interface og en private implementation
Jeg har en bog. Men om den er god - kan vist diskuteres: "Objektorienteret analyse og design" af Mathiassen. http://www.metodica.dk/boeger.htm (den røde)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.