Está en la página 1de 22

“ManiMatte”

Integrantes: Sofía Medina, Mario Laurie


Curso : Programación orientada a objetos
Profesor : Samuel Sepúlveda Cuevas
Índice
Introducción........................................................................................................................................3
Contexto del Problema........................................................................................................................4
Desarrollo............................................................................................................................................5
Modelo UML.....................................................................................................................................14
Definición y diseño de las GUIs.........................................................................................................15
Links de GitHub y ejecucion..............................................................................................................15
Comentarios finales..........................................................................................................................16
Bibliografía........................................................................................................................................17
Introducción
En este informe se presentará el avance 2 de nuestro proyecto semestral
del curso de POO, “ManiMatte”, que abordará la temática del problema, la
estructuración mediante apoyo de Visual Paradigm, la gestión de clases,
incluyendo atributos y métodos, el cambio de implementación y diseño
desde el avance 1, además del diseño de las guis apoyándonos en Figma.
Contexto del Problema
La pandemia sanitaria ha tenido un impacto significativo en las
microempresas centros de dedicadas a la estética y la manicura, lo que ha
generado una considerable disminución en sus ingresos. De acuerdo con la
información emitida por CNN Chile en el año 2021, ciertos estética y
manicura experimentaron una disminución de hasta un 72% en sus ingresos.
Esta situación se ha agravado debido a la carencia de personal suficiente
para atender la demanda de los clientes, especialmente durante las horas
punta.

La limitación en la capacidad de atención y la falta de eficiencia en la gestión


del tiempo se han convertido en desafíos críticos para estas microempresas.
Se requiere una solución que permita optimizar la forma en que se gestionan
las configuraciones previas para los servicios de manicura, mejorando así la
eficiencia operativa y maximizando el número de clientes atendidos sin
necesidad de contratar personal adicional.
Desarrollo
 Consideraciones y correcciones del informe 01
A partir del informe 1 tenemos 3 inclusiones que hacer respecto al
desarrollo de nuestra solución, que es el cambio del diseño de la Gui,
esto tomando en cuenta los comentarios hechos de la respectiva
presentación del avance 1, haciendo que esta sea mas amigable al
usuario, conteniendo menos información en ventana y haciendo
ventanas adicionales para la mayor distribución de la información.

Como 2da inclusión, incluimos el uso de una variable en la cotización


que representa el tiempo estimado en realizarse el servicio, esto
ayudaría tanto al usuario, para saber un estimado de cuanto tarda el
servicio, como para el gerente/dueño, para tener un aproximado de
cuantas personas puede atender en el día y así poder gestionar
distintos aspectos como agendar citas o similares, aunque no
gestionaremos esas tareas en nuestra solución.

Por último, en la inclusión de datos, se tomó en la solución la


implementación de precios dinámicos en función de un txt con los
precios de cada producto, cosa que en el desarrollo final no se
contempla, por lo que los valores son estáticos.
 Diferencias entre la planificación inicial y el resultado
final
En las planificaciones se vio un cambio significativo ya que
sucedieron 2 eventos importantes a tener presentes.

-Por una parte, posterior al avance 1, uno de los integrantes se retiró


del grupo, esto por diferencias en las metodologías de trabajo, cosa
que pensamos en un inicio que no se presentaría, pero que termino
siendo crítico, por esto, las cargas de trabajo para los 2 integrantes
restantes se incrementaron, pero esto no implico una reducción en las
funcionalidades de la previsión de la solución

-además se contempla la paralización de estudiantes y sus


correspondientes afecciones en las fechas de avance 2 y el
seguimiento de los contenidos y su ejercitación, que, aunque no
fueron críticos para el proyecto, generaron cambios en la planificación
del desarrollo.
 Descripción de las clases del proyecto
o Clase Main
Esta clase solo ejecuta un método llamado lanzar.
-Lanzar es un método publico y de tipo void que únicamente
llama al método lanzarManicura de la clase Servicio para iniciar
el programa.

o Clase Servicio
Esta clase no contiene atributos, solo posee métodos estáticos,
los cuales son todos públicos, solo posee métodos para hacer
el ingreso de elecciones de configuración de la cotización:

- lanzarManicura (): Este método inicia el programa principal


para solicitar las opciones al usuario. Muestra un menú de
opciones y realiza diferentes acciones según la elección del
usuario. Puede solicitar la cantidad de colores, el largo, el
material, los diseños, las decoraciones, calcular el valor
estimado, calcular el tiempo estimado, guardar la cotización en
el archivo y salir del programa.

- eleccionMaterial (): Este método muestra al usuario las


opciones de materiales y le solicita que ingrese el número
correspondiente a su elección. Luego, valida la elección y
retorna el valor de tipo int ingresado.
- eleccionDiseño (): Este método permite al usuario
seleccionar la cantidad de diseños simples y sofisticados.
Verifica que las cantidades sean válidas y retorna un arreglo de
tipo int con las elecciones realizadas.

- eleccionLargo (): Este método muestra al usuario las


opciones de largo de uña y le solicita que ingrese el número
correspondiente a su elección. Luego, valida la elección y
retorna el valor de tipo int ingresado.

- eleccionDecoracion (): Este método permite al usuario


seleccionar la cantidad de cristales y accesorios 3D para las
decoraciones. Verifica que las cantidades sean válidas y retorna
un arreglo de tipo int con las elecciones realizadas.

- eleccionColores (): Este método solicita al usuario que


ingrese la cantidad de colores que desea. Verifica que la
cantidad sea válida y la retorna como int.
- guardarCotizacion (CotizacionManicura cotización):
Este método llama al método “guardarCotizacion” de la clase
"ManejoArchivo" para guardar la cotización en el archivo de
cotizaciones, en si la clase no sabe realizar la petición, sino que
llama al método de la clase que, si sabe realizarla, retorna
simplemente texto para identificar que se realizó correctamente
(void)

- opcionesMenu (): Este método muestra al usuario el menú de


opciones disponibles para el programa, solo son prints para el
usuario (void).

o Clase CotizacionManicura
La clase "CotizacionManicura" representa una cotización previa
de un servicio de manicura.

Los atributos son todos privados, con getter, setter y no


estáticos, son los siguientes:

- cantColores: Representa la cantidad de colores


seleccionados para la manicura, de tipo int.

-largo: Representa el largo de las uñas, de tipo int.

-material: Representa el material utilizado, de tipo int


-diseño: Un arreglo de enteros que representa la cantidad de
diseños seleccionados.

-decoracion: Un arreglo de enteros que representa la cantidad


de decoraciones seleccionadas.

-valorEstimado: Almacena el valor estimado de la cotización


del servicio de manicura en una variable de tipo int.

-tiempoEstimado: Almacena el tiempo estimado requerido


para realizar el servicio de manicura.

Además, esta clase tiene métodos privados, no estáticos y son


los siguientes:

- valorTotal (): Este método utiliza la clase "Calculo" para


sumar y devolver el int del valor total de la cotización hasta el
momento, considerando los valores de los atributos de la
instancia de la clase.

- iva (): Este método devuelve el valor de tipo int del impuesto al
valor agregado (IVA) aplicado al valor estimado de la cotización.
- tiempoTotal (): Este método utiliza la clase "Calculo" para
sumar y devolver el tiempo estimado total del servicio de
manicura como int, considerando los valores de los atributos de
la instancia de la clase.

-CotizacionManicura (): Este es el constructor de la clase que


inicializa los atributos con valores predeterminados.

o Clase ManejoArchivo
Esta clase se lleva todo el trabajo que conlleva tomar una
cotización ya hecha y desglosarla para crear una línea de texto
e ingresarla en un archivo txt.
Esta clase solo tiene un atributo privado y estático llamado
ruta, de tipo String.
Además, tiene métodos estáticos que son:

-crearLineaCotizacion (CotizacionManicura cotizacion):


Este método recibe un objeto de tipo CotizacionManicura y
genera una cadena de texto que representa una línea de
cotización con los datos de esta, retorna un String con la línea
de cotización generada, este método también es de tipo
privado.

- crearArchivo (): Este método crea un nuevo archivo de


cotizaciones en la ruta especificada. También le da a conocer al
usuario cuando crea un archivo mediante prints, es privado y de
tipo void.

-añadirCotizacionAlArchivo (String lineaCotizacion):


Este método recibe una línea de cotización como cadena de
texto y la agrega al archivo de cotizaciones. También
importamos BufferedWriter para escribir la línea en el archivo.
Si se produce un error, ya sea por algún problema con los
permisos o similares, muestra un mensaje al usuario, es un
método privado y de tipo void.

- validarExistenciaArchivo (): Este método verifica si el archivo


de cotizaciones existe en la ruta especificada. Es privado y
retorna un booleano para saber si este existe o no para saber si
el programa debe crear el archivo o simplemente acceder a
este.

- guardarCotizacion (CotizacionManicura cotizacion):


Este método hace todo el proceso que conlleva guardar la
cotizacion en el archivo, pasando por verificar la existencia del
archivo de cotizaciones. Si el archivo no existe, lo crea
llamando al método crearArchivo(). Luego, genera la línea de
cotización llamando al método crearLineaCotizacion() y la
añade al archivo llamando al método
añadirCotizacionAlArchivo(), este método es publico y es void,
ya que solo da a conocer por un print cuando está listo.
o Clase Util
Esta clase es de carácter estático y existe para tener métodos
útiles para el programa, no tiene atributos y además todos los
métodos son públicos, estos son:

-ingresarSoloEntero (): Este método solicita al usuario que


ingrese un número entero. Si el valor ingresado no es un
número entero, se muestra un mensaje de error y se solicita
nuevamente al usuario que ingrese un número válido. Retorna
el número entero (int) ingresado por el usuario.

- validarRango (int num, int min, int max): Este método


verifica si un número se encuentra dentro de un rango
específico. Recibe tres parámetros: el número a verificar (num),
el límite inferior del rango (min) y el límite superior del rango
(max), este intervalo incluye ambos límites. Retorna true si el
número se encuentra dentro del rango y false en caso contrario.

//cambiar nombre clase utils por útil y cambiar los métodos de


manejo archivos por privado casi todos.
Modelo UML
La solución diseñada contempla fue diseñada previamente en la herramienta
Visual Paradigm, la cual nos fue muy útil para plasmar visualmente el tipo de
diseño que queríamos implementar en nuestra solución, además de apoyarnos
con la generación de código, la cual nos dio una estructura básica de cómo está
estructurada, haciendo más fácil ir haciendo código en un entorno de trabajo con
más de una persona.
Definición y diseño de las GUIs
 Ventana 1
Al iniciar el programa se muestra la ventana 1, en donde el usuario elige el
largo y el material según lo entregado por cada lista respectivamente, y
define la cantidad de colores a través de un deslizador, habiendo hecho
esto, al clickear el botón “Siguiente” de la misma, esta se deja de ver y se
muestra la ventana 2.
 Ventana 2
En la segunda se puede precisar la cantidad de diseños según
corresponden a Simples o Sofisticados mediante 2 deslizadores, además
esta ventana contiene un botón “Volver” para hacer visible la primera
ventana y dejar de ver la segunda. Al igual que en la ventana 1 se tiene un
botón “Siguiente” para dejar de ver la ventana 2 y, en caso de que el usuario
realiza un ingreso de información no válida (más de 10 diseños en total), se
mostrará la ventana 6 (ventana emergente) con información pertinente al
caso y un botón “¡De acuerdo!” que permite volver a la ventana 2, o si no
hay inconvenientes se mostrará la ventana 3.
 Ventana 3
La tercera es muy similar a la segunda, sólo que en esta se define la
cantidad de Decoraciones según corresponden a 3D o Cristales, también
tiene un botón “Volver” para dejar de ver la ventana 3 y mostrar la segunda,
por último, tiene el botón “Siguiente” para dejar de ver la tercera ventana y,
en caso de que el usuario realiza un ingreso de información no válida (más
de 10 decoraciones en total), se mostrará la ventana 7 con información
pertinente al caso y un botón “De acuerdo!” que permite volver a la ventana
3, o si no hay inconvenientes se mostrará la ventana 4.
 Ventana 4
La ventana 4 permite visualizar las elecciones realizadas previamente junto
con el valor total y el tiempo estimado de duración del servicio, también tiene
el botón “Volver” para hacer visible la tercera ventana y dejar de ver la
cuarta. Como último elemento contiene un botón “Guardar y finalizar”
mediante el cual se deja de ver la ventana 4 y se muestra la ventana 5.
 Ventana 5
Esta última ventana le da aviso al usuario que se ha completado la
cotización y se tiene un botón “Ingresar una nueva cotización” que al ser
clickeado permite dejar de ver esta ventana y muestra la primera, iniciando
nuevamente este ciclo.
Definición de la gestión de datos
 Respecto a la gestión de datos de la que hace uso nuestra solución
podemos decir que esta esta basada en un archivo de texto txt, al cual
se le ingresa una configuración de cotizacion por cada línea, este
mismo esta diseñado para ser leído por un gerente y ser lo mas
entendible posible dentro de nuestras capacidades a la hora de
desarrollarlo, por lo que se compone por un identificador seguido de
su valor y al finalizar la línea esta acompañada de una doble barra
vertical “||”, esta ultima porque si no se tiene configurado el visor de
texto para mostrar las líneas sin cortes, puede perder legibilidad, pero
al añadir al finalizar la línea una doble barra, esta puede ser leída con
menor dificultad.

 Ejemplo:
Cantidad de colores: 3, Largo de la uña: Natural, Material: GelX, Decoraciones simples: 0,
Decoraciones sofisticadas: 0, Diseños en cristales: 2, Diseños 3D: 7, Tiempo estimado: 100
mins, Valor total: 25060.0 pesos ||

Links de GitHub y ejecución


Link de repositorio: https://github.com/Dyfog/avance2POO

Link video de ejecución: https://youtu.be/AayNXQyenlw

Comentarios finales
El desarrollo de este proyecto ha sido desafiante pero enriquecedor en
aprendizaje en practica y errores, pero la documentación y puesta a prueba
han sido aspectos claves a la hora de superar estos contratiempos, en si el
diseño a nivel de código o GUIs ha cambiado pero consideramos que esto
es para ofrecer una mejor experiencia y calidad de la solución, aun así
creemos que a nivel de GUI pueden seguir presentándose pequeños
cambios pero únicamente a nivel de ventanas emergentes, o detalles del
estilo, estamos ansiosos de poder seguir trabajando y ver el producto final,
además de poder comparar aspectos como planificación, ejecución, diseño y
funcionalidades planteadas al inicio y compararlas con el final del desarrollo,
y creemos que todo esto será una experiencia increíblemente enriquecedora
para nosotros y nuestro desarrollo como estudiantes y profesionales

Bibliografía
https://www.cnnchile.com/economia/requisitos-acceder-subsidio-reactivate-belleza_20210630/

También podría gustarte