par
sadeq » 12 déc. 2005, 15:13
Pour revenir à la construction d'un objet :
la fonction _construct n'est pas une invention de PHP5 mais un commencement vers l'alignement avec les modèles objets de C et JAVA.
C utilisait un "construct" unique pour qualifier la classe à initialiser et charger en mémoire dans un objet.
C et Java permettent aussi de diversifier les point de construction en utilisant des fonctions de construction ayant le même nom que la classe mais qui respectent le concept de surcharge (pool de même fonctions avec des paramètres différents) ainsi le programmeur peut personnaliser l'initialisation de l'objet.
Par exemple (en JAVA):
Code : Tout sélectionner
class machin {
//Constructeur de base
public machin () {
//initialisation sans paramètrage
}
public machin (int paramètre1) {
//initialisation avec 1 paramètre
}
.... //Autant de machin constructeurs souhaité
}
Le constructeur de base est solicité dans l'instanciation suivante :
machin truc = new machin();
Le constructeur à 1 paramètre est appelé par l'instanciation suivante :
le_machin_à_propriété1 = new machin(1);
Les constructeurs paramètrables permettent d'initialiser un certain nombre de propriétés de l'objet au moment de sa création pour simplifier la programmation.
En ce qui concerne, _ToString() et les Interfaces :
elles sont utilies pour les programmeurs qui travaillent en groupe ou sur une série de versions dont la compatibilité exige de respeter un standard.
_ToString :
- peut être utilisée pour afficher la documentation de la classe (son mode d'emploi)
Les interfaces - spécifient un certain nombre de fonctions dont les signatures sont fixées par le cahier des charges. Fonctions que doivent respecter toutes les classes qui utilisent ces interfaces. On parle d'implémentation de fonctionnalités pédéfinies.
Les interfaces comme leurs noms l'indique permettent de connecter plusieurs classes (les rendre compatibles)
Exemple :
Une interface evenementielle qui fixent les fonctions nécéssaires pour gérér le clavier et la souris dans un programme de dialogue H/M
Pour simplifier le développement toutes les classes conversationnelles doivent implémenter cette interface et décrire le comportement attendu des ses fonctions.
Ces classes s'entendent alors sur un même jargon de fonctions evennementielles comme CLICK(int X, int Y,...), DBLCLICK(int X, int Y,...), KEYPRESS(int KEYCODE), MOUSEMOVE(int X, int Y,...) ....
Ceci dit, toute classe qui implémente des interfaces, doit écrire le contenu fonctionnelle des fonctions héritées. Ce qui est normal puisqu'une interface partage seulement les signatures des fonctions.
On dit que les interface sont des classes abstraites où les fonction ne sont pas directement exécutables.
Par-ailleurs, les interfaces permettent de mettre en oeuvre l'héritage multiple. Puisqu'une classe n'hérite que d'une seule super-classe mais peut hériter de plusieurs interfaces.
Pour revenir à la construction d'un objet :
la fonction _construct n'est pas une invention de PHP5 mais un commencement vers l'alignement avec les modèles objets de C et JAVA.
C utilisait un "construct" unique pour qualifier la classe à initialiser et charger en mémoire dans un objet.
C et Java permettent aussi de diversifier les point de construction en utilisant des fonctions de construction ayant le même nom que la classe mais qui respectent le concept de surcharge (pool de même fonctions avec des paramètres différents) ainsi le programmeur peut personnaliser l'initialisation de l'objet.
Par exemple (en JAVA):
[code]class machin {
//Constructeur de base
public machin () {
//initialisation sans paramètrage
}
public machin (int paramètre1) {
//initialisation avec 1 paramètre
}
.... //Autant de machin constructeurs souhaité
}
[/code]
Le constructeur de base est solicité dans l'instanciation suivante :
machin truc = new machin();
Le constructeur à 1 paramètre est appelé par l'instanciation suivante :
le_machin_à_propriété1 = new machin(1);
Les constructeurs paramètrables permettent d'initialiser un certain nombre de propriétés de l'objet au moment de sa création pour simplifier la programmation.
En ce qui concerne, _ToString() et les Interfaces :
elles sont utilies pour les programmeurs qui travaillent en groupe ou sur une série de versions dont la compatibilité exige de respeter un standard.
[b]_ToString[/b] : [list]peut être utilisée pour afficher la documentation de la classe (son mode d'emploi)[/list]
[b]Les interfaces[/b][list] spécifient un certain nombre de fonctions dont les signatures sont fixées par le cahier des charges. Fonctions que doivent respecter toutes les classes qui utilisent ces interfaces. On parle d'implémentation de fonctionnalités pédéfinies.
Les interfaces comme leurs noms l'indique permettent de connecter plusieurs classes (les rendre compatibles)
Exemple :
Une interface evenementielle qui fixent les fonctions nécéssaires pour gérér le clavier et la souris dans un programme de dialogue H/M
Pour simplifier le développement toutes les classes conversationnelles doivent implémenter cette interface et décrire le comportement attendu des ses fonctions.
Ces classes s'entendent alors sur un même jargon de fonctions evennementielles comme CLICK(int X, int Y,...), DBLCLICK(int X, int Y,...), KEYPRESS(int KEYCODE), MOUSEMOVE(int X, int Y,...) ....
Ceci dit, toute classe qui implémente des interfaces, doit écrire le contenu fonctionnelle des fonctions héritées. Ce qui est normal puisqu'une interface partage seulement les signatures des fonctions.
On dit que les interface sont des classes abstraites où les fonction ne sont pas directement exécutables.
Par-ailleurs, les interfaces permettent de mettre en oeuvre l'héritage multiple. Puisqu'une classe n'hérite que d'une seule super-classe mais peut hériter de plusieurs interfaces.[/list]