1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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" ); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 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" ); } } |
1 2 3 4 5 | package com.trifulcas.cartas; public interface JuegoAzar { public void mezclar(); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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" ); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | 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(); } } } |