Cambios con interfaces

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();
        }
     
    }
 
}

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos