Skip to content

Commit 3dba6f8

Browse files
committed
Ejercicio #26 completado
1 parent 21e0748 commit 3dba6f8

File tree

1 file changed

+121
-1
lines changed

1 file changed

+121
-1
lines changed

Roadmap/26 - SOLID SRP/java/simonguzman.java

Lines changed: 121 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,128 @@ public class simonguzman {
99
public static void main(String[] args) {
1010
//incorrectSrp();
1111
//correctSrp();
12-
additionalExerciseNoSrp();
12+
//additionalExerciseNoSrp();
13+
additionalExerciseSrp();
1314
}
15+
/****************************** Ejercicio adicional(Con srp) ******************************/
16+
public static void additionalExerciseSrp(){
17+
BookManager bookManager = new BookManager();
18+
UserManager userManager = new UserManager();
19+
LoanManager loanManager = new LoanManager();
20+
21+
bookManager.registerBook("1984", "George Orwell", 3);
22+
userManager.registerUser("John Doe", "001", "[email protected]");
23+
24+
User user = userManager.findUserById("001");
25+
Book book = bookManager.findBookByTitle("1984");
26+
27+
loanManager.borrowBook(user, book);
28+
loanManager.returnBook(user, book);
29+
}
30+
31+
class BookSrp {
32+
private String title;
33+
private String author;
34+
private int copies;
35+
36+
public BookSrp(){
37+
38+
}
39+
40+
public BookSrp(String title, String author, int copies) {
41+
this.title = title;
42+
this.author = author;
43+
this.copies = copies;
44+
}
45+
46+
public String getTitle() {
47+
return title;
48+
}
49+
50+
public int getCopies() {
51+
return copies;
52+
}
53+
54+
public void setCopies(int copies) {
55+
this.copies = copies;
56+
}
57+
}
58+
59+
class UserSrp {
60+
private String name;
61+
private String id;
62+
private String email;
63+
64+
public UserSrp(){
65+
66+
}
67+
68+
public UserSrp(String name, String id, String email) {
69+
this.name = name;
70+
this.id = id;
71+
this.email = email;
72+
}
73+
74+
public String getName() {
75+
return name;
76+
}
77+
78+
public String getId() {
79+
return id;
80+
}
81+
}
82+
83+
static class BookManager{
84+
private List<Book> books = new ArrayList<>();
85+
86+
public void registerBook(String title, String author, int copies){
87+
books.add(new Book(title, author, copies));
88+
System.out.println("Libro registrado: " + title);
89+
}
90+
91+
public Book findBookByTitle(String title){
92+
return books.stream().filter(b -> b.getTitle().equals(title)).findFirst().orElse(null);
93+
}
94+
}
95+
96+
static class UserManager{
97+
private List<User> users = new ArrayList<>();
98+
99+
public void registerUser(String name, String id, String email){
100+
users.add(new User(name, id, email));
101+
System.out.println("Usuario registrado: " + name);
102+
}
103+
104+
public User findUserById(String id){
105+
return users.stream().filter(u -> u.getId().equals(id)).findFirst().orElse(null);
106+
}
107+
}
108+
109+
static class LoanManager{
110+
private Map<User, List<Book>> borrowedBooks = new HashMap<>();
111+
112+
public void borrowBook(User user, Book book) {
113+
if (book != null && book.getCopies() > 0) {
114+
borrowedBooks.computeIfAbsent(user, k -> new ArrayList<>()).add(book);
115+
book.setCopies(book.getCopies() - 1);
116+
System.out.println("Libro prestado: " + book.getTitle() + " a " + user.getName());
117+
} else {
118+
System.out.println("No se pudo procesar el préstamo.");
119+
}
120+
}
121+
122+
public void returnBook(User user, Book book) {
123+
List<Book> borrowed = borrowedBooks.get(user);
124+
if (borrowed != null && borrowed.contains(book)) {
125+
borrowed.remove(book);
126+
book.setCopies(book.getCopies() + 1);
127+
System.out.println("Libro devuelto: " + book.getTitle());
128+
} else {
129+
System.out.println("No se pudo devolver el libro.");
130+
}
131+
}
132+
}
133+
14134
/****************************** Ejercicio adicional(Sin srp) ******************************/
15135
public static void additionalExerciseNoSrp(){
16136
Library library = new Library();

0 commit comments

Comments
 (0)