Skip to content

hakki17/Lab02CVDS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lab02CVDS

29/01/2025

===== Integrantes =====

  • Alejandro Prieto
  • María Paula Sánchez Macías

LA HERRAMIENTA MAVEN

¿Cuál es su mayor utilidad?

Maven es una herramienta que maneja proyectos de construcción, asegurando que el proyecto esté en un estado consistente. Además, gestiona automáticamente las librerías necesarias para el desarrollo del proyecto, todo basado en el concepto de Project Object Model (POM).


Fases de Maven

  • Facilitar el proceso de construcción.
  • Producir una construcción de sistema uniforme.
  • Generar información de calidad sobre el proyecto.
  • Fomentar buenas prácticas de desarrollo.

Ciclo de vida de la construcción

  • Default
  • Clean
  • Site

¿Para qué sirven los Plugins?

Los plugins son herramientas que permiten extender la funcionalidad de Maven, cargando complementos que facilitan tareas como la compilación del código, la ejecución de pruebas, entre otras.


¿Qué es y para qué sirve el repositorio central de Maven?

Es un lugar de almacenamiento en la nube donde se guardan las librerías y dependencias que nuestro proyecto Java puede usar. Estas dependencias se definen en el archivo pom.xml, y Maven se encarga de descargarlas automáticamente al iniciar el proyecto. De esta manera, se evita la gestión manual de librerías, la búsqueda de actualizaciones y la necesidad de compartirlas entre desarrolladores.


EJERCICIO DE LAS FIGURAS

1. CREAR UN PROYECTO CON MAVEN

Para crear un archivo mvn escribimos en el terminal, el siguiente comando:
mvn archetype:generate -Dfilter=maven-archetype-quickstart
Ejecucion de ese comando en pantalla

Comando:
Comando que nos permite ver la estructura formada por el proyecto que acabamos de generar
tree /f
Como se veria tree en pantalla

2. AJUSTAR ALGUNAS CONFIGURACIONES EN EL PROYECTO

Realizamos el cambio y se ve asi:
Como se ve el cambio en el archivo pom.xml al cambiar la version del compilador

Como se ve el cambio en el archivo pom.xml al cambiar la version del compilador

3. COMPILAR Y EJECUTAR

Archivo de Java con el "Hello World"

codigo Java "HelloWorld"

Compilamos el codigo:

Muestra de lo que nos muestra el terminal
VER.2-build success

Ejecutamos el codigo:

Ejecución Hello Wolrd con mvn

Aca la explicacion sobre el objetivo del parametro package:

  • Objetivo: El comando "package" sirve para crear un archivo ejecutable de un proyecto que puedas compartir o ejecutar directamente. Entre sus beneficios esta que no requiere instalación en el repositorio local, verifica que el proyecto se construye correctamente y crea un archivo distribuible

  • clean: Elimina la carpeta target y archivos compilados

  • compile: Compila el código fuente

  • test: Ejecuta las pruebas unitarias

  • install: Instala el paquete en el repositorio local

  • deploy: Copia el paquete al repositorio remoto

¿Cómo enviar parámetros al plugin "exec"?

mvn exec:java -Dexec.args="tuParametro" Ej:
mvn exec:java -Dexec.args="Alejo Y Mapu"

Configuración y ejecución en JAVA con argumentos

Se configura el Java para que reciba argumentos y produzca el mensaje dependiendo de su entrada
conf JAVA-args

Se ejecuta
Ejecución JAVA-args

Ejecutar la clase con su nombre y apellido como parámetro. ¿Qué sucedió?

Solo recibe el primer parámetro no el segundo.

Saludo compuesto

Codigo de JAVA

conf JAVA-nombre compuesto

Resultado que nos dió al ejecutar el código

ej JAVA-nombre compuesto


4. HACER EL ESQUELETO DE LA APLICACIÓN

Se crea tanto el paquete edu.eci.cvds.patterns.shapes como el paquete edu.eci.cvds.patterns.shapes.concrete

Creamos una interfaz llamada Shape.java en el directorio src/main/java/edu/eci/cvds/patterns/shapes

Creacion Shapes

Creamos una enumeración llamada RegularShapeType.java en el mismo directorio de antes

Regular SHapes

  • 1. Triangle class
  • 2. Quadrilateral class
  • 3. Pentagon class
  • 4. Hexagon class

Creacion clases

¿Cuál fábrica hiciste?

Utilicé el patrón Abstract Factory para crear una fábrica que, en el futuro, podamos modificar fácilmente en caso de ser necesario. Esto se debe a que es en este punto donde se crean las instancias de las clases "Triangle", "Pentagon", "Hexagon" y "Quadrilateral". De este modo, se facilita la modificación o adición de nuevas figuras geométricas en el futuro.

¿Cuál es mejor?

En nuestro caso, consideramos que la mejor opción es el patrón Abstract Factory, ya que nos permite cambiar fácilmente esta fábrica en el futuro por otra que genere nuevas figuras o incluso otro tipo de figuras (por ejemplo, figuras 3D). Esto facilita el mantenimiento y la expansión, ya que solo sería necesario modificar la fábrica en lugar de crear fábricas separadas para cada tipo de objeto, como lo seria con el metodo factory.

Shape Factory

5. EJECUCIONES

1. Sin parametros

Resultado

2. Parámetro: Qwerty

Resultado

3. Parámetro: Pentagon

Resultado

4. Parámetro: Hexagon

Resultado

directorio

dir 1

dir 2

dir 3

¿Cuál(es) de las anteriores instrucciones se ejecutan y funcionan correctamente y por qué?

Todas las funciones entregan un valor o una respuesta del programa dependiendo del argumento de entrada. En este caso, la única que da la respuesta "correcta" es Hexagon, ya que nuestra clase numeradora, ReguarShapeType, proporciona los tipos de objetos. Cuando no tenemos otros objetos disponibles y la fábrica devuelve null si el tipo no "existe", el resultado indica que la respuesta no es correcta. El caso de Pentagon fue debido a un error de mayúsculas, ya que la "p" estaba en minúsculas.

6. QUÉ ES EL GIT IGNORE

El archivo .gitignore se utiliza para configurar qué carpetas o archivos, identificados por su extensión (como .jar) o por su nombre, deben ser ignorados por Git. Esto ayuda a evitar que el repositorio se llene de archivos innecesarios o "basura" que no deberían formar parte del repositorio.

Laboratorio 02 Terminado

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages