25Fermer27
FarewellLe 09/03/2018 à 09:05
Pen^2 :
Le "bloc fonctionnel", c'est une espèce de truc hideux :
-des variables d'entrée
- des variables de sortie
- des variables d'entrée-sortie
- des variables locales
- pas de méthodes/fonctions

Pour interagir avec le bloc, on appelle l'instance comme s'il s'agissait d'une fonction : MonBlocFonctionnel.
En fonction des arguments qu'on passe à l'appel (des variables d'entrée qu'on choisit d'adresser) , le bloc doit se démerder pour réagir correctement.
Je vous raconte pas le truc à designer, à maintenir. Au moindre changement interne, c'est susceptible de péter de partout, pour peu qu'une nouvelle forme d'appel corresponde par malchance à une déjà existante.

Donc dans la nouvelle version, ils ont ajouté du concept objet par-dessus cette merde immonde.
Ils ont ajouté les méthodes (public/protected/private, classique), signées. Elles ne sont pas surchargeables, mais elles assurent au moins "un fichier source par méthode", et non plus un gros blob pour les gouverner toutes.

Le "extends", c'est de la dérivation classique. Il n'y a pas de dérivation multiple.
Le "implements", c'est pour dire que ça implémente une interface signée, ça permet de faire du polymorphisme.
C'est d'ailleurs assez rigolo, parce qu'en plus de faire du polymorphisme grâce une origine commune de dérivation, on peut en faire par simple implémentation commune d'une même interface.
C'est très léger, parce qu'une interface est ici standalone, déclarée comme une simple fonction, sans implémentation. Une simple signature en somme. En C++, il faudrait un objet déclarant une méthode virtuelle pure.