Differenza nelle dare valore alle variabili JAVA

di il
4 risposte

Differenza nelle dare valore alle variabili JAVA

Ciao a tutti!

che differenza c'è tra questo metodo:

public class Automobile {
	
	private String nome;
	private int velocita;

	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public int getVelocita() {
		return velocita;
	}
	public void setVelocita(int velocita) {
		this.velocita = velocita;
	}
	
}
public class Main {

	public static void main(String[] args) {
		
		Automobile auto1 = new Automobile(); 
		auto1.setNome("Panda");
		auto1.setVelocita(100);
		
		}
	}
		
e questo?
public class Intestatario {
	
	String nome;
	int eta;
	


public Intestatario() {
	this.nome="Marco";
	this.eta=25;
}

}

4 Risposte

  • Re: Differenza nelle dare valore alle variabili JAVA

    Differenza nel dare valore alle variabili CON e SENZA get e set. perché?
  • Re: Differenza nelle dare valore alle variabili JAVA

    programmazionejava1 ha scritto:


    Differenza nel dare valore alle variabili CON e SENZA get e set. perché?
    E' una questione che riguarda il principio di incapsulamento. Ne ho parlato di recente, vedi ad esempio questa discussione.
  • Re: Differenza nelle dare valore alle variabili JAVA

    andbin ha scritto:


    programmazionejava1 ha scritto:


    Differenza nel dare valore alle variabili CON e SENZA get e set. perché?
    E' una questione che riguarda il principio di incapsulamento. Ne ho parlato di recente, vedi ad esempio questa discussione.
    I metodi get e set vengono utilizzati con le variabili di una classe di tipo PRIVATE, in modo che queste, non vengano modificate da altre parti e siano accessibili solamente nella classe stessa.
    Allora si utilizza get e set solo per proteggere i dati e non renderli visibili e cambiarli?
  • Re: Differenza nelle dare valore alle variabili JAVA

    programmazionejava1 ha scritto:


    Allora si utilizza get e set solo per proteggere i dati e non renderli visibili e cambiarli?
    Se il campo è accessibile direttamente dall'esterno, allora il codice per l'accesso al campo sarebbe sparpagliato ovunque in qualunque altra classe. E la tua classe (dove c'è il campo) NON ne avrebbe il "controllo".
    Vorrebbe dire quindi che non puoi imporre dei vincoli (es. un String non può essere null, un numero non può essere negativo, ecc...).
    E se il campo è accessibile diventa parte della API "pubblica" della classe. Il campo non lo potrai più toccare come nome e tipo perché si "spaccherebbero" potenzialmente molte altre classi. Anche dal punto di vista del multi-threading, non potresti facilmente gestire la sincronizzazione tra thread.

    Se invece il campo lo nascondi ed offri l'accesso solo tramite dei metodi, allora:
    - il campo lo puoi eventualmente rinominare o cambiargli tipo, potendo magari (possibilmente) mantenere i metodi accessori come sono.
    - puoi applicare vincoli o logiche specifiche.
    - puoi gestire la sincronizzazione tra thread più facilmente.

    E aggiungo, ci sono moltissimi framework che si basano sulle "proprietà" (e non sui campi) dedotte secondo le specifiche JavaBeans, ovvero che esiste una proprietà es. "testo" di tipo String se c'è un String getTesto() e un void setTesto(String) .
Devi accedere o registrarti per scrivere nel forum
4 risposte