Con el código visto en clase implementar:
https://www.pitodoble.com/2009/10/01/piedra-papel-tijera-lagarto-spock-garrafa-edans/
Con el código visto en clase implementar:
https://www.pitodoble.com/2009/10/01/piedra-papel-tijera-lagarto-spock-garrafa-edans/
Vamos a crear una serie de clases para figuras geométricas.
La clase madre será abstracta y tendrá una propiedad Nombre y un método dibujar abstracto.
De ahí derivaremos una clase para figuras de 2 dimensiones también abstracta que incorpora el método area que nos devuelve un double.
Y de ahí una clase para figuras de 3 dimensiones también abstarcta que incorpore el método volumen.
Por último crearemos las clases cuadrado, circulo, cubo y esfera derivándolas de sus clases más adecuadas e implementando los métodos requeridos.
Una vez hecho esto, creamos otro proyecto para hacerlo mediante interfaces.
class
o struct
puede acceder al tipo o miembro.class
, o bien de una class
derivada de esa class
, puede acceder al tipo o miembro.internal
se puede tener acceso a tipos o miembros desde el código que forma parte de la misma compilación.class
derivada de otro ensamblado, puede acceder al tipo o miembro.class
que se declaran dentro de su ensamblado contenedor.Una interfaz define un contrato. Cualquier class
o struct
que implemente ese contrato debe proporcionar una implementación de los miembros definidos en la interfaz. A partir de C# 8.0, una interfaz puede definir una implementación predeterminada de miembros. También puede definir miembros static
para proporcionar una única implementación de funcionalidad común.
https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/interface
https://geeks.ms/etomas/2010/07/07/c-bsico-interfaces/
https://www.tutorialsteacher.com/csharp/csharp-interface
Los 5 principios SOLID de diseño de aplicaciones de software son:
Entre los objetivos de tener en cuenta estos 5 principios a la hora de escribir código encontramos:
En definitiva, desarrollar un software de calidad.
https://profile.es/blog/principios-solid-desarrollo-software-calidad/
https://docs.microsoft.com/es-es/dotnet/csharp/fundamentals/tutorials/inheritance
La herencia es uno de los atributos fundamentales de la programación orientada a objetos. Permite definir una clase secundaria que reutiliza (hereda), amplía o modifica el comportamiento de una clase primaria. La clase cuyos miembros son heredados se conoce como clase base. La clase que hereda los miembros de la clase base se conoce como clase derivada.
C# y .NET solo admiten herencia única. Es decir, una clase solo puede heredar de una clase única. Sin embargo, la herencia es transitiva, lo que le permite definir una jerarquía de herencia para un conjunto de tipos. En otras palabras, el tipo D
puede heredar del tipo C
, que hereda del tipo B
, que hereda del tipo de clase base A
. Dado que la herencia es transitiva, los miembros de tipo A
están disponibles para el tipo D
.
https://www.programiz.com/csharp-programming/inheritance
https://docs.microsoft.com/es-es/dotnet/csharp/fundamentals/object-oriented/polymorphism
El polimorfismo suele considerarse el tercer pilar de la programación orientada a objetos, después de la encapsulación y la herencia. Polimorfismo es una palabra griega que significa “con muchas formas” y tiene dos aspectos diferentes:
Vamos a crear una clase Alumno con las propiedades Nombre y Nota. En el constructor pedimos el nombre. La nota no puede ser menor que 1 ni mayor que 10, menos al inicio que vale 0 (su valor por defecto).
En el toString mostramos el nombre y la nota sólo si es distinto de 0.
Si queremos obtener la nota antes de ponerla nos debe saltar una excepción.
Sobreescrimos el Equals y el operador == y != que nos devolverá cierto si el nombre es el mismo independientemente de la nota.
Crearemos también una clase Aula que tiene un nombre y una capacidad. Almacena un array de alumnos con tamaño máximo de esa capacidad. Nombre y capacidad se piden en el constructor. En el constructor se creará el array con el tamaño que nos pongan.
Creamos un método AddAlumno que nos añade el alumno que nos pasan al array.
Sobrecargamos el método para que pasándole una cadena son cree un alumno y lo añada al array.
Se añaden en la primera posición libre que haya.
Si ya hay un alumno con ese nombre se lanza una excepción.
Si el aula ya está llena se lanza una excepción.
Creamos un método OutAlumno que pasándole un string nos elimina el alumno que se llame así. Si el alumno no está no elimina nada.
Creamos un método Destroy que nos elimina todos los alumnos de la clase.
Creamos un método Contains que pasándole un String nos devuelve true si hay un alumno con ese nombre.
Creamos un método Puntua al que se le pasa el nombre de un alumno y su nota. Si el alumno no existe no hace nada.
Método Media que nos devuelve la media de notas de la clase de los Alumnos que tengan nota.
Vamos a utilizar la clase de los pesos y vamos a sobreescribir el ToString() para que nos muestre el nombre completo, la altura, el peso y el IMC
Vamos a sobreescribir el equals para que dos objetos sean iguales si tienen el mismo IMC
Y el operador == y != con la misma condición
También si lo comparamos con un decimal comparando el IMC