Avatar billede Mikker Praktikant
07. juni 2005 - 13:19 Der er 13 kommentarer og
1 løsning

OOP - Liste over objektet

Hej Eksperter

Jeg har et generelt spørgsmål vedr. Objekt-Orienteret Programmering.

Jeg har:
En klasse = company
En databasetabel: companies

Hvis jeg vil have detaljerne for et firma opretter jeg et objekt af klassen company og kalder metoden getDetails:

objCompany = new company
company.getDetails()

Men hvis nu jeg vil vise en liste over alle firmaer(objekter) i tabllen/klassen. Så giver det for mig ingen mening at oprette et instans/objekt af klassen company og så hente alle companies -
f.eks. company.getCompanies()

Så spørgsmålet er altså: Hvad gør man i OOP når man vil arbejde med mange objekter i en klasse og altså ikke ét instans af klassen???

Er spørgsmålet forstået?
Avatar billede dr_chaos Nybegynder
07. juni 2005 - 13:22 #1
nu ved jeg ikke hvad sprog du arbejder med men hvis det er c# så kan du enten lave et array af company eller du kan hente alle firmaer ud fra databasen og add dem til en arraylist.
Avatar billede arne_v Ekspert
07. juni 2005 - 13:34 #2
det er det samme i andre programmerings sprog - et array eller en collection af objekter
Avatar billede Mikker Praktikant
07. juni 2005 - 13:41 #3
Programmeringssproget er underordnet. Det er et generelt spørgsmål. Jeg ved godt hvordan jeg udskriver et array eller trækker data ud af en tabel i en database.

Det er rent forståelsesmæssig OOP. Det giver for mig ingen mening at oprette et instans af klassen company for at vise alle companies.

Så helt basalt: Hvordan henter jeg samtlige objekter i en klasse (f.eks. til et array)?
Avatar billede roenving Novice
07. juni 2005 - 13:44 #4
Men du kan ikke bruge de enkelte instanser af en klasse uden at have oprettet dem !-)

-- og så kan man f.eks. smide alle de objekter ind i en arraylist, en hashtabel eller f.eks. et overobjekt, som indeholder et array af company !-)
Avatar billede Mikker Praktikant
07. juni 2005 - 13:49 #5
Mmmhh... Se på flg. pseudo-PHP-eksempel (virker ikke):
__________________________________________
class company($id){
       
        var $name;
       
        function getName(){
            $query = "SELECT name FROM companies WHERE id = $id";
            $this->name = get_result($query);
            return $this->name;    
        }   
    }
   
    $firma = new company(1);
   
    $firmanavn = $firma->getName();
_____________________________________

Her henter jeg navnet på firmaet med id=$id vha. klassen metode getName.

Men jeg vil gerne have returneret et array med samtlige firmaer fra tabellen companies.
Avatar billede arne_v Ekspert
07. juni 2005 - 13:53 #6
Hvis du vil opbevare X firmaer så skal du have et array af dimension X eller
en collection med X elementer af typen firma - altså X instanser af firma
klassen
Avatar billede arne_v Ekspert
07. juni 2005 - 13:54 #7
Det kan laves på maneg måder men hvis du vil minimere antallet af klasser, så
laver du din klasse firma med 2 static metoder FindByPrimaryKey og FindAll
som returnerer henholdsvis et firma objekt og et array / en collection af firma
objekter
Avatar billede Mikker Praktikant
07. juni 2005 - 14:00 #8
Giver det mening at have en metode i klassen som returnere alle (eller nogle) objekter af klassen (rækker i tabellen) ?

$array_firmaer = $firma->getAll();
Avatar billede arne_v Ekspert
07. juni 2005 - 14:06 #9
ja - hvis den er static (du må spørger en større PHP haj end mig hvad en static
metode hedder i PHP)
Avatar billede roenving Novice
08. juni 2005 - 00:56 #10
-- og om det faktisk er fornuftigt, kommer f.eks. an på en vurdering af dit datagrundlag, for hvis den liste over objekter (companies !-), du har brug for, er ekstremt stor ift. hvor tit du skal hente/bruge den, vil det at hente den fra databasen hver gang give mening, men hvis du tit skal bruge listen i applikationen eller den ikke er ret stor, vil det måske være bedre at have dem klar i en hashlist eller et overobjekt !o]
Avatar billede arne_v Ekspert
24. juli 2005 - 16:21 #11
miclyk>

Tid at få afsluttet dette spørgsmål ?

Bed dem som du synes har hjulpet dig ligge et svar og giv dem lidt tid inden du
accepterer
Avatar billede dr_chaos Nybegynder
04. februar 2006 - 16:38 #12
Du mangler at lukke spørgsmålet.
Avatar billede Mikker Praktikant
28. november 2006 - 11:29 #13
Lukker
Avatar billede roenving Novice
01. december 2006 - 16:12 #14
Tak ,-(
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester