-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSocio.java
99 lines (88 loc) · 2.8 KB
/
Socio.java
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import java.util.*;
/** Clase abstracta que nos permite cubrir las caracteristicas basicas de un socio en una biblioteca
* @author Gomez Kevin David
*/
public abstract class Socio{
private int dniSocio;
private String nombre;
private int diasPrestamo;
private ArrayList <Prestamo> prestamos;
/** Constructor.
*/
public Socio(int p_dniSocio, String p_nombre, int p_diasPrestamo){
this.setDniSocio(p_dniSocio);
this.setNombre(p_nombre);
this.setDiasPrestamo(p_diasPrestamo);
this.setPrestamos(new ArrayList <Prestamo> ());
}
//setters y getters
private void setDniSocio(int p_dniSocio){
this.dniSocio = p_dniSocio;
}
private void setNombre(String p_nombre){
this.nombre = p_nombre;
}
public void setDiasPrestamo(int p_diasPrestamo){
this.diasPrestamo = p_diasPrestamo;
}
private void setPrestamos(ArrayList<Prestamo> p_prestamos){
this.prestamos = p_prestamos;
}
public int getDniSocio(){
return this.dniSocio;
}
public String getNombre(){
return this.nombre;
}
public int getDiasPrestamo(){
return this.diasPrestamo;
}
public ArrayList<Prestamo> getPrestamos(){
return this.prestamos;
}
/** Permite añadir un prestamo.
* @param Prestamo p_prestamo.
*/
public void addPrestamo(Prestamo p_prestamo){
this.getPrestamos().add(p_prestamo);
}
/** Permite remover un prestamo.
* @param Prestamo p_prestamo.
*/
public void removePrestamo(Prestamo p_prestamo){
this.getPrestamos().remove(p_prestamo);
}
/** Retorna la cantidad de libros prestados que tiene un socio.
* @return Valor de tipo int.
*/
public int cantLibrosPrestados(){
int libros = 0;
for(Prestamo prestamo : this.getPrestamos()){
libros++;
}
return libros;
}
/** Retorna los detalles del socio.
* @return Valor de tipo String.
*/
public String toString(){
return "D.N.I.: " + this.getDniSocio() + " || " + this.getNombre() + " (" + this.soyDeLaClase() +
") || Libros Prestados: " + this.cantLibrosPrestados();
}
/** Retorna la leyenda (Profesor o Alumno) seg�n corresponda.
* @return Valor de tipo String.
*/
public abstract String soyDeLaClase();
/** Retorna true o false, pedendiendo si puede pedir o no un prestamo (puede hacerlo si no tiene ninguno vencido).
* @return Valor de tipo boolean.
*/
public boolean puedePedir(){
Calendar hoy = Calendar.getInstance();
for(Prestamo prestamo : this.getPrestamos()){
if(prestamo.vencido(hoy)){
return false;
}
}
return true;
}
}