Académique Documents
Professionnel Documents
Culture Documents
1 /**
* Clase Cuenta
2
* @author DiscoDurodeRoer
3 */
4 public class Cuenta {
5
6 //Atributos
7 private String titular;
private double cantidad;
8
9
//Constructores
10 public Cuenta(String titular) {
11 this(titular, 0); //Sobrecarga
12 }
13
14 public Cuenta(String titular, double cantidad) {
this.titular = titular;
15
//Si la cantidad es menor que cero, lo ponemos a cero
16 if (cantidad < 0) {
17 this.cantidad = 0;
18 } else {
19 this.cantidad = cantidad;
}
20
}
21
22 //Metodos
23 public String getTitular() {
24 return titular;
25 }
26
public void setTitular(String titular) {
27
this.titular = titular;
28 }
29
30 public double getCantidad() {
return cantidad;
31
}
32
33 public void setCantidad(double cantidad) {
34 this.cantidad = cantidad;
35 }
36
37 /**
* Ingresa dinero en la cuenta,
38
* solo si es positivo la cantidad
39 *
40 * @param cantidad
41 */
42 public void ingresar(double cantidad) {
if(cantidad > 0){
43
this.cantidad += cantidad;
44 }
45 }
46
47 /**
48 * Retira una cantidad en la cuenta, si se quedara en negativo se quedaria
* en cero
49
*
50 * @param cantidad
51 */
52 public void retirar(double cantidad) {
53 if (this.cantidad - Math.abs(cantidad) < 0) {
this.cantidad = 0;
54
} else {
55 this.cantidad -= cantidad;
56 }
57 }
58
59
60
61
62
63
64
/**
65
* Devuelve el estado del objeto
66 *
67 * @return
68 */
69 @Override
public String toString() {
70
return "El titular " + titular + " tiene " + cantidad + " euros en la cuenta";
71 }
72
73 }
74
75
76
77
78
79
–Clase ejecutable
1 public class CuentaApp {
2
public static void main(String[] args) {
3
4
Cuenta cuenta_1 = new Cuenta("DiscoDurodeRoer");
5 Cuenta cuenta_2 = new Cuenta("Fernando", 300);
6
7
8 //Ingresa dinero en las cuentas
9 cuenta_1.ingresar(300);
10 cuenta_2.ingresar(400);
11
12 //Retiramos dinero en las cuentas
cuenta_1.retirar(500);
13 cuenta_2.retirar(100);
14
15 //Muestro la informacion de las cuentas
16 System.out.println(cuenta_1); // 0 euros
17 System.out.println(cuenta_2); // 600 euros
18
19 }
20
}
21
22
2
/**
* Clase Persona
* Contiene información de una persona
* @author DiscoDurodeRoer
*/
public class Persona {
//Constantes
/**
* Sexo por defecto
*/
private final static char SEXO_DEF = 'H';
/**
* El peso de la persona esta por debajo del peso ideal
*/
public static final int INFRAPESO = -1;
/**
* El peso de la persona esta en su peso ideal
*/
public static final int PESO_IDEAL = 0;
/**
* El peso de la persona esta por encima del peso ideal
*/
public static final int SOBREPESO = 1;
//Atributos
/**
* Nombre de la persona
*/
private String nombre;
/**
* Edad de la persona
*/
private int edad;
/**
* DNI de la persona, se genera al construir el objeto
*/
private String DNI;
/**
* Sexo de la persona, H hombre M mujer
*/
private char sexo;
/**
* Peso de la persona
*/
private double peso;
/**
* Altura de la persona
*/
private double altura;
//Contructores
/**
* Constructor por defecto
*/
public Persona() {
this("", 0, SEXO_DEF, 0, 0);
}
/**
* Constructor con 3 parametroe
*
* @param nombre de la persona
* @param edad de la persona
* @param sexo de la persona
*/
public Persona(String nombre, int edad, char sexo) {
this(nombre, edad, sexo, 0, 0);
}
/**
* Constructor con 5 parametros
*
* @param nombre de la persona
* @param edad de la persona
* @param sexo de la persona
* @param peso de la persona
* @param altura de la persona
*/
public Persona(String nombre, int edad, char sexo, double peso, double altura) {
this.nombre = nombre;
this.edad = edad;
this.peso = peso;
this.altura = altura;
generarDni();
this.sexo = sexo;
comprobarSexo();
}
//Métodos privados
private void comprobarSexo() {
//Si el sexo no es una H o una M, por defecto es H
if (sexo != 'H' && sexo != 'M') {
this.sexo = SEXO_DEF;
}
}
private void generarDni() {
final int divisor = 23;
//Generamos un número de 8 digitos
int numDNI = ((int) Math.floor(Math.random() * (100000000 - 10000000) + 10000000));
int res = numDNI - (numDNI / divisor * divisor);
//Calculamos la letra del DNI
char letraDNI = generaLetraDNI(res);
//Pasamos el DNI a String
DNI = Integer.toString(numDNI) + letraDNI;
}
private char generaLetraDNI(int res) {
char letras[] = {'T', 'R', 'W', 'A', 'G', 'M', 'Y',
'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z',
'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'};
return letras[res];
}
//Métodos publicos
/**
* Modifica el nombre de la persona
*
* @param nombre a cambiar
*/
public void setNombre(String nombre) {
this.nombre = nombre;
}
/**
* Modifica la edad de la persona
*
* @param edad a cambiar
*/
public void setEdad(int edad) {
this.edad = edad;
}
/**
* Modifica el sexo de la persona, comprueba que es correcto
*
* @param sexo a cambiar
*/
public void setSexo(char sexo) {
this.sexo = sexo;
}
/**
* Modifica el peso de la persona
*
* @param peso a cambiar
*/
public void setPeso(double peso) {
this.peso = peso;
}
/**
* Modifica la altura de la persona
*
* @param altura a cambiar
*/
public void setAltura(double altura) {
this.altura = altura;
}
/**
* Calcula el indice de masa corporal
*
* @return codigo numerico
* <ul><li>-1: la persona esta por debajo de su peso ideal</li>
* <li>0: la persona esta en su peso ideal</li>
* <li>1: la persona esta por encima de su peso ideal</li></ul>
*/
public int calcularIMC() {
//Calculamos el peso de la persona
double pesoActual = peso / (Math.pow(altura, 2));
//Segun el peso, devuelve un codigo
if (pesoActual >= 20 && pesoActual <= 25) {
return PESO_IDEAL;
} else if (pesoActual < 20) {
return INFRAPESO;
} else {
return SOBREPESO;
}
}
/**
* Indica si la persona es mayor de edad
*
* @return true si es mayor de edad y false es menor de edad
*/
public boolean esMayorDeEdad() {
boolean mayor = false;
if (edad >= 18) {
mayor = true;
}
return mayor;
}
/**
* Devuelve informacion del objeto
*
* @return cadena con toda la informacion
*/
@Override
public String toString() {
String sexo;
if (this.sexo == 'H') {
sexo = "hombre";
} else {
sexo = "mujer";
}
return "Informacion de la persona:n"
+ "Nombre: " + nombre + "n"
+ "Sexo: " + sexo + "n"
+ "Edad: " + edad + " añosn"
+ "DNI: " + DNI + "n"
+ "Peso: " + peso + " kgn"
+ "Altura: " + altura + " metrosn";
}
}
Clase Password
1 /**
* Clase Password
2
*
3 * Contiene una contraseña y una longitud
4 *
5 * @author Fernando
6 * @version 1.0
*/
7
public class Password {
8
9 //Constantes
10
11 /**
12 * Longitud por defecto
13 */
14 private final static int LONG_DEF=8;
15
16 //Atributos
17
/**
18 * Longitud de la contraseña
19 */
20 private int longitud;
21 /**
22 * caracteres de la contraseña
*/
23 private String contraseña;
24
25 //Metodos publicos
26
27 /**
28 * Devuelve la longitud
29 * @return longitud de la contraseña
*/
30 public int getLongitud() {
31 return longitud;
32 }
33
34 /**
35 * Modifica la longitud de la contraseña
* @param longitud a cambiar
36 */
37 public void setLongitud(int longitud) {
38 this.longitud = longitud;
39 }
40
41 /**
* Devuelve la contraseña
42 * @return contraseña
43 */
44 public String getContraseña() {
return contraseña;
45
}
46
47 /**
48 * Genera una contraseña al azar con la longitud que este definida
49 * @return contraseña
50 */
public String generaPassword (){
51
String password="";
52 for (int i=0;i<longitud;i++){
53 //Generamos un numero aleatorio, segun este elige si añadir una minuscula, mayuscula o numero
54 int eleccion=((int)Math.floor(Math.random()*3+1));
55
56 if (eleccion==1){
57 char minusculas=(char)((int)Math.floor(Math.random()*(123-97)+97));
password+=minusculas;
58 }else{
59 if(eleccion==2){
60 char mayusculas=(char)((int)Math.floor(Math.random()*(91-65)+65));
61 password+=mayusculas;
}else{
62
char numeros=(char)((int)Math.floor(Math.random()*(58-48)+48));
63 password+=numeros;
64 }
65 }
66 }
return password;
67
}
68
69 /**
70 * Comprueba la fortaleza de la contraseña
71 * @return
72 */
public boolean esFuerte(){
73
74 int cuentanumeros=0;
int cuentaminusculas=0;
75
int cuentamayusculas=0;
76 //Vamos caracter a caracter y comprobamos que tipo de caracter es
77 for (int i=0;i<contraseña.length();i++){
78 if (contraseña.charAt(i)>=97 && contraseña.charAt(i)<=122){
79 cuentaminusculas+=1;
}else{
80
if (contraseña.charAt(i)>=65 && contraseña.charAt(i)<=90){
81 cuentamayusculas+=1;
82 }else{
83 cuentanumeros+=1;
84 }
}
85
}
86 //Si la constraseña tiene mas de 5 numeros, mas de 1 minuscula y mas de 2 mayusculas
87 if (cuentanumeros>=5 && cuentaminusculas>=1 && cuentamayusculas>=2){
88 return true;
89 }else{
return false;
90
}
91 }
92
93 //Constructores
94 /**
95 * Crea una contraseña al azar
*/
96
public Password (){
97 this(LONG_DEF);
98 }
99
100 /**
101 * La contraseña sera la pasada por parametro
* @param longitud
102
*/
103 public Password (int longitud){
104
105
106
107
108
109
110
111
112
113 this.longitud=longitud;
114 contraseña=generaPassword();
115 }
}
116
117
118
119
120
121
122
123
124
125
–Clase ejecutable
1 import javax.swing.JOptionPane;
public class PasswordApp {
2
3
public static void main(String[] args) {
4
5 //Introducimos el tamaño del array y la longitud del password
6 String texto=JOptionPane.showInputDialog("Introduce un tamaño para el array");
7 int tamanio=Integer.parseInt(texto);
8
9
10 texto=JOptionPane.showInputDialog("Introduce la longitud del password");
11 int longitud=Integer.parseInt(texto);
12
13 //Creamos los arrays
14 Password listaPassword[]=new Password[tamanio];
15 boolean fortalezaPassword[]=new boolean[tamanio];
16
//Creamos objetos, indicamos si es fuerte y mostramos la contraseña y su fortaleza.
17 for(int i=0;i<listaPassword.length;i++){
18 listaPassword[i]=new Password(longitud);
19 fortalezaPassword[i]=listaPassword[i].esFuerte();
20 System.out.println(listaPassword[i].getContraseña()+" "+fortalezaPassword[i]);
21 }
}
22
23
}
24
25
4
Clase Electrodomestico
1 /**
* Clase Electrodomestico
2
3 *
* Contiene informacion de los electrodomesticos
4
* @author Fernando
5 * @version 1.0
6 */
7 public class Electrodomestico {
8
9 //Constantes
10
11 /**
* Color por defecto
12 */
13 protected final static String COLOR_DEF="blanco";
14
15 /**
16 * Consumo energetico por defecto
17 */
protected final static char CONSUMO_ENERGETICO_DEF='F';
18
19 /**
20 * Precio base por defecto
21 */
22 protected final static double PRECIO_BASE_DEF=100;
23
24 /**
* Peso por defecto
25 */
26 protected final static double PESO_DEF=5;
27
28 //Atributos
29
30 /**
31 * El precio base del electrodomestico
*/
32
protected double precioBase;
33
34 /**
35 * Color del electrodomestico
*/
36 protected String color;
37
38 /**
39 * Indica el consumo energetico del electrodomestico
40 */
41 protected char consumoEnergetico;
42
/**
43 * Peso del electrodomestico
44 */
45 protected double peso;
46
47 //Métodos privados
48
49 private void comprobarColor(String color){
50
//Colores disponibles
51
String colores[]={"blanco", "negro", "rojo", "azul", "gris"};
52 boolean encontrado=false;
53
54 for(int i=0;i<colores.length && !encontrado;i++){
55
56 if(colores[i].equals(color)){
57 encontrado=true;
}
58
59
}
60
61 if(encontrado){
62 this.color=color;
63 }else{
this.color=COLOR_DEF;
64
}
65
66
67 }
68
69 /**
70 * Comprueba el consumo energetico
71 * Solo mayusculas, si es una 'a' no lo detecta como una 'A'
72 * @param consumoEnergetico
*/
73 public void comprobarConsumoEnergetico(char consumoEnergetico){
74
75 if(consumoEnergetico>=65 && consumoEnergetico<=70){
76 this.consumoEnergetico=consumoEnergetico;
77 }else{
78 this.consumoEnergetico=CONSUMO_ENERGETICO_DEF;
}
79
80 }
81
82 //Métodos publicos
83 /**
84 * Devuelve el precio base del electrodomestico
85 * @return precio base del electrodomestico
*/
86
public double getPrecioBase() {
87 return precioBase;
88 }
89 /**
90 * Devuelve el color del electrodomestico
* @return color del elesctrodomestico
91 */
92 public String getColor() {
93 return color;
}
94
95
/**
96 * Devuelve el consumo energetico del electrodomestico
97 * @return consumo energetico del electrodomestico
98 */
99 public char getConsumoEnergetico() {
return consumoEnergetico;
100
}
101 /**
102 * Devuelve el peso del electrodomestico
103 * @return peso del electrodomestico
104 */
public double getPeso() {
105
return peso;
106 }
107 /**
108 * Precio final del electrodomestico
109 * @return precio final del electrodomestico
*/
110
public double precioFinal(){
111 double plus=0;
112 switch(consumoEnergetico){
113 case 'A':
114 plus+=100;
break;
115
case 'B':
116 plus+=80;
117 break;
118 case 'C':
119 plus+=60;
break;
120
case 'D':
121 plus+=50;
122 break;
123 case 'E':
plus+=30;
124
break;
125 case 'F':
126 plus+=10;
127 break;
128 }
129
if(peso>=0 && peso<19){
130
plus+=10;
131 }else if(peso>=20 && peso<49){
132 plus+=50;
133 }else if(peso>=50 && peso<=79){
134 plus+=80;
}else if(peso>=80){
135
plus+=100;
136 }
137
138 return precioBase+plus;
139 }
140
141 //Constructores
142
143 /**
* Contructor por defecto
144 */
145 public Electrodomestico(){
146 this(PRECIO_BASE_DEF, PESO_DEF, CONSUMO_ENERGETICO_DEF, COLOR_DEF);
147 }
148
149 /**
* Contructor con 2 parametros
150 * @param precioBase del electrodomestico
151 * @param peso del electrodomestico
152 */
153 public Electrodomestico(double precioBase, double peso){
this(precioBase, peso, CONSUMO_ENERGETICO_DEF, COLOR_DEF);
154
}
155
156 /**
157 * Constructor con 4 parametros
158 * @param precioBase
159 * @param peso
* @param consumoEnergetico
160
* @param color
161 */
162 public Electrodomestico(double precioBase, double peso, char consumoEnergetico, String color){
163 this.precioBase=precioBase;
164 this.peso=peso;
comprobarConsumoEnergetico(consumoEnergetico);
165
comprobarColor(color);
166 }
167
168 }
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
–Clase Lavadora
1 /**
* Clase Lavadora
2
*
3 * Contiene informacion de lavador
4 *
5 * @author Fernando
6 * @version 1.0
*/
7
public class Lavadora extends Electrodomestico{
8
9 //Constantes
10
11 /**
12 * Carga por defecto
13 */
14 private final static int CARGA_DEF=5;
15
16 //Atributos
17
18 /**
* Carga de la lavadora
19 */
20 private int carga;
21
22 //Métodos publicos
23
24 /**
25 * Devuelve la carga de la lavadora
* @return
26 */
27 public int getCarga() {
28 return carga;
29 }
30
31 /**
* Precio final de la lavadora
32 * @return precio final de la lavadora
33 */
34 public double precioFinal(){
35 //Invocamos el método precioFinal del método padre
36 double plus=super.precioFinal();
37
//añadimos el código necesario
38 if (carga>30){
39 plus+=50;
40 }
41
42 return plus;
43 }
44
//Constructor
45
46
47 /**
48 * Contructor por defecto
*/
49 public Lavadora(){
50 this(PRECIO_BASE_DEF, PESO_DEF, CONSUMO_ENERGETICO_DEF, COLOR_DEF, CARGA_DEF);
51 }
52
53 /**
54 * Constructor con 2 parametros
* @param precioBase
55 * @param peso
56 */
57 public Lavadora(double precioBase, double peso){
58 this(precioBase, peso, CONSUMO_ENERGETICO_DEF, COLOR_DEF, CARGA_DEF);
59 }
60
/**
61 * Constructor con 5 parametros
62 * @param precioBase
63 * @param peso
64 * @param consumoEnergetico
65 * @param color
* @param carga
66 */
67 public Lavadora(double precioBase, double peso, char consumoEnergetico, String color, int carga){
68 super(precioBase,peso, consumoEnergetico,color);
69 this.carga=carga;
70 }
}
71
72
73
74
75
76
77
78
79
80
81
–Clase Television
1 /**
* Clase Television
2
*
3 * Contiene informacion de una television
4 *
5 * @author Fernando
6 * @version 1.0
*/
7
public class Television extends Electrodomestico{
8
9 //Constantes
10
11 /**
12 * Resolucion por defecto
13 */
14 private final static int RESOLUCION_DEF=20;
15
//Atributos
16
17 /**
18 * Resolucion del televisor
19 */
20 private int resolucion;
21
22 /**
* Indica si tiene o no sintonizadorTDT
23 */
24 private boolean sintonizadorTDT;
25
26 //Métodos publicos
27
/**
28 * Precio final de la television
29 * @return precio final de la television
30 */
31 public double precioFinal(){
32 //Invocamos el método precioFinal del método padre
double plus=super.precioFinal();
33
34 //Añadimos el codigo necesario
35 if (resolucion>40){
36 plus+=precioBase*0.3;
37 }
38 if (sintonizadorTDT){
plus+=50;
39 }
40
41 return plus;
42 }
43
44 //Constructor
45
46 /**
* Constructor por defecto
47
*/
48 public Television(){
49 this(PRECIO_BASE_DEF, PESO_DEF, CONSUMO_ENERGETICO_DEF, COLOR_DEF, RESOLUCION_DEF, false);
50 }
51
52 /**
* Constructor con 2 parametros
53
* @param precioBase
54
55
56
57
58
59
60 * @param peso
61 */
public Television(double precioBase, double peso){
62
this(precioBase, peso, CONSUMO_ENERGETICO_DEF, COLOR_DEF, RESOLUCION_DEF, false);
63 }
64
65 /**
66 * Contructor con 6 parametros
67 * @param precioBase
* @param peso
68
* @param consumoEnergetico
69 * @param color
70 * @param resolucion
71 * @param sintonizadorTDT
72 */
public Television(double precioBase, double peso, char consumoEnergetico, String color, int resolucion, boolean sin
73
super(precioBase, peso, consumoEnergetico, color);
74 this.resolucion=resolucion;
75 this.sintonizadorTDT=sintonizadorTDT;
76 }
77 }
78
79
80
81
82
83
–Clase Ejecutable
1 /**
* Clase ejecutable
2
* @author DiscoDurodeRoer
3 */
4 public class ElectrodomesticosApp {
5
6 public static void main(String[] args) {
7
8 //Creamos un array de Electrodomesticos
Electrodomestico listaElectrodomesticos[]=new Electrodomestico[10];
9
10
//Asignamos cada una de las posiciones como queramos
11 listaElectrodomesticos[0]=new Electrodomestico(200, 60, 'C', "Verde");
12 listaElectrodomesticos[1]=new Lavadora(150, 30);
13 listaElectrodomesticos[2]=new Television(500, 80, 'E', "negro", 42, false);
14 listaElectrodomesticos[3]=new Electrodomestico();
15 listaElectrodomesticos[4]=new Electrodomestico(600, 20, 'D', "gris");
listaElectrodomesticos[5]=new Lavadora(300, 40, 'Z', "blanco", 40);
16 listaElectrodomesticos[6]=new Television(250, 70);
17 listaElectrodomesticos[7]=new Lavadora(400, 100, 'A', "verde", 15);
18 listaElectrodomesticos[8]=new Television(200, 60, 'C', "naranja", 30, true);
19 listaElectrodomesticos[9]=new Electrodomestico(50, 10);
20
21 //Creamos las variables que usaremos para almacenar la suma de los precios
double sumaElectrodomesticos=0;
22 double sumaTelevisiones=0;
23 double sumaLavadoras=0;
24
25 //Recorremos el array invocando el metodo precioFinal
26 for(int i=0;i<listaElectrodomesticos.length;i++){
27 /*
* Cuando una Television o una Lavadora este en la posicion del array actual,
28 * pasara por su clase y por la de electrodomestico, ya que una television es un electrodomestico.
29 * Ejecutamos en cada uno su propia version del metodo precioFinal
30
31
32
33
34 */
35
if(listaElectrodomesticos[i] instanceof Electrodomestico){
36 sumaElectrodomesticos+=listaElectrodomesticos[i].precioFinal();
37 }
38 if(listaElectrodomesticos[i] instanceof Lavadora){
39 sumaLavadoras+=listaElectrodomesticos[i].precioFinal();
40 }
if(listaElectrodomesticos[i] instanceof Television){
41 sumaTelevisiones+=listaElectrodomesticos[i].precioFinal();
42 }
43 }
44
45 //Mostramos los resultados
46 System.out.println("La suma del precio de los electrodomesticos es de "+sumaElectrodomesticos);
System.out.println("La suma del precio de las lavadoras es de "+sumaLavadoras);
47 System.out.println("La suma del precio de las televisiones es de "+sumaTelevisiones);
48
49 }
50
51 }
52
53
54
55
5
–Clase Serie
1 /**
* Clase Serie
2
*
3 * Contiene informacion sobre una serie (en general)
4 * @author DiscoDurodeRoer
5 *
6 */
public class Serie implements Entregable{
7
8
//Constantes
9
10 /**
11 * Numero de temporadas por defecto
12 */
13 private final static int NUM_TEMPORADAS_DEF=3;
14
15 /**
* Constante que indica que un objeto es mayor que otro
16 */
17 public final static int MAYOR=1;
18
19 /**
20 * Constante que indica que un objeto es menor que otro
21 */
public final static int MENOR=-1;
22
23 /**
24 * Constante que indica que un objeto es igual que otro
25 */
26 public final static int IGUAL=0;
27
28 //Atributos
29
/**
30 * Titulo de la serie
31 */
32 private String titulo;
33
34 /**
35 * Numero de temporadas de la serie
*/
36 private int numeroTemporadas;
37
38 /**
39 * Indica si esta entregado la serie
40 */
41 private boolean entregado;
42
/**
43 * Genero de la serie
44 */
45 private String genero;
46
47 /**
48 * Creador de la serie
*/
49
private String creador;
50
51 //Métodos publicos
52
53 /**
54 * Devuelve el titulo de la serie
55 * @return titulo de la serie
56 */
public String getTitulo() {
57
return titulo;
58 }
59
60 /**
61 * Modifica el titulo de la serie
62 * @param titulo a cambiar
*/
63
public void setTitulo(String titulo) {
64 this.titulo = titulo;
65 }
66
67 /**
68 * Devuelve la numeroTemporadas de la serie
69 * @return numeroTemporadas de la serie
*/
70 public int getnumeroTemporadas() {
71 return numeroTemporadas;
72 }
73
74 /**
75 * Modifica la numeroTemporadas de la serie
* @param numeroTemporadas a cambiar
76 */
77 public void setnumeroTemporadas(int numeroTemporadas) {
78 this.numeroTemporadas = numeroTemporadas;
79 }
80
81 /**
* Devuelve el genero de la serie
82 * @return genero de la serie
83 */
84 public String getGenero() {
85 return genero;
86 }
87
88 /**
* Modifica el genero de la serie
89 * @param genero a cambiar
90 */
91 public void setGenero(String genero) {
92 this.genero = genero;
}
93
94
/**
95 * Devuelve el creador de la serie
96 * @return creador de la serie
97 */
98 public String getcreador() {
99 return creador;
}
100
101 /**
102 * Modifica el creador de la serie
103 * @param creador a cambiar
104 */
105 public void setcreador(String creador) {
this.creador = creador;
106 }
107
108 /**
109 * Cambia el estado de entregado a true
110 */
111 public void entregar() {
entregado=true;
112 }
113
114 /**
115 * Cambia el estado de entregado a false
116 */
public void devolver() {
117
entregado=false;
118 }
119
120 /**
121 * Indica el estado de entregado
122 */
public boolean isEntregado() {
123
if(entregado){
124 return true;
125 }
126 return false;
127 }
128
129 /**
* Compara dos series segun su numero de temporadas
130 * @param objeto a comparar
131 * @return codigo numerico
132 * <ul>
133 * <li>1: La Serie 1 es mayor que la Serie 2</li>
* <li>0: Las Series son iguales</li>
134
* <li>-1: La Serie 1 es menor que la Serie 2</li></ul>
135 */
136 public int compareTo(Object a) {
137 int estado=MENOR;
138
139 //Hacemos un casting de objetos para usar el metodo get
140 Serie ref=(Serie)a;
if (numeroTemporadas>ref.getnumeroTemporadas()){
141 estado=MAYOR;
142 }else if(numeroTemporadas==ref.getnumeroTemporadas()){
143 estado=IGUAL;
144 }
145
146 return estado;
}
147
148
/**
149 * Muestra informacion de la Serie
150 * @return cadena con toda la informacion de la Serie
151 */
152 public String toString(){
return "Informacion de la Serie: n" +
153
"tTitulo: "+titulo+"n" +
154 "tNumero de temporadas: "+numeroTemporadas+"n" +
155 "tGenero: "+genero+"n" +
156 "tCreador: "+creador;
157 }
158
159 /**
* Indica si dos Series son iguales, siendo el titulo y creador iguales
160 * @param a Serie a comparar
161 * @return true si son iguales y false si son distintos
162 */
163 public boolean equals(Serie a){
if (titulo.equalsIgnoreCase(a.getTitulo()) && creador.equalsIgnoreCase(a.getcreador())){
164
return true;
165 }
166 return false;
167 }
168
169 //Constructor
170
171 /**
* Constructor por defecto
172 */
173 public Serie(){
174 this("",NUM_TEMPORADAS_DEF, "", "");
175 }
176
177 /**
178 * Contructor con 2 parametros
* @param titulo de la Serie
179 * @param creador de la Serie
180 */
181 public Serie(String titulo, String creador){
182 this(titulo,NUM_TEMPORADAS_DEF, "", creador);
}
183
184
/**
185 * Constructor con 4 parametros
186 * @param titulo de la Serie
187 * @param numeroTemporadas de la Serie
188 * @param genero de la Serie
189 * @param creador de la Serie
*/
190 public Serie(String titulo, int numeroTemporadas, String genero, String creador){
191 this.titulo=titulo;
192 this.numeroTemporadas=numeroTemporadas;
193 this.genero=genero;
this.creador=creador;
194
this.entregado=false;
195 }
196
197 }
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
–Clase Videojuego
1 /**
*
2
* Clase videojuego
3 *
4 * Contiene la informacion sobre un videojuego
5 *
6 * @author DiscoDurodeRoer
*/
7
public class Videojuego implements Entregable{
8
9 //Constantes
10
11 /**
12 * Horas estimadas por defecto
13 */
14 private final static int HORAS_ESTIMADAS_DEF=100;
15
/**
16 * Constante que indica que un objeto es mayor que otro
17 */
18 public final static int MAYOR=1;
19
20 /**
21 * Constante que indica que un objeto es menor que otro
*/
22 public final static int MENOR=-1;
23
24 /**
25 * Constante que indica que un objeto es igual que otro
26 */
27 public final static int IGUAL=0;
28
//Atributos
29
30
/**
31 * Titulo del videojuego
32 */
33 private String titulo;
34
35 /**
36 * Horas estimadas del videojuego
*/
37
private int horasEstimadas;
38
39 /**
40 * Indica si esta o no entregado el videojuego
41 */
42 private boolean entregado;
43
44 /**
* Genero del videojuego
45 */
46 private String genero;
47
48 /**
49 * Compañia del videojuego
50 */
private String compañia;
51
52 //Métodos publicos
53
54 /**
55 * Devuelve el titulo del videojuego
56 * @return titulo del videojuego
57 */
public String getTitulo() {
58 return titulo;
59 }
60
61 /**
62 * Modifica el titulo del videojuego
63 * @param titulo a cambiar
*/
64 public void setTitulo(String titulo) {
65 this.titulo = titulo;
66 }
67
68 /**
* Devuelve el numero de paginas del videojuego
69 * @return numero de paginas del videojuego
70 */
71 public int getHorasEstimadas() {
72 return horasEstimadas;
}
73
74
/**
75 * Modifica el numero de paginas del videojuego
76 * @param horasEstimadas
77 */
78 public void setHorasEstimadas(int horasEstimadas) {
79 this.horasEstimadas = horasEstimadas;
}
80
81 /**
82 * Devuelve el genero del videojuego
83 * @return genero del videojuego
84 */
85 public String getGenero() {
return genero;
86 }
87
88 /**
89 * Modifica el genero del videojuego
90 * @param genero a cambiar
91 */
public void setGenero(String genero) {
92 this.genero = genero;
93 }
94
95 /**
96 * Devuelve el compañia del videojuego
* @return compañia del videojuego
97
*/
98 public String getcompañia() {
99 return compañia;
100 }
101
102 /**
* Modifica el compañia del videojuego
103
* @param compañia a cambiar
104 */
105 public void setcompañia(String compañia) {
106 this.compañia = compañia;
107 }
108
109 /**
* Cambia el estado de entregado a true
110 */
111 @Override
112 public void entregar() {
113 entregado=true;
}
114
115
/**
116 * Cambia el estado de entregado a false
117 */
118 @Override
119 public void devolver() {
120 entregado=false;
}
121
122 /**
123 * Indica el estado de entregado
124 * @return
125 */
126 @Override
public boolean isEntregado() {
127
if(entregado){
128 return true;
129 }
130 return false;
131 }
132
/**
133
* Compara dos videojuegos segun el numero de paginas
134 * @return codigo numerico
135 * <ul>
136 * <li>1: El videojuego 1 es mayor que el videojuego 2</li>
137 * <li>0: Los videojuegos son iguales</li>
* <li>-1: El videojuego 1 es menor que el videojuego 2</li></ul>
138
*/
139 @Override
140 public int compareTo(Object a) {
141 int estado=MENOR;
142
143 //Hacemos un casting de objetos para usar el metodo get
Videojuego ref=(Videojuego)a;
144
if (horasEstimadas>ref.getHorasEstimadas()){
145 estado=MAYOR;
146 }else if(horasEstimadas==ref.getHorasEstimadas()){
147 estado=IGUAL;
148 }
149
150 return estado;
}
151
152 /**
153 * Muestra informacion del videojuego
154 * @return cadena con toda la informacion del videojuego
155 */
156 @Override
public String toString(){
157
return "Informacion del videojuego: n" +
158 "tTitulo: "+titulo+"n" +
159 "tHoras estimadas: "+horasEstimadas+"n" +
160 "tGenero: "+genero+"n" +
161 "tcompañia: "+compañia;
}
162
163
/**
164 * Indica si dos videojuegos son iguales, siendo el titulo y compañia iguales
165 * @param a videojuego a comparar
166 * @return true si son iguales y false si son distintos
167 */
public boolean equals(Videojuego a){
168
if (titulo.equalsIgnoreCase(a.getTitulo()) && compañia.equalsIgnoreCase(a.getcompañia())){
169 return true;
170 }
171 return false;
172 }
173
//Constructor
174
175
/**
176 * Constructo por defecto
177 */
178 public Videojuego(){
179 this("",HORAS_ESTIMADAS_DEF, "", "");
180 }
181
/**
182 * Constructor con 2 parametros
183 * @param titulo del videojuego
184 * @param compañia del videojuego
185 */
186 public Videojuego(String titulo, String compañia){
this(titulo,HORAS_ESTIMADAS_DEF, "", compañia);
187
}
188
189 /**
190 * Constructor con 4 parametros
191 * @param titulo del videojuego
192 * @param horasEstimadas
* @param genero del videojuego
193
* @param compañia del videojuego
194 */
195 public Videojuego(String titulo, int horasEstimadas, String genero, String compañia){
196 this.titulo=titulo;
197 this.horasEstimadas=horasEstimadas;
this.genero=genero;
198
this.compañia=compañia;
199 this.entregado=false;
200 }
201
202
203 }
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
–Interfaz Entregable
1 public interface Entregable {
2
3 public void entregar();
4
public void devolver();
5
6 public boolean isEntregado();
7
8 public int compareTo(Object a);
9 }
10
–Clase ejecutable
1 public class EntregablesApp {
2
3 public static void main(String[] args) {
4
//Creamos dos arrays de cada tipo de objeto
5 Serie listaSeries[]=new Serie[5];
6 Videojuego listaVideojuegos[]=new Videojuego[5];
7
8 //Creamos un objeto en cada posicion del array
9 listaSeries[0]=new Serie();
10 listaSeries[1]=new Serie("Juego de tronos", "George R. R. Martin ");
listaSeries[2]=new Serie("Los Simpsons", 25, "Humor", "Matt Groening");
11 listaSeries[3]=new Serie("Padre de familia", 12 ,"Humor", "Seth MacFarlane");
12 listaSeries[4]=new Serie("Breaking Bad", 5, "Thriller", "Vince Gilligan");
13
14 listaVideojuegos[0]=new Videojuego();
15 listaVideojuegos[1]=new Videojuego("Assasin creed 2", 30, "Aventura", "EA");
16 listaVideojuegos[2]=new Videojuego("God of war 3", "Santa Monica");
listaVideojuegos[3]=new Videojuego("Super Mario 3DS", 30, "Plataforma", "Nintendo");
17 listaVideojuegos[4]=new Videojuego("Final fantasy X", 200, "Rol", "Square Enix");
18
19 //entregamos algunos videojuegos y series
20 listaSeries[1].entregar();
21 listaSeries[4].entregar();
22 listaVideojuegos[0].entregar();
listaVideojuegos[3].entregar();
23
24
//Recorremos los arrays para contar cuantos entregados hay, tambien los devolvemos
25
26 int entregados=0;
27
28 for(int i=0;i<listaSeries.length;i++){
if(listaSeries[i].isEntregado()){
29
entregados+=1;
30 listaSeries[i].devolver();
31
32 }
33 if(listaVideojuegos[i].isEntregado()){
34 entregados+=1;
listaVideojuegos[i].devolver();
35
}
36 }
37
38 System.out.println("Hay "+entregados+" articulos entregados");
39
40 //Creamos dos objetos con la primera posicion de cada array
41 Serie serieMayor=listaSeries[0];
42 Videojuego videojuegoMayor=listaVideojuegos[0];
43
//Recorremos el array desde la posicion 1 (no 0), comparando el mayor con las posiciones del array
44 for(int i=1;i<listaSeries.length;i++){
45 if(listaSeries[i].compareTo(serieMayor)==Serie.MAYOR){
46 serieMayor=listaSeries[i];
47 }
48 if(listaVideojuegos[i].compareTo(videojuegoMayor)==Videojuego.MAYOR){
videojuegoMayor=listaVideojuegos[i];
49 }
50
51 }
52
53 //Mostramos toda la informacion del videojuego y serie mayor
54 System.out.println(videojuegoMayor);
55 System.out.println(serieMayor);
}
56
57
}
58
59
60
61
62
63
64
65
66
6
–Clase Libro
1 public class Libro {
2
3 /*Atributos*/
private int ISBN;
4 private String titulo;
5 private String autor;
6 private int numPaginas;
7
8 /*Constructores*/
9
10 public Libro(int pISBN, String pTitulo, String pAutor, int pNumPaginas){
11 ISBN=pISBN;
titulo=pTitulo;
12
autor=pAutor;
13 numPaginas=pNumPaginas;
14
15 }
16
17 /*Metodos*/
18
19 public int getISBN() {
20 return ISBN;
}
21
22 public void setISBN(int ISBN) {
23 this.ISBN = ISBN;
24 }
25
26 public String getTitulo() {
27 return titulo;
}
28
29 public void setTitulo(String titulo) {
30 this.titulo = titulo;
31 }
32
33 public String getAutor() {
34 return autor;
}
35
36 public void setAutor(String autor) {
37 this.autor = autor;
38 }
39
40 public int getNumPaginas() {
41
42
43
44
45 return numPaginas;
}
46
47
public void setNumPaginas(int numPaginas) {
48 this.numPaginas = numPaginas;
49 }
50
51 @Override
52 public String toString(){
return "El libro "+titulo+" con ISBN "+ISBN+""
53
+ " creado por el autor "+autor
54 + " tiene "+numPaginas+" páginas";
55 }
56
57
58
59 }
60
61
62
63
–Clase principal
1 public class Ejercicio_POO_DDR_1 {
2
public static void main(String[] args) {
3
4
//Creamos lo objetos
5 Libro libro1=new Libro(1111111111, "titulo1", "autor1", 30);
6
7
Libro libro2=new Libro(1111111112, "titulo2", "autor2", 60);
8
9 //Mostramos su estado
10 System.out.println(libro1.toString());
11 System.out.println(libro2.toString());
12
13 //Modificamos el atributo numPaginas del libro1
14 libro1.setNumPaginas(70);
15
//Comparamos quien tiene mas paginas
16 if(libro1.getNumPaginas()>libro2.getNumPaginas()){
17 System.out.println(libro1.getTitulo()+" tiene más páginas");
18 }else{
19 System.out.println(libro2.getTitulo()+" tiene más páginas");
20 }
21
22
}
23
24
}
25 }
26
27
7
— Clase Persona
1 //Clase Persona
public abstract class Persona {
2
3
/*Atributos*/
4 private String nombre;
5 private char sexo;
6 private int edad;
7 private boolean asistencia;
8
9 /*Contantes*/
private final String[] NOMBRES_CHICOS={"Pepe", "Fernando", "Alberto", "Nacho", "Eustaquio"};
10 private final String[] NOMBRES_CHICAS={"Alicia", "Laura", "Clotilde", "Pepa", "Elena"};
11 private final int CHICO=0;
12 private final int CHICA=1;
13
14 /*Constructores*/
15 public Persona(){
16
//entre 0 y 1
17 int determinar_sexo=MetodosSueltos.generaNumeroAleatorio(0,1);
18
19 //Si es 0 es un chico
20 if(determinar_sexo==CHICO){
21 nombre=NOMBRES_CHICOS[MetodosSueltos.generaNumeroAleatorio(0,4)];
22 sexo='H';
}else{
23
nombre=NOMBRES_CHICAS[MetodosSueltos.generaNumeroAleatorio(0,4)];
24 sexo='M';
25 }
26
27 //Indicamos la disponibilidad
disponibilidad();
28
29
}
30
31 /*Metodos*/
32
33 /**
34 * Devuelve el nombre
35 * @return
36 */
public String getNombre() {
37 return nombre;
38 }
39
40 /**
41 * Modifica el nombre
42 * @param nombre
*/
43 public void setNombre(String nombre) {
44 this.nombre = nombre;
45 }
46
47 /**
48 * Devuelve el sexo de la persona
* @return
49 */
50 public char getSexo() {
51 return sexo;
52 }
53
54 /**
* Modifica el sexo de la persona
55 * @param sexo
56
57 */
public void setSexo(char sexo) {
58
this.sexo = sexo;
59 }
60
61 /**
62 * Devuelve la edad de la persona
63 * @return
*/
64
public int getEdad() {
65 return edad;
66 }
67
68 /**
69 * Modifica la edad de la edad
* @param edad
70
*/
71 public void setEdad(int edad) {
72 this.edad = edad;
73 }
74
75 /**
* Indica la asistencia de la persona
76
* @return
77 */
78 public boolean isAsistencia() {
79 return asistencia;
80 }
81
/**
82
* Modifica la asistencia de la persona
83 * @param asistencia
84 */
85 public void setAsistencia(boolean asistencia) {
86 this.asistencia = asistencia;
87
88
89
90
91
92
93
}
94
95
//abtracto, las clases hijas deben implementarlo
96 public abstract void disponibilidad();
97
98 }
99
100
101
102
103
104
105
— Clase Alumno
1 //Clase Alumno, hereda de la clase Persona
public class Alumno extends Persona{
2
3
/*Atributos*/
4 private int nota;
5
6 /*Constructor*/
7 public Alumno(){
8 super();
9
nota=MetodosSueltos.generaNumeroAleatorio(0,10);
10
11 super.setEdad(MetodosSueltos.generaNumeroAleatorio(12,15));
12
13 }
14
/*Metodos*/
15
16 /**
17 * Devuelve la nota
18 * @return nota del alumno
19 */
20
21 public int getNota() {
return nota;
22 }
23
24 /**
25 * Modifica la nota del alumno
26 * @param nota
27 */
public void setNota(int nota) {
28 this.nota = nota;
29 }
30
31 /**
32 * Indica si el alumno esta disponible (50%)
33 */
@Override
34 public void disponibilidad() {
35
36 int prob=MetodosSueltos.generaNumeroAleatorio(0, 100);
37
38 if(prob<50){
39 super.setAsistencia(false);
40
41
42
43
44 }else{
super.setAsistencia(true);
45 }
46
47 }
48
49 /**
50 * Muestra la informacion del alumno
51 * @return informacion
*/
52
public String toString(){
53
54 return "Nombre: "+super.getNombre()+" ,sexo: "+super.getSexo()+" , nota: "+nota;
55
56 }
57
58
59
60
61 }
62
63
64
65
— Clase Profesor
1 //Clase profesor que hereda de la clase Persona
public class Profesor extends Persona{
2
3 /*Atributos*/
private String materia;
4
5
/*Constructores*/
6 public Profesor(){
7 super(); //Llama al constructor padre
8
9 super.setEdad(MetodosSueltos.generaNumeroAleatorio(25,50)); //llama al metodo padre
10
11 materia=Constantes.MATERIAS[MetodosSueltos.generaNumeroAleatorio(0,2)];
12 }
13
/*Metodos*/
14
15 /**
16 * Devuelve la materia del profesor
17 * @return
18 */
19 public String getMateria() {
return materia;
20 }
21
22 /**
23 * Modifica la materia del profesor
24 * @param materia
25 */
public void setMateria(String materia) {
26 this.materia = materia;
27 }
28
29 /**
30 * Calcula la disponibilidad del profesor(20%)
31 */
@Override
32
33
34
35
36 public void disponibilidad() {
37
38 int prob=MetodosSueltos.generaNumeroAleatorio(0, 100);
39
40 if(prob<20){
super.setAsistencia(false);
41 }else{
42 super.setAsistencia(true);
43 }
44
45 }
46
47 }
48
49
50
— Clase Aula
1 public class Aula {
2
3 /*Atributos*/
private int id;
4 private Profesor profesor;
5 private Alumno[] alumnos;
6 private String materia;
7
8 /*Constantes*/
9 private final int MAX_ALUMNOS=20;
10
/*Constructores*/
11 public Aula(){
12
13 id=1;
14
profesor=new Profesor();
15 alumnos= new Alumno[MAX_ALUMNOS];
16 creaAlumnos();
17 materia=Constantes.MATERIAS[MetodosSueltos.generaNumeroAleatorio(0,2)];
18
19 }
20
21 /*Metodos*/
22
/**
23
* Crea los alumnos para el aula
24 */
25 private void creaAlumnos(){
26
27 for(int i=0;i<alumnos.length;i++){
28 alumnos[i]=new Alumno();
}
29
30
}
31
32
33 /**
34 * Indica si la asistencia de los alumnos es mayor del 50%
35 * @return
36 */
37 private boolean asistenciaAlumnos(){
38
int cuentaAsistencias=0;
39
40
41 //contamos las asistencias
for(int i=0;i<alumnos.length;i++){
42
43
if(alumnos[i].isAsistencia()){
44 cuentaAsistencias++;
45 }
46
47 }
48
49 //Muestro la asistencia total
50 System.out.println("Hay "+cuentaAsistencias+" alumnos");
51
return cuentaAsistencias>=((int)(alumnos.length/2));
52
53
}
54
55 /**
56 * Indicamos si se puede dar clase
57 * @return
58 */
public boolean darClase(){
59
60
//Indicamos las condiciones para que se pueda dar la clase
61
62 if(!profesor.isAsistencia()){
63 System.out.println("El profesor no esta, no se puede dar clase");
64 return false;
65 }else if(!profesor.getMateria().equals(materia)){
66 System.out.println("La materia del profesor y del aula no es la misma, no se puede dar clase");
return false;
67 }else if (!asistenciaAlumnos()){
68 System.out.println("La asistencia no es suficiente, no se puede dar clase");
69 return false;
70 }
71
72 System.out.println("Se puede dar clase");
73 return true;
74
}
75
76 /**
77 * Indicamos las notas de los alumnos aprobados, chicos y chicas
78 */
79 public void notas(){
80
81 int chicosApro=0;
int chicasApro=0;
82
83
for(int i=0;i<alumnos.length;i++){
84
85 //Comprobamos si el alumno esta aprobado
86 if(alumnos[i].getNota()>=5){
87 //Segun el sexo, aumentara uno o otro
88 if(alumnos[i].getSexo()=='H'){
chicosApro++;
89
}else{
90 chicasApro++;
91 }
92
93 System.out.println(alumnos[i].toString());
94
95 }
96
97 }
98
System.out.println("Hay "+chicosApro+" chicos y "+chicasApro+" chicas aprobados/as");
99
100
101
102
103
104
105
106
107 }
108
109 }
110
111
112
113
114
115
— Clase Constantes
1 //Clase constantes
2 public class Constantes {
3
4 public static final String[] MATERIAS={"Matematicas", "Filosofia", "Fisica"};
5
6 }
— Clase MetodosSueltos
1 public class MetodosSueltos {
2
3 /**
* Genera un numero aleatorio entre dos numeros.
4 * Entre el minimo y el maximo
5 * @param minimo
6 * @param maximo
7
8 * @return numero entre minimo y maximo
9 */
public static int generaNumeroAleatorio(int minimo, int maximo){
10
11 int num=(int)Math.floor(Math.random()*(minimo-(maximo+1))+(maximo+1));
12 return num;
13 }
14
15 }
16
— Clase Principal
1
public class Principal {
2
3
public static void main(String[] args) {
4
5 //Creamos el objeto
6 Aula aula=new Aula();
7
8 //Indicamos si se puede dar la clase
9 if(aula.darClase()){
aula.notas();
10
}
11
12 }
13
14 }
15
8
— Clase Espectador
1 /**
* Clase Espectador, lleva todo lo relativo a la información del espectador
2
*
3 * @author DiscoDurodeRoer
4 */
5 public class Espectador {
6
7 /*Atributos*/
private String nombre;
8
private int edad;
9 private double dinero;
10
11 /*Constructores*/
12 public Espectador(String nombre, int edad, double dinero) {
13 this.nombre = nombre;
this.edad = edad;
14
this.dinero = dinero;
15 }
16
17 /*Metodos*/
18 public String getNombre() {
19 return nombre;
}
20
21
public void setNombre(String nombre) {
22 this.nombre = nombre;
23 }
24
25 public int getEdad() {
return edad;
26
}
27
28 public void setEdad(int edad) {
29 this.edad = edad;
30 }
31
32 public double getDinero() {
return dinero;
33
}
34
35 public void setDinero(double dinero) {
36 this.dinero = dinero;
37 }
38
39 /**
* Pagamos la entrada del cine
40
*
41 * @param precio
42 */
43 public void pagar(double precio) {
44 dinero -= precio;
}
45
46
/**
47 * Indicamos si el espectador tiene edad para ver la pelicula (en el video
48 * estaba en la clase pelicula tiene mas sentido que sea un metodo del
49 * espectador)
50 *
* @param edadMinima
51
* @return
52 */
53 public boolean tieneEdad(int edadMinima) {
54
55
56
57
58
59
60 return edad >= edadMinima;
}
61
62 /**
63 * Indicamos si el espectador tiene dinero (en el video estaba en la clase
64 * cine tiene mas sentido que sea un metodo del espectador)
65 *
66 * @param precioEntrada
* @return
67 */
68 public boolean tieneDinero(double precioEntrada) {
69 return dinero >= precioEntrada;
70 }
71
72 @Override
public String toString() {
73 return "el nombre del espectador es " + nombre + " de " + edad + " años y con " + dinero + " euros en su bol
74 }
75
76 }
77
78
79
80
81
82
— Clase Asiento
1 /**
* Clase asiento, se usa para manejar toda la informacion relativa al asiento
2
*
3 * @author DiscoDurodeRoer
4 */
5 public class Asiento {
6
7 /*Atributos*/
private char letra;
8
private int fila;
9 private Espectador espectador; // informacion del espectador que esta sentado, null si es vacio
10
11 /*Constructores*/
12 public Asiento(char letra, int fila) {
13 this.letra = letra;
this.fila = fila;
14
this.espectador = null; //al iniciar el asiento, no habrá nadie sentado
15 }
16
17 /*Metodos*/
18 public char getLetra() {
19 return letra;
}
20
21
public void setLetra(char letra) {
22 this.letra = letra;
23 }
24
25 public int getFila() {
26 return fila;
}
27
28
public void setFila(int fila) {
29 this.fila = fila;
30 }
31
32 public Espectador getEspectador() {
return espectador;
33
}
34
35 public void setEspectador(Espectador espectador) {
36 this.espectador = espectador;
37 }
38
39 /**
* Indica si el asiento esta ocupado
40
*
41 * @return
42 */
43 public boolean ocupado() {
44 return espectador != null;
}
45
46
@Override
47 public String toString() {
48 if (ocupado()) {
49 return "Asiento: " + fila + letra + " y " + espectador;
50 }
51
return "Asiento: " + fila + letra + " y este asiento está vacio ";
52
53
}
54
55 }
56
57
58
59
60
61
62
63
64
— Clase Pelicula
1 /**
* Clase Pelicula, lleva todo lo relacionado con la pelicula
2
*
3 * @author DiscoDurodeRoer
4 */
5 public class Pelicula {
6
7 /*Atributos*/
private String titulo;
8
private int duracion;
9 private int edadMinima;
1 private String director;
0
1 /*Constructor*/
1 public Pelicula(String titulo, int duracion, int edadMinima, String director) {
1 this.titulo = titulo;
this.duracion = duracion;
2
this.edadMinima = edadMinima;
1 this.director = director;
3 }
1
4 /*Metodos*/
1 public String getTitulo() {
5 return titulo;
}
1
6
public void setTitulo(String titulo) {
1 this.titulo = titulo;
7 }
1
8 public int getDuracion() {
1 return duracion;
}
9
2
public void setDuracion(int duracion) {
0 this.duracion = duracion;
2 }
1
2 public int getEdadMinima() {
2 return edadMinima;
2 }
3
public void setEdadMinima(int edadMinima) {
2
this.edadMinima = edadMinima;
4 }
2
5 public String getDirector() {
2 return director;
6 }
2
7 public void setDirector(String director) {
2 this.director = director;
}
8
2
@Override
9 public String toString() {
3 return "'" + titulo + "' del director " + director + ", con una duracion de " + duracion + " minutos y la edad mi
0 }
3
1 }
3
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
5
5
5
6
5
7
5
8
5
9
6
0
— Clase Cine
1 /**
* Clase Cine, lleva todo lo relativo al cine
2
*
3 * @author DiscoDurodeRoer
4 */
5 public class Cine {
6
7 /*Atributos*/
private Asiento asientos[][];
8
private double precio;
9 private Pelicula pelicula;
10
11 /*Constructor*/
12 public Cine(int filas, int columnas, double precio, Pelicula pelicula) {
13
14 asientos = new Asiento[filas][columnas];
this.precio = precio;
15
this.pelicula = pelicula;
16 rellenaButacas();
17 }
18
19 /*Metodos*/
20 public Asiento[][] getAsientos() {
return asientos;
21
}
22
23 public void setAsientos(Asiento[][] asientos) {
24 this.asientos = asientos;
25 }
26
27 public double getPrecio() {
return precio;
28
}
29
30 public void setPrecio(double precio) {
31 this.precio = precio;
32 }
33
34 public Pelicula getPelicula() {
return pelicula;
35
36 }
37
public void setPelicula(Pelicula pelicula) {
38
this.pelicula = pelicula;
39 }
40
41 /**
42 * Rellena nuestros asientos, dandoles una fila y una letra
43 */
private void rellenaButacas() {
44
45
int fila = asientos.length;
46 for (int i = 0; i < asientos.length; i++) {
47 for (int j = 0; j < asientos[0].length; j++) {
48 //Recuerda que los char se pueden sumar
49 asientos[i][j] = new Asiento((char) ('A' + j), fila);
}
50
fila--; //Decremento la fila para actualizar la fila
51 }
52
53 }
54
55 /**
56 * Indicamos si hay sitio en el cine, cuando vemos una vacia salimos de la
* función
57
*
58 * @return
59 */
60 public boolean haySitio() {
61
62 for (int i = 0; i < asientos.length; i++) {
for (int j = 0; j < asientos[0].length; j++) {
63
64
if (!asientos[i][j].ocupado()) {
65
66 return true;
}
67
68
}
69 }
70
71 return false;
72 }
73
74 /**
* Indico si en una posicion concreta esta ocupada
75
*
76 * @param fila
77 * @param letra
78 * @return
79 */
public boolean haySitioButaca(int fila, char letra) {
80
return getAsiento(fila, letra).ocupado();
81 }
82
83 /**
84 * Indicamos si el espectador cumple lo necesario para entrar: - Tiene
85 * dinero - Tiene edad El tema de si hay sitio, se controla en el main
*
86
* @param e
87 * @return
88 */
89 public boolean sePuedeSentar(Espectador e) {
90 return e.tieneDinero(precio) && e.tieneEdad(pelicula.getEdadMinima());
}
91
92
/**
93 * Siento al espectador en un asiento
94 *
95 * @param fila
96 * @param letra
* @param e
97
*/
98 public void sentar(int fila, char letra, Espectador e) {
99 getAsiento(fila, letra).setEspectador(e);
100 }
101
102 /**
* Devuelvo un asiento concreto por su fila y letra
103
*
104 * @param fila
105 * @param letra
106 * @return
107 */
public Asiento getAsiento(int fila, char letra) {
108
return asientos[asientos.length - fila - 1][letra - 'A'];
109 }
110
111 /**
112 * Numero de filas de nuestro cine
113 *
* @return
114
*/
115 public int getFilas() {
116 return asientos.length;
117 }
118
119 /**
* Numero de columas de nuestro cine
120
*
121 * @return
122 */
123 public int getColumnas() {
124 return asientos[0].length;
}
125
126
127 /**
* Mostramos la información de nuestro cine (Tambien se puede hacer en un
128
* toString pero hay que devolver un String)
129 */
130 public void mostrar() {
131
132 System.out.println("Información cine");
133 System.out.println("Pelicula reproducida: " + pelicula);
System.out.println("Precio entrada: " + precio);
134
System.out.println("");
135 for (int i = 0; i < asientos.length; i++) {
136 for (int j = 0; j < asientos[0].length; j++) {
137 System.out.println(asientos[i][j]);
138 }
System.out.println("");
139
}
140 }
141
142 }
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
— Clase Metodos
1
2 /**
* Clase Metodos, contiene funciones útiles para nuestro programa
3
*
4 * @author DiscoDuroDeroer
5 */
6 public class Metodos {
7
8 public static final String nombres[] = {"Fernando", "Laura", "Pepe", "Eufrasio"};
9
public static int generaNumeroEnteroAleatorio(int minimo, int maximo) {
10
int num = (int) (Math.random() * (minimo - (maximo + 1)) + (maximo + 1));
11 return num;
12 }
13
14 }
15
— Clase Principal
1 import java.util.Scanner;
2
/**
3
* Clase ejecutable
4 * @author DiscoDurodeRoer
*/
5
public class Principal {
6
7 public static void main(String[] args) {
8
9 //Creo la pelicula
10 Pelicula pelicula = new Pelicula("Mi vida", 90, 16, "DDR");
11
12 // Pido datos (esto no se mostro en el video por falta de tiempo)
13 // No valida nada al respecto de tamaños (siguiente version)
Scanner sn = new Scanner(System.in);
14
15 System.out.println("Introduce el numero de filas");
16 int filas=sn.nextInt();
17
18 System.out.println("Introduce el numero de columnas");
19 int columnas=sn.nextInt();
20
21 System.out.println("Introduce el precio de la entrada de cine");
double precio=sn.nextDouble();
22
23
//Creo el cine, necesito la pelicula para ello
24 Cine cine = new Cine(filas, columnas, precio, pelicula);
25
26 //Numero de espectadores que seran creados
27 System.out.println("Introduce el numero de espectadores a crear");
28 int numEspectadores = sn.nextInt();
29
//Variables y objetos usados
30
Espectador e;
31 int fila;
32 char letra;
33
34 System.out.println("Espectadores generados: ");
//Termino cuando no queden espectadores o no haya mas sitio en el cine
35
for (int i = 0; i < numEspectadores && cine.haySitio(); i++) {
36
37 //Generamos un espectador
38 e = new Espectador(
39 Metodos.nombres[Metodos.generaNumeroEnteroAleatorio(0, Metodos.nombres.length - 1)], //Nombre
40 Metodos.generaNumeroEnteroAleatorio(10, 30), //Generamos una edad entre 10 y 30
Metodos.generaNumeroEnteroAleatorio(1, 10)); //Generamos el dinero entre 1 y 10 euros
41
42
//Mostramos la informacion del espectador
43 System.out.println(e);
44
45 //Generamos una fila y letra
46 //Si esta libre continua sino busca de nuevo
47 do {
48
fila = Metodos.generaNumeroEnteroAleatorio(0, cine.getFilas() - 1);
49
letra = (char) Metodos.generaNumeroEnteroAleatorio('A', 'A' + (cine.getColumnas()-1));
50
51 } while (cine.haySitioButaca(fila, letra));
52
53 //Si el espectador cumple con las condiciones
54 if (cine.sePuedeSentar(e)) {
55 e.pagar(cine.getPrecio()); //El espectador paga el precio de la entrada
cine.sentar(fila, letra, e); //El espectador se sienta
56
}
57
58 }
59
60 System.out.println("");
61 cine.mostrar(); //Mostramos la información del cine, tambien se puede usar un toString
62
63 System.out.println("Fin");
64
65
66
67
68
69
}
70
71 }
72
73
74
75
76
https://www.discoduroderoer.es/ejercicios-propuestos-y-resueltos-programacion-orientado-a-objetos-java/