viernes, 29 de mayo de 2020

Sobrecarga, Herencia, Sobreescritura y Polimorfismo. |POO|



 Microclase sobre Programación Orientada a Objetos 

Temas a tratar: 
  • Sobrecarga
  • Herencia
  • Sobreescritura
  • Polimorfismo 
Sobrecarga


La sobrecarga de métodos es la creación de varios métodos con el mismo nombre pero con diferente lista de tipos de parámetros. Java utiliza el mismo número y tipo de parámetros para seleccionar cuál definición de método ejecutar.

La sobrecarga de constructores, en cambio, es cuando en una clase existen constructores múltiples, y se dice que hay una sobrecarga de constructores. 




Herencia

La herencia es un mecanismo que permite la definición de una clase a partir de la definición de otra ya existente. La herencia permite compartir automáticamente métodos y datos entre clases, subclases y objetos.

La herencia consiste en “sacar factor común” para no escribir código de más, y por lo tanto se crea una clase con el “código que es común a las otras subclases”. A esta clase se le denomina como “Clase Padre o SuperClase”. Las clases con un código específico que dependen de la clase padre se les llama “Clases Hijas”, y heredan de la clase padre todos los atributos y métodos públicos o protegidos. Pero NO heredan nunca los atributos o métodos privados de la clase padre. 







Sobreescritura

Es una característica más de la herencia en Java.  Cuando una nueva clase se extiende desde otra que ya existía, todas las variables y métodos que son miembros de la superclase serán entonces de la subclase. Puede ocurrir que en la subclase algunos de los métodos de la superclase no sean adecuados, así que es posible reescribir el método en la subclase para que se adapte su funcionamiento a los objetos del tipo de la subclase. 





Polimorfismo

Este término se utiliza para referirse a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos.
Es la capacidad que tienen los objetos de una clase en ofrecer una respuesta distinta e independiente en función de los parámetros (diferentes implementaciones) utilizados durante su invocación. Dicho de otro modo el objeto como entidad puede contener valores de diferentes tipos durante la ejecución del programa.

Para poner de ejemplo: podemos crear dos clases distintas, Gato y Perro, que heredan de la superclase Animal. La clase Animal tiene el método abstracto makesound() que se implementa de forma distinta de cada una de las subclases (gatos y perros suenan de forma distinta). Entonces, un tercer objeto puede enviar el mensaje de hacer sonido a un grupo de objetos Gato y Perro por medio de una variable de referencia de clase Animal, haciendo así u uso polimórfico de dichos objetos respecto del mensaje mover. 






A continuación dejamos una pequeña presentación en PowerPoint: 


Alumnos: 
Daniel Volcán C.I: 28326896
 David Mendoza. C.I: 30248458





domingo, 3 de mayo de 2020

Programación Orientada a Objetos

Programación II
David Mendoza C.I: 3028458
Daniel Volcán C.I: 28326896

Programación Orientada a Objetos (POO)

La programación Orientada a objetos se define como un paradigma de la programación, una manera de programar específica, donde se organiza el código en unidades denominadas clases, de las cuales se crean objetos que se relacionan entre sí para conseguir los objetivos de las aplicaciones.
La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación. Al programar orientado a objetos tenemos que aprender a pensar cómo resolver los problemas de una manera distinta a como se realizaba anteriormente, en la programación estructurada.
Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvían una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los programadores puedan ser reutilizados se creó la posibilidad de utilizar módulos. El primer módulo existente fue la función, que somos capaces de escribir una vez e invocar cualquier número de veces.
Sin embargo, la función se centra mucho en aportar una funcionalidad dada, pero no tiene tanto interés con los datos. Es cierto que la función puede recibir datos como parámetros, pero la trata de una forma muy volátil. Simplemente hace su trabajo, procesando los parámetros recibidos y devuelve una respuesta. En las aplicaciones en realidad los datos están muy ligados a la funcionalidad.
Con la Programación Orientada a Objetos se buscaba resolver situaciones, creando unas mejores condiciones para poder desarrollar aplicaciones cada vez más complejas, sin que el código se volviera un caos. Además, se pretendía dar unas pautas para realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo, de manera que consigamos que el código se pueda reutilizar.

La POO no es difícil, pero es una manera especial de pensar, a veces subjetiva de quien la programa, de manera que la forma de hacer las cosas puede ser diferente según el programador. Aunque podamos hacer los programas de formas distintas, no todas ellas son correctas, lo difícil no es programar orientado a objetos sino programar bien.



Expectativas

David Mendoza: Incluso cuando nos encontramos en la situación actual, a mitad de una pandemia y en un país donde el acceso a internet y servicios básicos como luz o agua son problemas del día a día, es importante contar con un concepto sólido de tus expectativas al recibir educación. Por mi parte, quiero ser capaz de comprender a fondo las herramientas y recursos a la hora de programar en ingeniería, ya sea producir una página web, una base de datos, o una rutina.


Daniel Volcán: Mis expectativas para este semestre es aprender la mayor cantidad de conocimientos que se pueda, para así ir formándome en esta carrera y ser un profesional exitoso. A pesar de la situación actual, creo que a la distancia podemos obtener muchas ventajas y aprender cosas nuevas. Mis expectativas en la materia son las de estudiar nuevas técnicas para una buena y eficaz forma de programar y tener nuevos conocimientos sobres distintas aplicaciones de programación.