14 y 19 de febrero - JoseA4718/Portafolio-I-2020 GitHub Wiki
POO:
Se usa la analogía de objetos para compararlo con objetos de la vida real, mediante la descripción de las características y el comportamiento como sus funciones. Un objeto mayor puede tener objetos menores; como objetos que actúan con otros objetos menores que le pertenecen al mayor. Atributo es la cantidad, color, o característica especifica de un objeto sea padre o hijo. Por ejemplo; para hacer un queque se necesitan varios objetos, ya sean ingredientes o herramientas. Los objetos que interactuan entre si, lo hacen mediante procesos llamados métodos. Ademas se ocupa especificar que tipo de cada objeto se necesita. La manera de solucionar problemas es mediante la interacción con los objetos.
Un paradigma es un estilo fundamental de programación, para entender, modelar y solucionar un problema. Es una forma de construir estructuras y elementos de programación computacional. Es la forma en la que un lenguaje ve al mundo. Hay 4 paradigmas principales:
- Paradigma Funcional: se resuelve por medio de algoritmos matemáticos con entradas y salidas por medio de matemáticas y teoría de funciones. Las funciones son primordiales. Ejemplos de lenguajes: Scheme, Lisp, Fsharp.
- Paradigma Imperativo: modelar mediante pasos, cmaximaomandos y estructuras. Ejemplos de Lenguajes: C,C++,PHP.
- Paradigma Lógico: modelar mediante axiomas, reglas de inferencia (como de mate discreta) y queries (consultas). Las reglas son lo primordial. Ejemplo de Lenguaje: Prolog.
- Paradigma OO: modela utilizando objetos. Los objetos son los primordial. Lenguajes utilizados: Java, C++, Cshap.
PROGRAMACIÓN ORIENTADA A OBJETOS: Se definen los atributos y comportamientos de los objetos para que interactùan entre sì para poder dar solución a un problema de la vida real.
CONCEPTOS
-
Abstracción: Se refiere a lo abstracto, interpreteaciòn o representación. Es una representación no exacta de la realidad. Es la capacidad de los humanos para hacer representaciones de realidad. Las representaciones nos permiten omitir detalles para tratar de solucionar los problemas complejos. Se excluyen los detalles menos relevantes para poder poner mas tiempo y enfocarme en lo que realmente importa. En el POO, la abstracción nos permite definir objetos que representan objetos abstractos, para hacer un trabajo especifico, cambiar de estado y comunicarse con otros objetos. Es abstracto pues es la manera en la que un individuo o un grupo le da la solución al algún problema.
-
Encapsulacion: Se empaquetan atributos y comportamientos en los objetos. Una entidad cualquiera (objeto) debe contener ambos, atributos y métodos. Los objetos se pueden considerar como bloques de memoria de almacenamiento. Tiene una propiedad de ocultar. Yo defino mis atributos y métodos y defino que otros objetos no los puedan acceder para que no los puedan afectar ni cambiarlos. Se debe definir una interfaz para que los objetos si puedan interactuar entre si no directamente entre los objetos. Me permite empaquetar atributos y métodos en un objeto de manera privada, para que solo el dueño las pueda acceder. Ejemplo de la vida real: Microondas, con una interfaz para utilizarlo, pero yo no se cómo funciona de manera interna.
-
Clases: Es como un molde, (como de cupcake), define como debería verse el cupcake cuando este listo, pero no lo define como tal. El molde solamente ayuda a crear objetos pero yo no puedo interactuar con la plantilla. En POO las clases definen los atributos y los métodos que un objeto va a tener. La clase en un tipo de planilla. Se necesita definir los atributos y métodos que la clase va a tener.
-
Atributo: es el elemento de información de la clase (por ejemplo: color, velocidad, capacidad). Son variables que están asociadas a objetos. Varios objetos pueden tener el mismo atributo pero no la exactamente el mismo dato (velocidad máxima para dos carros).
=========================TERMINANDO 19/2/2020============================
--Se resolvieron dudas sobre la primera tarea programada--
-
Método: Son operaciones que cambian los atributos de un objeto. Los métodos definen las interfaz de un objeto, por ejemplo, los pedales del carro son parte de la interfaz; donde uno no tiene que interactuar directamente con el motor para para que vaya mas rápido o mas lento. El carro esconde la complejidad de su sistema y yo solo interactùo con su interfaz. Los métodos son mensajes que se le mandan a los objetos. Son mensajes de comunicación entre objetos.
-
Instancia: Instanciacion se refiere a crear un objeto a partir de un molde o una clase previamente definida. Instancia se refiere a un objeto creado a partir de una clase. Cada instancia es una entidad por separado. Un cambio en una instancia no afecta otras instancias de la misma clase. Los métodos son ejecutados en una instancia específica que yo estoy utilizando.
-
Herencia: En la vida real se relaciona con jerarquía, por ejemplo la clase animal va a tener métodos y atributos que cumplen para pájaros, mamíferos ,etc. Pero también estos deben tener métodos y atributos diferentes.En poo las clases pueden compartir atributos y métodos utilizando herencia. Una clase se puede relacionar con otra clase mediante una relación padre-hijo, a la padre también se le puede llamar clase base o superclase. La clase derivada hereda atributos y métodos de su padre, pero también puede crear o tener método nuevos que no tenga el padre.La herencia es una buena manera de reutilizar código. Solo se debe usar cuando se ocupa. La herencia es un tipo de relación.
-
Polimorfismo: Esta muy relacionado con la herencia. Nos deja tratar diferentes objetos como si fueran el mismo. Una subclase puede modificar los métodos heredados de su clase padre. Overriding: el método abstracto lo tiene el papà y lo implementa la clase hija pero con algo que la distinte de la original (tomar métodos del padre y modificarlos). Todas las subclases van a heredar el mismo métodos con el mismo código. Sumando herencia mas sobre escritura (overriding) obtenemos polimorfismo. HERENCIA + SOBRE-ESCRITURA == POLIMORFISMO.
Sobre Escritura: es la capacidad de un objeto de heredar métodos y modificarlos.
Sobre Carga: es tener varios métodos con el mismo nombre pero con parámetros distintos. Simplemente dependiendo de los parámetros que se le de, el código escogerá cual de los métodos es mas apto. Lo escogerá por medio de cantidad de parámetros y tipo de parámetros.
Modularidad: Me deja agrupar abstracciones lógicas. Agrupamiento de clases en otras palabras. Cada grupo es un modulo re utilizable que se puede usar desde diferentes módulos y clases. Lo que me de deja es reutilizar paquetes y módulos. Esto evita usar copy-paste de código que se necesita reusar. Cualquier cambio que se haga en ese paquete evita que se tenga que cambiar otros paquetes que tal vez no lo necesitaba. Se usa divide y vencerás; es una buena practica.