Ejercicio clase abstractas

Vamos a crear la siguiente clase abstracta:

Carta

Que tiene dos propiedades:

String palo
int numero

Con sus getters y setters

Y un método abstracto

getValor()

De ahí vamos a derivar dos clases NO abstractas

Espanyola

Francesa

En Espanyola la función getValor nos devuelve el número que hay en numero EXCEPTO si número es 11 o 12 que devuelve 10.

En Francesa la función getValor nos devuelve siempre el número.

Después podemos crear una clase Baraja que tenga un arraylist de tipo Carta.

Añadimos los métodos addCarta que nos añada una carta al arraylist y un método totalValor que nos sume los valores de las cartas.

package com.trifulcas.cartas;

public abstract class Carta {
	private String palo;
	private int numero;

	public abstract int getValor();
	
	/**
	 * @return the palo
	 */
	public String getPalo() {
		return palo;
	}

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

	/**
	 * @return the numero
	 */
	public int getNumero() {
		return numero;
	}

	/**
	 * @param numero the numero to set
	 */
	public void setNumero(int numero) {
		this.numero = numero;
	}

	public String toString() {
		return palo+" | "+numero;
	}
}

package com.trifulcas.cartas;

public class Espanyola extends Carta {

	@Override
	public int getValor() {
		int res = getNumero();

		if (res == 11 || res == 12) {
			res = 10;
		}
		return res;
	}

}
package com.trifulcas.cartas;

public class Francesa extends Carta {

	@Override
	public int getValor() {
		
		return getNumero();
	}

}

package com.trifulcas.cartas;

import java.util.ArrayList;
import java.util.List;

public class Baraja {
	private List<Carta> cartas;

	public Baraja() {
		cartas = new ArrayList<Carta>();
	}

	public void addCarta(Carta carta) {
		cartas.add(carta);
	}

	public int totalValor() {
		int res = 0;
		for (Carta carta : cartas) {
			res += carta.getValor();
		}
		return res;
	}
	
	public String toString() {
		String res="";
		for (Carta carta : cartas) {
			res += carta+" - ";
		}
		return res;
	}
}
package com.trifulcas.cartas;

public class TestCartas {

	public static void main(String[] args) {
		Carta sotabastos=new Espanyola();
		sotabastos.setPalo("Bastos");
		sotabastos.setNumero(10);
		System.out.println(sotabastos);

		Carta sietepicas=new Francesa();
		sietepicas.setNumero(7);
		sietepicas.setPalo("Picas");
		System.out.println(sietepicas);
		
		Carta reyespadas=new Espanyola();
		reyespadas.setPalo("Espadas");
		reyespadas.setNumero(12);
		System.out.println(reyespadas);
		
		Baraja miBaraja=new Baraja();
		miBaraja.addCarta(sietepicas);
		miBaraja.addCarta(sotabastos);
		miBaraja.addCarta(reyespadas);
		System.out.println(miBaraja);
		System.out.println(miBaraja.totalValor());
	}

}

Publicado por

Avatar del usuario

Juan Pablo Fuentes

Formador de programación y bases de datos