OOP-wat is de goede manier om met verschillende objecten te werken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cygio

cygio

02/05/2009 10:04:00
Quote Anchor link
Hoihoi,

Ik ben nieuw met OOP, dus lekker aan het experimenteren. Nu merk ik op dat er verschillende wegen zijn om hetzelfde te bereiken, maar wat is de goede of is er zelfs nog een manier die ik niet heb gezien, maar die nog beter is.

hieronder een experimentje, lijkt me simpel genoeg om mee te beginnen

Ik heb vier verschillende classes: Elke class heeft de nodige setters en getters.

-Bedrijf.class.php
*propertys*
-kvknr
-bedrijfsnaam
-telefoonnummer
-mobiel
-email
-websiteadres

Adres.class.php
*propertys*
-straatnaam
-huisnummer
-postcode
-plaats

BedrijfsPakket.class.php
*propertys*
-urlgooglemaps
-logo
-fotos
-bedrijfsomschrijving

BedrijfsPakket is misschien een beetje een onlogischenaam en dient eigenlijk als uitbreiding op bedrijf, het gaat tenslotte om extra informatie over het bedrijf.

de vierde class bestaat eigenlijk uit de voorgaande objecten en zal zorgdragen voor het opslaan en het laden ,etc van de gegevens.

BedrijfsGegevens.class.php
*propertys*
-Bedrijfsid
- Bedrijf (object)
-Adres (object)
-Pakket (object)

In de laatste class zullen dus bv. de methodes bedrijfGegevensLoad() en bedrijfsgegevensSave() voorkomen .

Is dit een logische class structuur of moet die anders????
Moet ik BedrijfsPakket extenden op Bedrijf????
Heel de boom extenden lijkt me niet de manier, of wordt dat wel is gedaan??
dus dan krijg je bv bedrijfsegegevens extends->BedrijfsPakket:Bedrijfspakket extends-> Adres :Adres extends Bedrijf.
Vanuit de Oop gedachte waarschijnlijk niet,

Het voordeel van heel de boom extenden, is dat je alles vanuit 1 object kan gebruiken. BV.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$oBedrijfsGegevens
=new BedrijfsGegevens()
$oBedrijfsGegevens->setBedrijfsnaam("bedrijfsnaam");
?>

Als je dit doet zonder de extends, dus echt alles gescheiden houdt zou de aanroep zo kunnen zijn .

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$oBedrijfsGegevens
=new BedrijfsGegevens();
$oBedrijfsGegevens->getBedrijf->setBedrijfsNaam("bedrijfsnaam");
?>


Wat is dus de goede manier om iets als boven omschreven te realiseren.
Zoals julle gemerkt zullen hebben, probeer ik gewoon dingen uit.
De vraag is alleen waarom iets wel doen of juist waarom iets niet doen.
Oop leer je niet zomaar ff, het is voornamelijk en manier van denken heb ik begrepen.

Alvast bedankt
 
PHP hulp

PHP hulp

17/11/2024 08:47:50
 
Mark PHP

Mark PHP

02/05/2009 11:50:00
Quote Anchor link
Persoonlijk vind ik dat je de zaken ietswat verkeerd aanpakt. Extenden mag alleen als A ook een B is, een Auto is bijvoorbeeld een Voertuig. Maar een Adres is geen Bedrijf of iets dergelijks. Meer info.

Verreweg de belangrijkste class lijkt me Bedrijf. Deze zou dan (in jou opzet) het volgende kunnen bevatten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
Bedrijf
- id
- kvk
- naam
- adres (object Adres)
- telnr
- mobiel
- email
- website

Wat je precies probeert te bereiken met BedrijfsGegevens en BedrijfsPakket is me een beetje onduidelijk gebleven.

In PHP zou je nu het volgende kunnen doen. Ik raad je aan constructors te gebruiken om initieel de data te vullen, in plaats van setters. Die kunnen later nog van pas komen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$bedrijf
= new Bedrijf(1, 123, 'naam', new Adres('Straatnaam', 1, '1111AA', 'Plaats'), 0123456789, 0612345678, 'email', 'website');
$straat = $bedrijf->getAdres()->getStraatnaam();

// Stel, de website veranderd, dan kan je set gebruiken.
$bedrijf->setWebsite('nieuwe website');
?>


Ik vond je vraagstelling nogal vaag, dus ik hoop dat dit ongeveer is wat je zoekt.
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
 
Cygio

cygio

02/05/2009 13:01:00
Quote Anchor link
Hoihoi,

ondanks mijn vage vraagstelling, ben je er toch ingeslaagd om een goed antwoord te geven, waar ik iets mee kan.

En natuurlijk pak ik dingen verkeerd aan, ben tenslotte aan het leren.Vandaar ook de post.

Maar je hebt me weer in de goede richting gestuurd, misschien is het handig dat ik het even klaar maak, en dan ff code laat zien, misschien kan je dan beter oordelen.Tenminste als je daar zin in hebt.

groet
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.