Comprensione metodi get e set

di il
21 risposte

Comprensione metodi get e set

Allora ragazzi questo codice
public class Employee {
  private String name;
  private int age;
  private int salary;

  public Employee (String name, int age) {
      setName (name);
      setAge (age);
      setSalary (2000);
  }
  public Employee (String name, int age, int salary) {
      setSalary (salary);
      this (name, age);
  }
  // metodi get e set

}
(voglio vedere se ho capito) non compilerà mai perche dato che le variabili sono private si devono usare i metodi set e get per inizializzarle e poi acquisirne il valore,qua secondo me sono sbalgiati tutti e due i costruttore,perche nel primo viene settato il "Salary" ma non gli viene passato come parametro,e nel secondo viene invece erroneamente usato il "this". ditemi se sbaglio

21 Risposte

  • Re: Comprensione metodi get e set

    Ma è un esercizio che devi completare tu?
  • Re: Comprensione metodi get e set

    oregon ha scritto:


    Ma è un esercizio che devi completare tu?
    no no è completo,io ho scritto solo una parte,difatti cè anche la classe che definisce il main
  • Re: Comprensione metodi get e set

    Beh è ovvio che

    setName setAge setSalary

    devono esistere e senza quelle hai errori. Ma mi sembra un esercizio stupido.
  • Re: Comprensione metodi get e set

    oregon ha scritto:


    Ma è un esercizio che devi completare tu?
    questo è l'esercizio completo
    public class Employee {
      private String name;
      private int age;
      private int salary;
    
      public Employee (String name, int age) {
          setName (name);
          setAge (age);
          setSalary (2000);
      }
      public Employee (String name, int age, int salary) {
          setSalary (salary);
          this (name, age);
      }
      // metodi get e set
      public void printDetails () {
          System.out.println (name + " : " + age + " : " + salary);
      }
    }
    class Pippo2 {
      public static void main (String [] args) {
        Employee e1 = new Employee ();
        Employee e2 = new Employee ("Jack",50);
        Employee e3 = new Employee ("Chloe",40,5000);
        e1.printDetails();
        e2.printDetails();
        e3.printDetails();
      }
    }
    
    volevo capire bene il discorso dei metodi get e set
  • Re: Comprensione metodi get e set

    maracaibo25 ha scritto:


    volevo capire bene il discorso dei metodi get e set
    Cioè quale è il dubbio?
    Ti è chiaro almeno il motivo per cui fare ad esempio:
    public class Employee {
        public String name;
        public int age;
        public int salary;
        // ....
    }
    cioè avere i campi public è una PESSIMA idea?
  • Re: Comprensione metodi get e set

    Ma nel codice che hai postato nel tuo "esercizio completo", mancano proprio i metodi get e set... forse l'esercizio consiste nello scriverli?
  • Re: Comprensione metodi get e set

    @Maracaibo... ti devi spiegare meglio perché dsi tuoi discorsi in questo thread non si è capito NULLA.

    Devi scrivere tu il codice di get e ser?

    Se no perché ti aspetti che funzioni?

    Boh
  • Re: Comprensione metodi get e set

    andbin ha scritto:


    Cioè quale è il dubbio?
    Ti è chiaro almeno il motivo per cui fare ad esempio:
    public class Employee {
        public String name;
        public int age;
        public int salary;
        // ....
    }
    cioè avere i campi public è una PESSIMA idea?
    si perche con i campi "private" abbiamo maggior controllo su di essi e si facilita diciamo il principio di "incapsulamento"
  • Re: Comprensione metodi get e set

    oregon ha scritto:


    @Maracaibo... ti devi spiegare meglio perché dsi tuoi discorsi in questo thread non si è capito NULLA.

    Devi scrivere tu il codice di get e ser?

    Se no perché ti aspetti che funzioni?

    Boh
    no scusami oregon l'esercizio mi chiedeva dato il "codice completo" qual'era la risposta esatta tra 5 risposte,che sono queste :

    - compilation fails in the Employee class.
    - null : 0 : 0
    - Jack : 50 : 2000
    - compilation fails in the Test class.
    - both the Employee class and the Test class

    e la risposta corretta è l'ultima, voglio solo qualche delucidazione in piu sui metodi get e set
  • Re: Comprensione metodi get e set

    maracaibo25 ha scritto:


    si perche con i campi "private" abbiamo maggior controllo su di essi e si facilita diciamo il principio di "incapsulamento"
    Ottimo, esatto. Mantenendo private sui campi e mettendo i getter/setter la classe ha maggior controllo sui campi e può ad esempio garantire quelli che si chiamano gli "invarianti", es. stabilire che age non sia mai negativo.

    maracaibo25 ha scritto:


    no scusami oregon l'esercizio mi chiedeva dato il "codice completo" qual'era la risposta esatta tra 5 risposte,che sono queste :

    - compilation fails in the Employee class.
    - null : 0 : 0
    - Jack : 50 : 2000
    - compilation fails in the Test class.
    - both the Employee class and the Test class

    e la risposta corretta è l'ultima
    Piccolo indizio: se guardi bene quel codice completo dovresti accorgerti di una cosa: l'esercizio NON è incentrato sui metodi getter/setter ma su un'altra cosa!

    Cioè anche ammesso idealmente che i getter/setter ci siano e corretti, dovresti "vedere" due cose che non sono corrette ....

    maracaibo25 ha scritto:


    voglio solo qualche delucidazione in piu sui metodi get e set
    E cioè? Continuo a ripetere ...
    Di quale/i delucidazione/i avresti bisogno? Vuoi sapere la forma generale dei getter/setter? Hai dubbi sulle convenzioni sui nomi? Vuoi sapere cosa si scrive generalmente dentro i getter/setter?
  • Re: Comprensione metodi get e set

    andbin ha scritto:


    Cioè anche ammesso idealmente che i getter/setter ci siano e corretti, dovresti "vedere" due cose che non sono corrette ....
    Precisamente.
  • Re: Comprensione metodi get e set

    andbin ha scritto:


    E cioè? Continuo a ripetere ...
    Di quale/i delucidazione/i avresti bisogno? Vuoi sapere la forma generale dei getter/setter? Hai dubbi sulle convenzioni sui nomi? Vuoi sapere cosa si scrive generalmente dentro i getter/setter?
    si tutto,forma,convenzioni e cosa si scrive dentro
  • Re: Comprensione metodi get e set

    andbin ha scritto:


    Piccolo indizio: se guardi bene quel codice completo dovresti accorgerti di una cosa: l'esercizio NON è incentrato sui metodi getter/setter ma su un'altra cosa!

    Cioè anche ammesso idealmente che i getter/setter ci siano e corretti, dovresti "vedere" due cose che non sono corrette ....
    credo che ti riferisci all'oggetto e1 di tipo Employee che viene creato e al quale non gli viene passato nessun campo,perche non cè in questo caso il costruttore di default,ma ce ne sono due creati appunto dal programmatore,e alla relativa chiamata al metodo printDetails()
  • Re: Comprensione metodi get e set

    maracaibo25 ha scritto:


    credo che ti riferisci all'oggetto e1 di tipo Employee che viene creato e al quale non gli viene passato nessun campo,perche non cè in questo caso il costruttore di default,ma ce ne sono due creati appunto dal programmatore
    Esatto! Questo infatti è un errore.

    Ma in Employee ce n'è un altro di errore. Guarda bene uno dei costruttori ....

    maracaibo25 ha scritto:


    e alla relativa chiamata al metodo printDetails()
    Il printDetails() come definizione e invocazione è giusto. Non è quello il problema.
Devi accedere o registrarti per scrivere nel forum
21 risposte