Hola amigos bloggeros en esta entrada del blog vitacora de .Net voy a explicarles brevemente un proyecto que me haparecido interesante de explicar debido a que involucra sobrecarga y herencia, temas tocados en las anteriores entradasal blog este proyecto lo llamaremos cuadrilatero.cs, en primera instancia vamos a crear la parte gráfica de nuestro proyecto C# en un windows forms, en el vamos a incluir el rectangulo y el cuadrado como primeras figuras geométricas dentro de la clase cuadrilateros y a ellos vamos a calcularles el area y el perímetro.
En nuestro proyecto el usuario puede averiguar el perimetro y el area de un cuadrado y un rectangulo con tan solo darle los datos respectivos al programa.
Veamoslo en UML para entender el concepto de herencia y de método abstracto <<abstract>> en los métodos aplicados al proyeto:
Es interesante e importante saber que el perímetro de un cuadrilatero es la suma de sus lados de igual manera necesitamos saber que el area de nuestros dos cuadrilateros que vamos a trabajar "cuadrado y rectangulo" estan dadas por la base*altura y lado*lado, ya que existen mas cuadrilateros como rombo trapezio entre otros, no nos vamos a preucupar pues sabemos que estos tienen en comun que tienen 4 lados y que siempre la suma de sus lados va ser el perimetro, el area puede que varie un poco y para este método si vamos aplicarle unas variaciones dependiendo del cuadrilatero tratado en cuestión.
Para lograr lo anteriormente explicado del método "Area" debemos utilizar propiedades de abstracto y herencia, para las clases en C#. Para lograr esto debemos poner nuestra clase cuadrilatero ya no como publica sino como abstracta de igual manera cada uno de los lados de cada uno de los cuadrilateros debe ser definida como "protected".
abstract class Cuadrilatero
{
protected double lado1;
protected double lado2;
protected double lado3;
protected double lado4;
Hecho esto se debe crear un constructor, y de lo que se encarga el constructor es de almacenar el valor dado a cada uno de los lados, para que se vallan instanciando desde las clases hijas y de esta manera formar el perimetro de la figura geometrica de cuatro lados, de aqui viene la razon por la que en el proyecto yo utilizo linked labels para retornar el valor de salida una vez sumado los lados del cuadrilatero.
*/ Metodos de Cuadrilatero/*
*/ Calcular un perimetro = Sumar lados del cuadrilatero/*
public double calculePerimetro()
{
return lado1 + lado2 + lado3 + lado4;
}
*/ Calcular un perimetro = Sumar lados del cuadrilatero/*
public double calculePerimetro()
{
return lado1 + lado2 + lado3 + lado4;
}
Para el método "Area" como lo habiamos mencionado con anterioridad tenemos que usar la palabra abstract despues de hacerlo público, para que aplique a todos los cuadrilateros sean o no sean irregulares de esta forma nos queda de la siguiente manera:
*/ Calcular un área = Depende de la forma del cuadrilatero/*
*/ Por ello se usa como metodo abstracto, para dejarlo como base/*
public abstract double calculeArea();
Una vez generalizado el proyecto de esta manera, ya podemos empezar a trabajar con cada figura por separado aunque ahora si aplicando el concepto de herencia en c# . veamoslo con el cuadrado.
En c# se define la herencia de la siguiente manera: class Cuadrado : Cuadrilatero
Lo que debemos hacer a continuación es crear un constructor el cual hereda del constructor ya establecido del costructor cuadrilatero, pero este nuevo constructor va a heredar características del constructor cuadrilatero veamos como lo hacemos con el perímetro del cuadrado:
*/ Constructor heredado por cuadrilatero/*
public cuadrado(double lado_cua)
: perimetro(lado_cua, lado_cua, lado_cua, lado_cua)
{
}
public cuadrado(double lado_cua)
: perimetro(lado_cua, lado_cua, lado_cua, lado_cua)
{
}
Con esto tenemos hecho el perimetro de nuestro cuadrado, ahora para averiguar el area tenemos que utilizar la palabra de herencia "override" que sirve para heredar de la clase padre cuadrilatero entonces el Area será lado*lado.
public override double calculeArea()
{
return lado1 * lado2;
}
{
return lado1 * lado2;
}
Con el rectángulo ya es mas facil debido a que puede heredar las características de sus metodos constructores de cuadrado y cuadrilatero en este caso hereda directamente de cuadrado que ya a heredado de cuadrilatero
class Rectangulo : Cuadrado
{
Al heredar de cuadrado ya rectangulo puede calcular su area y perímetro porque se hace exactamente igual en los dos cuadrilateros en caso de una figura irregular como un rombo o un trapecio estas no podrian heredar todas sus características solamente las correspondientes al constructor del perimetro. Area sería un poco mas complejo.
Espero les halla sido de ayuda este proyecto-tutorial explicado paso a paso y en nuestra próxima entrada al blog espero hacerlo con las restantes cuadrilateros que se denominan de forma irregular, rombo trapezio, paralelogramo, trapezoide etc.
No hay comentarios.:
Publicar un comentario