Toon posts:

php en overerving?

Pagina: 1
Acties:
  • 292 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben onderhand ook een beetje aan het klooien met php (toch wel een leuk taaltje :9); Ik moet er op het moment voor m'n stage een webbased-intranet in maken, compleet met mysql db...
Ik heb zelf veel ervaring met java/c++ en qua syntax heeft php er wel wat weg van, maar wat ik me dus afvroeg in hoeverre php dus ook object georienteerd (oo) te programmeren is. Classes, objecten dat kan allemaal heb ik al gezien; Maar iets over overerving heb ik nergens kunnen vinden.
Ondersteunt php dat wel?

BVD :)

Verwijderd

Topicstarter
::bump::

Verwijderd

Topicstarter
Is er echt niemand die hier een antwoord op heeft/weet?

  • jeroen|IA
  • Registratie: Juni 1999
  • Laatst online: 26-05-2025
sorry, ik kan je ook niet het verlossende antwoord geven, maar ik zou t zelf ook graag willen weten, dus daarom help ik ook maar ff deze topic bovenin de lijst te houden :9

  • tom kuipers
  • Registratie: Juli 1999
  • Laatst online: 23-02-2025
Als ik vragen mag...

wat is "overerving"

Verwijderd

Topicstarter
.................dubbele post

Verwijderd

Topicstarter
oeps...nog een dubbele post

Verwijderd

Topicstarter
overerving is het principe van super- en subclasses.

Stel je hebt:

class Persoon
{ String naam;

Persoon(String naam) //constructor
{ this.naam = naam;
}

String geefNaam()
{ return naam;
}
}

class Werknemer extends Persoon
{ private int salaris;

Werknemer(int salaris, String naam) //constructor
{ super(naam); //paas deze door naar Persoon
this.salaris = salaris;
}

int geefSalaris()
{ return salaris;
}
}

Dan overerft de class Werknemer de attributen en operations van de class Persoon door het "extends Persoon" gevalletje (Persoon is nu de superclass van Werknemer, Werknemer de subclass van Persoon)

  • tom kuipers
  • Registratie: Juli 1999
  • Laatst online: 23-02-2025
Mmm... moet me volgensmij toch eens iets meer gaan verdiepen in classes. Ik gebruik tot nu toe eigenlijk alleen functions...

wat is trouwens het voordeel van classes?

Maar Mas*mind, sorry, ik heb geeen idee...

Verwijderd

Topicstarter
Als je je programma in classes onderverdeelt en zoveel mogelijk functionaliteit van elkaar scheidt (voor de databasekoppeling een aparte class, voor de gui een aparte class en voor de algemene functies een aparte class -> 3-lagen model) maak je je programma veel makkelijker aanpasbaar en overzichtelijk.

Bijv. ik heb nu voor m'n intranet per onderdeel 3 classes; BedrijfGUI, Bedrijf en BedrijfDB; WerknemerGUI, Werknemer en WerknemerDB etc..etc...

Hierdoor kan je ook heel makkelijk je gui of database aanpassen zonder je hele programma te herprogrammeren (als je het goed gedaan hebt hoef je dan alleen in je *GUI of *DB classes te gaan zitten kutten)

Verwijderd

tom: Als je nog nooit object-georienteerd hebt geprogrammeerd, dan is het flink lastig om ermee uit de voeten te kunnen. Bovendien zullen je eerste classes geheid zo ontworpen zijn dat je net zo goed functies had kunnen gebruiken.

Als je er serieus mee aan de slag wilt gaan, kun je het beste ergens wat algemene documentatie over object georienteerd programmeren vandaan kunnen halen. Als je C++ kent, kijk dan eens naar Borland C++ Builder, als je Pascal kent, kijk naar Delphi. Beide gebruiken dezelfde componenten-bibliotheek en die is naar mijn mening nog steeds het meest briljante voorbeeld wat je met objecten allemaal kan.

Verwijderd

Topicstarter
Allemaal leuk en aardig, maar ik heb nog steeds geen antwoord op m'n vraag :)

Verwijderd

Mas: Ik heb ook geen antwoord :(
Op PHPBuilder.com staat een mooie tutorial voor classes, maar er wordt met geen woord gerept over inheritance. Op php.net heb ik nog niet gekeken en ik moet nu weg, dus dat wordt dan morgen. Webmonkey heeft niks, ik ben bang dat je toch wat moeilijks wilt...
Veel succes iig

Verwijderd

Op php.net stond het dus, had ik beter als eerste ipv als laatste kunnen zoeken ;)
http://www.php.net/manual/oop.php3
Classes can be extensions of other classes. The extended or derived class has all variables and functions of the base class and what you add in the extended definition. This is done using the extends keyword. Multiple inheritance is not supported.

class Named_Cart extends Cart {
var $owner;

function set_owner ($name) {
$this->owner = $name;
}
}

This defines a class Named_Cart that has all variables and functions of Cart plus an additional variable $owner and an additional function set_owner(). You create a named cart the usual way and can now set and get the carts owner. You can still use normal cart functions on named carts (...)
Ook constructors worden ondersteund, maar
For derived classes, the constructor of the parent class is not automatically called when the derived class's constructor is called.
Succes (en lees de link, ik heb alleen het belangrijkste gekwoot...)

Verwijderd

Topicstarter
Tenk joe :)

/me had zelf ook eigenlijk meteen op php.net kunnen kijken :o

  • tom kuipers
  • Registratie: Juli 1999
  • Laatst online: 23-02-2025
Nou, ik ga dan maar eens met classes aan de gang, maar volgensmij doe ik nu ongeveer hetzelfde alleen met functies. Dan maak ik allerlei functies voor bepaalde dingen.

Bij een pagina programmeer ik namelijk meestal zo. Ik maak een Index.php3. Vanaf daar include ik functions.php3, daar staan al mij functies in. Dan poep ik het begin van de layout uit want die is toch over de hele site bijna hetzelfde. Vanaf daar include ik het "sub gedeelte" B.V. Ik heb een site met: Productinfo, Frontpage, Bestelling. Dan Roep ik de Index.php3?IC=Frontpage aan. En in die file zet ik weer eens stukje van de divjes in voor de plaatsbepaling van de layout, en daar tussendoor roep ik de desbetreffende functies op.

Ook gebruik ik zoveelmogelijk strings in mijn script, b.v. voor de naam van de dbase, die is overal het zelfde, standaard tabelkleuren enz.

Ik vind het zelf wel handig zo. Zo kan hoef ik meestal maar 1 ding te veranderen, en mun hele layout of whatever veranderd mee.

Maar mag ik dan nu dat classes met die include van die Frontpage.php3 gaan vergelijken?(buiten alle functies die een class kan hebben om, ik weet niet of het zo is maar als het hetzelfde is als met functies dan heeft zo'n class eigen string defenities enzo?)

Verwijderd

Tom:
Als je met objecten aan de slag gaat, verhuis je het accent van de code naar de data. Je hebt een klasse Vervoermiddel met daarin de functie Ga_Naar. Daarvan afgeleid heb je vervolgens een klasse Auto met de variabele Aantal_Wielen en de functie Vul_Benzinetank. Als je dan ook nog ergens een klasse Vliegtuig en een klasse Fiets maakt, heb je 3 compleet verschillende basisvoertuigen die allemaal dezelfde eigenschappen van Voertuig erven. Omgekeerd heeft een Fiets uiteraard geen benzinetank...

Mooier nog, door dit mechanisme (Polymorfisme genoemd) kun je heel eenvoudig alle vervoermiddelen verplaatsen. Tenslotte werkt MijnFiets.Ga_Naar() net zo goed als MijnPriveVliegtuig.Ga_Naar(). En je kan een array van vervoermiddelen aanmaken, dus

$Array[0]=MijnFiets; $Array[1]=MijnPriveVliegtuig;

En dat het objecten zijn met andere eigenschappen doet voor je code niet ter zake.

Dat is naar mijn mening de grote kracht van objecten en als je die niet nodig hebt, kan je vaak net zo goed bij functies blijven steken.
Pagina: 1