Universidad de las Fuerzas Armadas - ESPE
Departamento de Ciencias de la Computación
Carrera de Ingeniería de Software
Ingeniería de Requisitos - NRC:2419
Tema: Área y perímetro de figuras geométricas.
Estudiante:
Chavez Enrique
Profesor: Ing. Dario Javier Morales Caiza
Link Git: kechavez07/Tarea1Grafica
1. Introducción
Este proyecto consiste en el desarrollo de una aplicación de escritorio utilizando C# con Windows Forms
(.NET Framework), cuyo objetivo es calcular el área y perímetro de diferentes figuras geométricas
planas. La aplicación permite ingresar dimensiones como base, altura, lados o diagonales, y devuelve los
resultados de forma inmediata y validada.
2. Objetivos
•
Desarrollar una aplicación con interfaz gráfica amigable para el usuario.
•
Aplicar principios de programación orientada a objetos (POO) en la organización del código.
•
Implementar validaciones para evitar entradas inválidas o vacías.
•
Calcular área y perímetro para figuras como: rectángulo, rombo, elipse, óvalo, trapezoide,
octágono, eneágono, etc.
3. Requisitos Técnicos
Requisito
Detalle
Lenguaje
C#
Entorno
.NET Framework (Windows Forms)
IDE
Visual Studio
Paradigma
Programación orientada a objetos (POO)
Validación
Evita valores negativos o campos vacíos
4. Estructura del Proyecto
Cada figura está representada por una clase propia que hereda de una clase base Figura. Esta clase
base define los métodos CalcularArea() y CalcularPerimetro() como abstract, lo que obliga a
implementarlos en cada figura.
Ejemplo de clase Deltoide:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1.Figuras
{
public class Deltoide : Figura
{
public double DiagonalMayor { get; set; }
public double DiagonalMenor { get; set; }
public double LadoMayor { get; set; }
public double LadoMenor { get; set; }
public Deltoide()
{
DiagonalMayor = 0.0f;
DiagonalMenor = 0.0f;
LadoMayor = 0.0f;
LadoMenor = 0.0f;
Area = 0.0f;
Perimetro = 0.0f;
}
public override double CalcularArea()
{
Area = Math.Round((DiagonalMayor * DiagonalMenor) / 2);
return Area;
}
public override double CalcularPerimetro()
{
Perimetro = Math.Round(2 * LadoMayor + 2 * LadoMenor);
return Perimetro;
}
public void LeerData(TextBox txtDiagonalMayor, TextBox txtDiagonalMenor, TextBox txtLadoMayor,
TextBox txtLadoMenor)
{
try
{
DiagonalMayor = double.Parse(txtDiagonalMayor.Text);
DiagonalMenor = double.Parse(txtDiagonalMenor.Text);
LadoMayor = double.Parse(txtLadoMayor.Text);
LadoMenor = double.Parse(txtLadoMenor.Text);
if (DiagonalMayor <= 0 || DiagonalMenor <= 0 || LadoMayor <= 0 || LadoMenor <= 0)
{
throw new ArgumentException("Todos los valores deben ser positivos.");
}
}
catch (FormatException)
{
MessageBox.Show("Debe ingresar valores numéricos.", "Error de formato");
}
catch (ArgumentException ex)
{
MessageBox.Show(ex.Message, "Valor no permitido");
}
catch
{
MessageBox.Show("Ingreso no válido...", "Mensaje de error");
}
}
public void ImprimirData(TextBox txtArea, TextBox txtPerimetro)
{
txtArea.Text = Area.ToString();
txtPerimetro.Text = Perimetro.ToString();
}
}
}
5. Interfaz Gráfica del Usuario (GUI)
Cada figura cuenta con su propio formulario (FrmRectangulo, FrmRombo, FrmElipse, etc.) que incluye:
Campos de entrada:
•
TextBox para base, altura, lados, diagonales, etc.
Ejemplo:
Botón de cálculo:
•
Un botón btnCalcular que al presionar ejecuta los métodos de la figura.
Ejemplo de evento asociado:
Campos de salida:
•
TextBox o Label para mostrar Área y Perímetro calculados.
6. Validación de Entradas
Cada clase tiene un método LeerData() que valida que los campos ingresados:
•
No estén vacíos
•
Sean numéricos
•
Sean mayores que 0
Ejemplo de validación en LeerData:
7. Control de Versiones con Git
El repositorio se ha gestionado utilizando git, con exclusión de archivos generados automáticamente
como .vs, bin, obj, etc., mediante un archivo .gitignore configurado correctamente.
Fragmento del .gitignore:
8. Conclusiones
•
La aplicación cumple con los objetivos funcionales.
•
La separación en clases facilita el mantenimiento y ampliación del sistema.
•
Se garantiza una buena experiencia de usuario mediante validaciones y organización visual.
9. Recomendaciones
•
Agregar funciones para guardar/exportar resultados.
•
Implementar una vista resumen con historial de cálculos.