CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Java privé/public accesseurs constructeur, je me perds

Sachiel3
Sachiel3
Niveau 10
28 janvier 2015 à 18:06:13

Bonjour, je suis totalement débutant, j'apprends doucement mais surement :hap:

J'ai vu les accesseurs, variables privés /public, constructeur, je sais à peu près les utiliser mais je ne comprends pas bien le plus important, leurs utilités.

Je sais que que privé permet à la variable de ne pas être utilisé en dehors de la classe, mais si on peut quand même changer sa valeur et l'utiliser avec la fonction get et la procédure set, à quoi ca sert de mettre une variable privée ? De même pour le constructeur, on peut le réutiliser pour changer la valeur des variables.

Quelqu'un pourrait m'éclairer sur ces points svp ?

hexabeast
hexabeast
Niveau 9
28 janvier 2015 à 18:21:51

Le "privé" c'est surtout pour la forme, histoire d'avoir un code propre et utilisable "de l’extérieur" par une personne n'en étant pas l'auteur.
Après concrètement la seul vraie utilité que j'aie trouvé aux getters c'est qu'on peut gérer des exceptions (genre si l'objet en question n'existe pas, si on a demandé un index de tableau trop grand...), pareil pour les setters, on peut y ajouter d'autres opérations que le simple variable = paramètre, ce qui rend le code plus modulable.

PS: Si j'ai dis une connerie n'hésitez pas à me le faire remarquer, je suis pas sûr à 100% de ce que j'avance :hap:

Bunyan
Bunyan
Niveau 17
28 janvier 2015 à 19:05:19

Il faut éviter de mettre de la logique autre que très simple dans les getter et les setter. Pour avoir trouvé des appels réseaux synchrones dans des getter ou des update de BDD dans des setter... c'est de la bonne surprise et on ne s'y attends absolument pas.

Le privé est présent pour le principe d'encapsulation, signifiant qu'une classe est seule responsable de ses composantes. Il permet de contrôler les accès et de s'assurer qu'une variable standard n'est pas utilisée en tant que globale, ou n'est pas en environnement multi-thread.
C'est une pratique qui n'a pas réellement d'effet visible et qui demande de la rigueur. Celle-ci permet d'éviter les dépendances et/ou liens "invisible" (ou tout du moins, de les limiter).

Par contre, il ne faut en aucun cas aller dans la génération systématique des accesseurs. Il y a des attributs qui ne sont pas fait pour être touché par d'autres classes, que ce soit en lecture ou écriture. Il faut ouvrir uniquement ce dont les autres classes ont besoin. Ni plus, ni moins.

Concernant le constructeur, son rôle est différent car lui est initialiseur, quand les accesseurs sont des accès en lecture ou écriture sur un objet déjà créé, donc initialisé. Il est normal que celui-ci modifie les attributs car ceux-ci peuvent, selon la logique du logiciel et son architecture, prendre des valeurs relatives à d'autres valeurs (paramétrage de logiciel, création d'un clone, calcul...).

gromouton
gromouton
Niveau 6
28 janvier 2015 à 20:06:05

Il faut voir aussi qu'avec un mutateur tu peux modifier/filtrer l'argument reçu avant de fournir la valeur au champ de ton objet et t'assurer que tout se passe bien.
Pareil avec l'assesseur tu peux fournir une valeur modifiée (ce qui est généralement moins utile).

Message édité le 28 janvier 2015 à 20:09:19 par gromouton
Sachiel3
Sachiel3
Niveau 10
29 janvier 2015 à 20:10:44

Merci, je comprends un peu mieux :)

Schiffer
Schiffer
Niveau 10
29 janvier 2015 à 23:50:14

C'est pour ça que je déconseille d'apprendre Java en premier

Bunyan
Bunyan
Niveau 17
30 janvier 2015 à 00:15:38

Quel est le rapport avec le langage Java alors que Sachiel3 a un souci de compréhension avec un principe de l'orienté objet : l'encapsulation ?
(idem, véritable question, pas un troll).

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment