Cambios con interfaces

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();
	}
	public void quienSoy() {
		System.out.println("Carta de la baraja Francesa");
	}

}
package com.trifulcas.cartas;

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

public class Baraja implements JuegoAzar {
	private List<Carta> cartas;

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

	public void addCarta(Carta carta) {
		if (carta instanceof Francesa) {
			Francesa temp=(Francesa)carta;
			temp.quienSoy();
		}
		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;
	}

	@Override
	public void mezclar() {
		System.out.println("Mezclando las cartas");
		
	}
}

package com.trifulcas.cartas;

public interface JuegoAzar {
	public void mezclar();
}

package com.trifulcas.cartas;

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

public class Domino implements JuegoAzar{
	List<String> piezas;

	public Domino() {
		piezas = new ArrayList<String>();
	}
	
	public void esDomino() {
		System.out.println("Dominó");
	}

	@Override
	public void mezclar() {
		System.out.println("Mezclando las fichas");

		
	}
}
package com.trifulcas.cartas;

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

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);
		((Francesa)sietepicas).quienSoy();

		Francesa cuatrotreboles=new Francesa();
		cuatrotreboles.setNumero(4);
		cuatrotreboles.setPalo("Treboles");
		cuatrotreboles.quienSoy();
		
		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);
		miBaraja.addCarta(cuatrotreboles);
		
		System.out.println(miBaraja);
		System.out.println(miBaraja.totalValor());
		
		JuegoAzar[] juegos= {new Baraja(),new Domino()};
		
		for(JuegoAzar juego:juegos) {
			if (juego instanceof Domino) {
				((Domino) juego).esDomino();
			}
			juego.mezclar();
		}
	
	}

}

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos