jueves, 6 de febrero de 2014

Práctica de creación de Jarras (Parte 1)

Alguna vez habéis hecho el típico rompecabezas donde con dos jarras de distintos volúmenes os piden conseguir un número determinado de litros con las únicas posibilidades de llenar, vaciar o volcar una jarra en la otra. Pues ahora vamos a realizar la primera parte, crear una clase Jarra que utilizaremos para “simular” algunas de las acciones que podemos realizar con ella.

Así será la jarra. Si tienes dudas sobre como interpretar esta imagen, mira esta entrada del blog 

Aquí tenéis el archivo con el que probareis vuestro programa:


public class TestJarras {
 public static void main(String[] arg)
 {
 Jarras jarraA = new Jarras(5);
 Jarras jarraB = new Jarras(7);
 jarraA.llena();
 jarraB.vacia();
 System.out.println("JA "+ jarraA.toString());
 System.out.println("JB "+ jarraB.toString());
 jarraB.llenaDesde(jarraA);
 jarraA.llena();
 jarraB.llenaDesde(jarraA);
 jarraB.vacia();
 jarraB.llenaDesde(jarraA);
 jarraA.llena();
 jarraB.llenaDesde(jarraA);
 System.out.println("JA "+ jarraA.toString());
 System.out.println("JB "+ jarraB.toString());
 }
}


¿Entendido? Hasta aquí el enunciado. Ahora procedo a poner el resultado (No hagáis trampas xP)


public class Jarras {

 private final int capacidad;
 private int cantidad;
 
 public Jarras(int capacidadInicial) {
  if (capacidadInicial<=0) throw new RuntimeException("Error, capacidad incorrecta.");
  capacidad = capacidadInicial;
  cantidad = 0;
 }
 
 public int capacidad() {
  return capacidad;
 }
 
 public int cantidad() {
  return cantidad;
 }
 
 public void llena() {
  cantidad = capacidad;
 }
 
 public void vacia() {
  cantidad = 0;
 }
 
 public void llenaDesde(Jarras j){
  int cantidadMinima = Math.min(capacidad- cantidad, j.cantidad);
  
  cantidad   += cantidadMinima;
  j.cantidad -= cantidadMinima;
 }


 public String toString(){
  String frase = " capacidad de " + capacidad + " y cantidad de " + cantidad + " de líquido.";
  return frase;
 }
}


Espero que no quede ninguna duda. Si tenéis alguna pregunta posteadlo (No pregunteis cosas del tipo "k signifik k as puest int ants d cantidad?" primero porque hay que aprender a escribir para poder programar y segundo porque asumo que si estáis haciendo esto sabéis ya las bases mínimas de programación  )

Salud ;)

2 comentarios:

  1. Gracias por los aportes! estudio computadores en Málaga y me ayudáis mucho ;)

    ResponderEliminar
  2. Por favor, he visto un par de comentarios por los que la R.A.E. pediría una orden para encarcelarnos (ambos en éste post)... Hagamos el favor de escribir bien, que no cuesta nada.

    Saludos;)

    ResponderEliminar