
Envoyé par
covao
Il était temps. Les propriétés font quand même partie du principe de l'encapsulation.
J'ai une nette préférence cette écriture :
[public, private ou protected]property Type nomObjet getter getNomObjet() [ou fNomObjet] setter setNomObjet() [ou fNomObjet];
C'est clair et précis.
nota, le terme getter peut etre remplacé par read et setter par write.
et pour les proprietes de listes, comment tu fais? exemple, j'ai un Vector<String> que je veux mettre en propriete et que je veux y acceder comme dans un String[]. comment faire avec ta notation?
avec ta notation, j'imagine que ce serait, pour ne pas empecher les vrais arrays, comme ceci:
property Type[<Generic>] nomObjet[] [getter nomObjet|nomMethod] [setter nomObjet|nomMethod]
exemple
1 2 3 4 5 6
| //declaration
property String nom[] getter getNom setter setNom
//usage
String monNom=obj.nom[i];
obj.nom[j]="autre chose"; |
j'enleve les () parce qu'elles ne font qu'induire en erreur, et j'ai mis les getter et setter en option pour definir les droits de lecture/ecriture. j'enleve aussi les private|public|... parce que une propriete devrait toujours etre publique, sinon autant acceder directement au field. Et puis, j'ai mis les [] apres le nomObjet pour signaler que c'est une propriete liste. S'il s'agissait d'une propriete simple d'un objet array statique, ce serait plutot un
property Type[] nomObjet...
exemple
property int[] liste getter...
j'ai aussi mis en option les generiques pour les classes qui l'utiliseraient. Au pire, les generiques pourraient etre une alternative temporaire aux proprietes listes que je propose. exemple:
property Vector<String> maListe getter...
Malheureusement, ca interdit un acces rapide aux valeurs.
Mais sinon, c'est effectivement une maniere elegante avec 3 mots clefs.
Partager