OOP-wat is de goede manier om met verschillende objecten te werken
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
-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)
1
2
3
4
2
3
4
<?php
$oBedrijfsGegevens=new BedrijfsGegevens()
$oBedrijfsGegevens->setBedrijfsnaam("bedrijfsnaam");
?>
$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)
1
2
3
4
2
3
4
<?php
$oBedrijfsGegevens=new BedrijfsGegevens();
$oBedrijfsGegevens->getBedrijf->setBedrijfsNaam("bedrijfsnaam");
?>
$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
Meer info.
Verreweg de belangrijkste class lijkt me Bedrijf. Deze zou dan (in jou opzet) het volgende kunnen bevatten:
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.
Ik vond je vraagstelling nogal vaag, dus ik hoop dat dit ongeveer is wat je zoekt.
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. Verreweg de belangrijkste class lijkt me Bedrijf. Deze zou dan (in jou opzet) het volgende kunnen bevatten:
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)
1
2
3
4
5
6
7
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');
?>
$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
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