login  Naam:   Wachtwoord: 
Registreer je!
 Nota's op tutorial:

Tutorials > PHP > OOP (Public, Protected en Private)
Pagina:

Reacties op de tutorial OOP (Public, Protected en Private)


Offline  Thomas
Gepost op: 09 juni 2005 - 19:53
Moderator

Hoe zit het met het keyword static ?

En hoe zit het met abstracte classes (oid) zo die er zijn in PHP ?
Of andere OOP-zaken ?

:)

Offline  nemesiskoen
Gepost op: 09 juni 2005 - 20:00
Gouden medaille

PHP expert


ik wilde het in deze tut vooral hebben over de types van variabele, met nadruk over de bescherming.

En static heeft eig niets met die 3 te maken. De tut heet ook niet: OOP => PHP5, maar OOP(public, protected en private)

Toch heb je gelijk dat ik ze er beter bij had gezet.
Maar door omstandigheden (verdwijnen van tutos) kan ik hem nu niet updaten. Ik zal in ieder geval wel een kort 'verslagje' schrijven over het keyword static. En de tut binnekort editten.

Wat abstract betreft: daar snap ik het nut niet van:s. Dus om daar een uitleg over te geven zou vrij stom zijn:(. Ik snap gewoon niet wat het verschil is tussen een abstracte class en een interface (waar ik het nut wél van snap).

:)

Offline  Fenrir
Gepost op: 10 juni 2005 - 20:13
PHP expert

Ik zal het uitleggen (proberen dan ):

Interfaces beschrijven een interface (duh). Er wordt in beschreven welke methoden een class moet hebben om aan de interface te voldoen. Je hebt bijvoorbeeld de interface IEetbaar. De functie IEetbaar heeft dan deze methoden:
Oppakken();
InMondStoppen();
Verteren();

In de interface wordt alleen beschreven dat deze methoden er moeten zijn.

Maar een abstract class kan ook echte methoden bevatten. Hierin staat dus al code.

In een abstract class staan ook abstract methoden. Deze methoden bevatten, net zoals bij een interface nog geen code.

Dus een abstact class heeft een standaard manier om iets te doen, maar andere dingen moeten class-specifiek gemaakt worden.

Een voorbeeld voor een abstract class voedsel:

class Voedsel implements IEetbaar
{
function Oppakken(Eter $oppakker)
{
$oppakker->PakOp($this);
}

function InMondStoppen(Eter $inMondStopper)
{
if($inMondStopper->HeeftOpGepakt($this))
{
$inMondStopper->StopInMond($this);
}else
{
throw new Exception("De eter moet voedsel eerst oppakken, en daarna in zijn mond stoppen!");
}

abstract function Verteren(Eter $eter);
}

Dus deze class maakt een standaard manier om dingen op te pakken, en om dingen in de mond te stoppen. Maar verteren is voor elk soort voedsel anders, dus dat is nog niet gemaakt.
Nu kunnen er verschillende "voedsels" worden gemaakt:
Appel
Water
...

Appel extends Voedsel
{
function Verteren(Eter $eter)
{
$eter->DuwVoedselNaarDarm($this);
$eter->VerteerVoedselInDarm();
}
}

class Water extends Voedsel
{
function Verteren(Eter $eter)
{
$eter->DuwVoedselNaarBlaas($this);
}
}

Hier zie je dat water en appel allebei wat anders doen bij het verteren, maar bij het Oppakken en InMondStoppen doen ze allebei hetzelfde.

Dit is wel een dom voorbeeld, maar begrijp je het verschil nu?

Pagina:

Enkel aanvullende informatie is welkom. Geen prijzende of afkeurende reacties.
 
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.013s