J’ai un petit soucis, je débute en delphi et j’ai vraiment du mal a comprendre la différence entre ces 2 types de déclarations public et private. J’ai trouvé ceci :
Si je comprends bien private sera composé par exemple d’une variable qui ne pourra pas être modifié ? Mais alors pourquoi peut-on grâce a PROPERTY WRITE allé modifié son contenu :pt1cable:
J’ai peur de ne pas tout comprendre ! Est-ce que quelqu’un aurait un exemple concret … merci d’avance pour votre aide
Exemple :
Tsac=Class
private
Fcontenance:double;
Fcontenu:double;
public
CONSTRUCTOR Creation(value:double);
procedure Remplir(value:double);
procedure Vider(value:double);
property contenance:double read Fcontenance;
property contenu:double read Fcontenu;
function vide : boolean;
function plein : boolean;
end;
var
fen: Tfen;
Sac:Tsac;
Si je mets Sac. dans ma classe fenêtre il me propose Sac.Fcontenance je ne devrais pas y avoir accès !?
procedure Tfen.Button1Click(Sender: TObject);
begin
Sac.Fcontenance:=15;
end;
C’est de la POO que tu fais avec Delphi, et public, private et protected te permettent de :
public : la propriété est publique, et n’importe qui peut y accéder. Imagine un peu que tes yeux soient publiques, et que tout le monde y touche…
private : la propriété est privée, et seul la classe englobante peut y toucher. Là, c’est bon : tes yeux sont innacessibles aux autres.
protected : la propriété est partagée. Imagine que tu ai des enfants, et que tu as un héritage génétique : ben pouf, ils en profitent!
Enfin, Delphi permet aussi de définir des méthodes d’écritures sur les propriétés. L’avantage c’est d’avoir un setter & un getter sans devoir faire appel à une fonction : le compilateur le fait automatiquement.
j’imagine qu’il parle d’une fontion genre “getcontenance()”, ou “setcontenance()” (getter ou setter) accessible en public, qui se charge de lire ou ecrire la valeur privée…
A confirmer
Dés que l’on déclare une variable en private on ne doit pas l’utiliser dans le code si je comprends bien ( sauf dans la classe en elle même ),donc on utilise PROPERTY avec une limite de write ou de read et on se sert de cette propriété pour lire la variable a partir d’une autre classe.
J’ai juste ou je suis toujours à coté de la plaque