Repaso OOP 2: getters y setters

package com.trifulcas.repaso.oop;

// Las clases las definimos con la palabra clave class
// Y el nombre de la clase primera en mayúsculas
// Recordad que en java el nombre del archivo y la clase debe ser el mismo

public class Alumno {

	// Lo habitual es que todas las propiedades sean private
	// Para evitar que se puedan modificar desde el exterior
	private String nombre;

	private int nota;

	private String mail;
	
	private String password;

	// Si no se pueden modificar desde el exterior no servirían para nada
	// Las podemos modificar pero desde setters y getters
	// Son métodos públicos que nos sirven para obtener el valor o
	// modificarlo pero que son una capa entre mis propiedades
	// y el exterior

	// password es  una propiedad de solo escritura
	/**
	 * @param password the password to set
	 */
	public void setPassword(String password) {
		this.password = password;
	}

	/**
	 * @return the nombre
	 */
	public String getNombre() {
		return nombre;
	}

	/**
	 * @param nombre the nombre to set
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	/**
	 * @return the nota
	 */
	public int getNota() {
		return nota;
	}

	/**
	 * @param nota the nota to set
	 */
	public void setNota(int nota) {
		// Como yo tengo un setter puedo comprobar los valores
		// antes de ponerlos
		if (nota>0 && nota <=10) {
			this.nota = nota;
		}
		
	}

	// Mail es de solo lectura
	/**
	 * @return the mail
	 */
	public String getMail() {
		return mail;
	}
	
	// Esto es una propiedad virtual
	public boolean getAprobado() {
		return nota>=5;
	}

	

}
package com.trifulcas.repaso.oop;

public class TestOOP {

	public static void main(String[] args) {
		
		Alumno ana=new Alumno();
		// Pongo los valores con set
		ana.setNombre("Ana");
		ana.setNota(8);
		// Puedo poner password
		ana.setPassword("1234");
		// Obtengo con get
		System.out.println(ana.getNombre());
		// Pero no leerlo
		// System.out.println(ana.getPassword());
		// No puedo poner el mail
		// ana.setMail("sss");
		System.out.println(ana.getMail());
		// Yo no sé si esa propiedad existe de verdad o no
		// Ni me importa: La idea es que de una clase solo conocemos
		// los métodos que publicamos. Su organización interna
		// No nos preocupa
		System.out.println(ana.getAprobado());
	}

}

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos