Skip to content

Commit 0be3022

Browse files
committed
doc: complete spanish README.md
1 parent eb9b93e commit 0be3022

File tree

2 files changed

+363
-2
lines changed

2 files changed

+363
-2
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<h1 align="center">
2-
Java Practical Work [2025] [WIP] <!-- TODO -->
2+
Java Practical Work [2025]
33
</h1>
44

55
<p align="center">

docs/translations/es/README.md

Lines changed: 362 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,362 @@
1-
<!-- TODO -->
1+
<h1 align="center">
2+
Trabajo Práctico de Java [2025]
3+
</h1>
4+
5+
<p align="center">
6+
<strong>Repositorio para el trabajo práctico del curso de Paradigmas de Programación</strong>
7+
<br>
8+
<strong>- <a href="https://www.unlam.edu.ar/">UNLaM</a> (Universidad Nacional de La Matanza) -</strong>
9+
</p>
10+
11+
<p align="center">
12+
<a href="#summary">Resumen</a> •
13+
<a href="#features">Características</a> •
14+
<a href="#installation">Instalación</a> •
15+
<a href="#installation">Diagramas</a> •
16+
<a href="#team-workflow">Flujo de trabajo en equipo</a> •
17+
<a href="#development-team">Equipo de desarrollo</a>
18+
<br>
19+
<a href="#additional-material">Material adicional</a> •
20+
<a href="#license">Licencia</a> •
21+
<a href="#acknowledgments">Agradecimientos</a>
22+
</p>
23+
24+
<p align="center">
25+
<a href="../../../README.md">[ Versión en inglés ]</a>
26+
</p>
27+
28+
<p align="center">
29+
<a href="#"> <!-- TODO -->
30+
<img src="../../assets/preview.png" width="800" alt="Vista previa">
31+
</a>
32+
</p>
33+
34+
<p align="center">
35+
<a href="#" target="_blank">(video de demostración)</a> <!-- TODO -->
36+
</p>
37+
38+
## Resumen
39+
40+
Este repositorio contiene el trabajo práctico para el curso de Paradigmas de Programación en la [Universidad Nacional de La Matanza (UNLaM)](https://www.unlam.edu.ar/). El trabajo práctico consiste en realizar un sistema de crafteo en Java y probarlo con [JUnit 5](https://junit.org/junit5/).
41+
42+
## Características
43+
44+
- Almacenamiento local de registros
45+
- Colecciones
46+
- Commits siguiendo el estándar [Conventional Commits](https://www.conventionalcommits.org/es/v1.0.0/)
47+
- Control de entradas mediante validaciones
48+
- Convenciones y estándares de código
49+
- Despliegue de versiones
50+
- Documentación del código usando la sintaxis de [JavaDoc](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javadoc.html)
51+
- Lectura e interpretación de archivos
52+
- Planificación de arquitectura
53+
- Planificación del flujo de trabajo en equipo (ramas, etiquetas y versiones)
54+
- Pruebas E2E con [JUnit 5](https://junit.org/junit5/)
55+
- Pruebas unitarias con [JUnit 5](https://junit.org/junit5/)
56+
57+
## Instalación
58+
59+
1. Clona el repositorio en tu dispositivo.
60+
2. Instala [Java](https://www.java.com/en/download/) y [Prolog](https://www.swi-prolog.org/download/stable) (marca la opción `Add swipl to the system PATH` durante la instalación).
61+
3. Instala [Eclipse IDE for Java developers](https://www.eclipse.org/downloads/packages/).
62+
4. Abre el repositorio clonado con Eclipse IDE.
63+
5. Luego, haz clic derecho sobre el archivo [Main.java](../../../src/Main.java) y selecciona `Run As` -> `Java Application`.
64+
6. Eso es todo, disfruta del sistema de crafteo a través de la interacción con la consola.
65+
66+
<details>
67+
<summary>¿Cómo puedo ejecutar todas las pruebas JUnit?</summary>
68+
69+
Si deseas ejecutar todas las pruebas JUnit, debes hacer clic derecho sobre el proyecto dentro del `Package explorer` de Eclipse IDE, y seleccionar `Run as` -> `JUnit Test`. Eso es todo, Eclipse IDE comenzará a ejecutar todas las pruebas.
70+
71+
</details>
72+
73+
<details>
74+
<summary>¿Cómo puedo cambiar el inventario?</summary>
75+
76+
Para cambiar los ítems del inventario, debes actualizar el archivo [inventory.json](../../../src/assets/inventory.json) con los ítems deseados.
77+
78+
> Es importante seguir la misma estructura que los originales, y estos deben estar definidos dentro del archivo [recipes.json](../../../src/assets/recipes.json).
79+
80+
</details>
81+
82+
<details>
83+
<summary>¿Cómo puedo cambiar la lista de ítems disponibles para craftear?</summary>
84+
85+
Para cambiar la lista de ítems disponibles para craftear, debes actualizar el archivo [recipes.json](../../../src/assets/recipes.json) con los nuevos ítems crafteables.
86+
87+
> Es importante seguir la misma estructura que los originales.
88+
89+
</details>
90+
91+
### Problemas conocidos
92+
93+
| Problema | Solución |
94+
| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
95+
| Prolog no puede encontrar recursos del sistema | _En Eclipse IDE, ve a la pestaña `File` y selecciona la opción `Import`. Luego, debes buscar `Launch configurations`, seleccionarla y presionar `Next`. Después, busca el directorio del proyecto, selecciona los archivos `Java-Practical-Work-2025`, `Main`, y `PrologServiceTests` y marca la opción `Overwrite existing launch configurations without warning.`. Finalmente, presiona `Finish` para cargar tu instancia local de Prolog. Si esto no funcionó, revisa el valor de cada variable de entorno dentro de la pestaña `Environment` en cada configuración de ejecución de `Java-Practical-Work-2025`, `Main`, y `PrologServiceTests`, ya que deben apuntar a tu directorio local de Prolog._ |
96+
97+
## Diagramas
98+
99+
<details>
100+
<summary>Diagrama de clases</summary>
101+
102+
```mermaid
103+
---
104+
config:
105+
class:
106+
hideEmptyMembersBox: true
107+
108+
theme: redux
109+
look: neo
110+
layout: elk
111+
---
112+
classDiagram
113+
direction TB
114+
115+
class Menu {
116+
-Scanner scanner
117+
-Inventory inventory
118+
-ItemsRepository itemsRepository
119+
-Item itemToCraft
120+
-int quantityToCraft
121+
-CraftingSystem craftingSystem
122+
-PrologService prologService
123+
124+
-void setItemToCraft()
125+
+void init()
126+
-int requestOperation(String item, int quantity)
127+
-int requestBranch()
128+
-int requestRecipeToCraft()
129+
-String requestPrologPath()
130+
-String requestInventorySavePath()
131+
-void showCraftableItemsByProlog()
132+
-void showIngredientsCollection(Collection~List~Ingredient~~ collection, Function~Integer, String~ onEmptyList)
133+
}
134+
135+
Menu "1" --o "1" Inventory : Has a reference to
136+
Menu "1" --o "1" ItemsRepository : Has a reference to
137+
Menu "1" --o "1" Item : Has
138+
Menu "1" --o "1" CraftingSystem : Has
139+
Menu "1" --o "1" PrologService : Has a reference to
140+
141+
class ItemsRepository {
142+
-HashMap~String, Item~ items
143+
144+
+HashMap~String, Item~ getItems()
145+
+HashMap~String, Item~ getCraftableItems()
146+
+Item getItem(String name)
147+
+static ItemsRepository loadFromJSON(String path)
148+
+String toString(String itemMarkers[], int lPadding)
149+
}
150+
151+
class PrologService {
152+
-String baseItemFactName
153+
-String ingredientFactName
154+
-String itemInInventoryFactName
155+
-ItemsRepository itemsRepository
156+
-Inventory inventory
157+
158+
+HashMap~Item, Integer~ craftableItems()
159+
+void toFile(String path)
160+
-void toFile(FileWriter fWriter)
161+
-String toProlog(ItemsRepository itemsRepository)
162+
-String toProlog(Inventory inventory)
163+
-String utilityRules()
164+
}
165+
166+
class Item {
167+
-String name
168+
-List~Recipe~ recipes
169+
170+
+String getName()
171+
+List~Recipe~ getRecipes()
172+
+boolean isBase()
173+
}
174+
175+
class Recipe {
176+
-Item craftingTable
177+
-List~Ingredient~ ingredients
178+
-int timeToCraftInMilliseconds
179+
-int quantityToCraft
180+
181+
+Item getCraftingTable()
182+
+List~Item~ getIngredients()
183+
+int getTimeToCraftInMilliseconds()
184+
+int getQuantityToCraft()
185+
+List~Item~ getBaseIngredients()
186+
+boolean needsCraftingTable()
187+
+void setCraftingTable(Item craftingTable)
188+
+void setIngredients(List~Ingredient~ ingredients)
189+
}
190+
191+
class CraftedItem {
192+
-ZonedDateTime date
193+
-Recipe usedRecipe
194+
-int quantityCrafted
195+
-int craftingTimeInMilliseconds
196+
197+
+ZonedDateTime getDate()
198+
+Recipe getUsedRecipe()
199+
+int getQuantityCrafted()
200+
+int getCraftingTimeInMilliseconds()
201+
}
202+
203+
class Inventory {
204+
-HashMap~Item, Integer~ items
205+
206+
+HashMap~Item, Integer~ getItems()
207+
+Item getItemQuantity(Item item)
208+
+void addItem(Item item, int quantity)
209+
+void removeItem(Item item, int quantity)
210+
+void storeOnJSON(String path)
211+
+static Inventory loadFromJSON(String path)
212+
+String toString(String itemMarker, int lPadding)
213+
}
214+
215+
class Ingredient {
216+
-Item item
217+
-int quantity
218+
219+
+Item getItem()
220+
+int getQuantity()
221+
+String toString(String itemMarker, int lPadding)
222+
}
223+
224+
class CraftingSystem {
225+
-Item itemToCraft
226+
-int quantityToCraft
227+
-Inventory inventory
228+
-CraftingHistory history
229+
230+
+List~CraftedItem~ getCraftedItems()
231+
+int getCraftableUnits()
232+
-int getCraftableUnits(Recipe recipe)
233+
+HashMap~Recipe, List~Ingredient~~ getMissingIngredients()
234+
+HashMap~Recipe, List~Ingredient~~ getMissingBaseIngredients(int branch)
235+
-HashMap~Recipe, List~Ingredient~~ getMissingIngredients(HashMap~Recipe, List~Ingredient~~ recipes)
236+
+HashMap~Recipe, List~Ingredient~~ getRequiredIngredients()
237+
+HashMap~Recipe, List~Ingredient~~ getRequiredBaseIngredients(int branch)
238+
-List~Ingredient~ getBaseIngredientsRecursive(Recipe recipe, int totalToCraft, int branch, Set~Item~ processedCraftingTables)
239+
+boolean canCraft()
240+
+void setItemToCraft(Item item, int quantity)
241+
+CraftedItem craftItem(int recipe)
242+
+CraftedItem undoLastCraft()
243+
}
244+
245+
class CraftingHistory {
246+
-List~CraftedItem~ items
247+
248+
+List~CraftedItem~ getItems()
249+
+CraftedItem getLastItem()
250+
+void addItem(Item item, Recipe usedRecipe)
251+
+CraftedItem removeLastItem()
252+
}
253+
254+
ItemsRepository "1" --o "0...*" Item : Has
255+
256+
PrologService "1" --o "1" Inventory : Has a reference to
257+
PrologService "1" --o "1" ItemsRepository : Has a reference to
258+
259+
Item "1" --o "0...*" Recipe : Has
260+
261+
Recipe "1" --o "1...*" Ingredient : Has
262+
Recipe "1" --o "0...1" Item : Has a reference to
263+
264+
CraftedItem --|> Item : Inherits from
265+
266+
Inventory "1" --o "0...*" Item : Has references to
267+
268+
CraftingSystem "1*" --o "0..." Item : Has references to
269+
CraftingSystem "1" --o "1" Inventory : Has a reference to
270+
CraftingSystem "1" --* "1" CraftingHistory : Has
271+
272+
CraftingHistory "1" --o "0...*" CraftedItem : Has
273+
```
274+
275+
</details>
276+
277+
> [!NOTE]
278+
> Los diagramas fueron desarrollados desde cero como parte de los informes preliminares del proyecto.
279+
280+
## Flujo de trabajo en equipo
281+
282+
```mermaid
283+
---
284+
config:
285+
logLevel: debug
286+
theme: base
287+
gitGraph:
288+
showBranches: true
289+
showCommitLabel: true
290+
mainBranchName: Master
291+
parallelCommits: true
292+
---
293+
gitGraph:
294+
commit
295+
commit tag: "v0.0.1"
296+
branch "Aguilera Emanuel"
297+
commit
298+
commit
299+
checkout Master
300+
branch "De Marco Juan"
301+
commit
302+
commit
303+
checkout Master
304+
branch "Hoz Lucas"
305+
commit
306+
commit
307+
checkout Master
308+
branch "Rueda Olarte Joel"
309+
commit
310+
commit
311+
checkout Master
312+
branch "Maudet Alejandro"
313+
commit
314+
commit
315+
checkout Master
316+
branch "Monges Omar"
317+
commit
318+
commit
319+
checkout Master
320+
merge "De Marco Juan"
321+
merge "Aguilera Emanuel"
322+
merge "Rueda Olarte Joel"
323+
merge "Maudet Alejandro"
324+
merge "Hoz Lucas"
325+
merge "Monges Omar" tag: "v1.0.0"
326+
```
327+
328+
### Etiquetas
329+
330+
- `vMAJOR.MINOR.PATCH`: Esta etiqueta indica una [versión](https://github.com/hozlucas28/Java-Practical-Work-2025/releases) del trabajo práctico siguiendo [Semantic Versioning](https://semver.org/), y solo estará presente en los commits de la rama `Master`.
331+
332+
### Ramas
333+
334+
- `Master`: Rama que contiene las versiones de desarrollo del trabajo práctico, donde los miembros del equipo introducirán nuevos cambios (commits).
335+
336+
> [!IMPORTANT]
337+
> Las versiones estables solo están disponibles como [releases](https://github.com/hozlucas28/Java-Practical-Work-2025/releases).
338+
339+
> [!NOTE]
340+
> Las demás ramas son ficticias y representan las contribuciones individuales de cada miembro a la rama `Master`.
341+
342+
## Equipo de desarrollo
343+
344+
- [Aguilera Emanuel](https://github.com/EmaaAg)
345+
- [Hoz Lucas](https://github.com/hozlucas28)
346+
- [De Marco Juan](https://github.com/juDemarco)
347+
- [Maudet Alejandro](https://github.com/Mabbdet)
348+
- [Monges Omar](https://github.com/Omar-Monges)
349+
- [Rueda Olarte Joel](https://github.com/joelalexisrueda)
350+
351+
## Material adicional
352+
353+
- [Informe del trabajo práctico](../../assets/report.pdf)
354+
- [Requerimientos del trabajo práctico](./requirements.md)
355+
356+
## Licencia
357+
358+
Este repositorio está bajo la [Licencia MIT](./LICENSE). Para más información sobre lo que está permitido con el contenido de este repositorio, visita [choosealicense.com](https://choosealicense.com/licenses/).
359+
360+
## Agradecimientos
361+
362+
Queremos agradecer a los docentes del curso de Paradigmas de Programación de la [UNLaM](https://www.unlam.edu.ar/) por su apoyo y guía.

0 commit comments

Comments
 (0)