Una explicación completa del paradigma de programación orientada a objetos, sus características, beneficios y conceptos más importantes dentro del desarrollo de software. Se muestran algunos ejemplos con código fuente que amplía la claridad para un mejor entendimiento del cada tema desarrollado sobre el paradigma orientado a objetos; aunque los ejemplos están enfocados con una visión de java, los conceptos son generales y no se casan con ningún lenguaje de programación concreto. El modelo proporcionado es el que se utiliza en la actualidad en cualquier proyecto de de desarrollo de software de pequeño, mediano o gran alcance. Otro aspecto importante es que se intenta dar una explicación entendible e intuitiva de cada característica, haciendo que conceptos como Herencia, Abstracción, Polimorfismo, Encapsulación, Modularización, Acoplamiento, Cohesión, etc, queden totalmente entendidos por el estudiante que quiera aprender y conocer los fundamentos del paradigma de programación orientada a objetos
2. Programación orientada a objetos
Principio: “Todo puede ser representado como una
colección objetos relacionados, que interactúan entre sí”
3. Beneficios
Todo el código que tiene algo que ver con un objeto en
específico se encuentra en un solo lugar.
Los objetos pueden poseer atributos y métodos
inherentes de la clase a la que pertenecen
La escritura de código es más sencilla porque se
conceptualiza como algo que le sucede a un objeto
POO hace que los programas grandes sean mantenibles
5. Abstracción
Es el proceso mental de extracción de las características
esenciales de algo, ignorando los detalles superfluos.
6. Modularidad
Fragmentar un programa en componentes individuales
reduce su complejidad en algún grado.
Propiedad que tiene un sistema que ha sido descompuesto
en un conjunto de módulos coherentes y débilmente
acoplados.
Propiedad que permite estructurar y ordenar las unidades
de ejecución que en ese contexto suelen llamarse
subprogramas, funciones o procedimientos.
7. Herencia
DEFINICIONES:
Clase Descendiente: Un descendiente de una Clase C, es cualquier
clase que hereda directa o indirectamente de C. También suele
recibir el denominativo de subclase.
Clase Ancestro: Un ancestro de la Clase C, es la Clase A de la que C
es descendiente. También suele recibir el denominativo de
superclase
Diagrama de Clases: El diagrama donde se muestran las Clases que
conforman la aplicación y sus relaciones, se conoce como Diagrama
de Clases.
8. Polimorfismo
Significa que un conjunto de objetos derivados,
pueden ser considerados como los objetos padre,
siempre y cuando no se consideren atributos o
métodos especializados
9. Encapsulacion
La idea de la Encapsulación, está relacionada con el deseo
de ocultar o proteger algo.
Lo que se oculta no es la información contenida, sino los
detalles de cómo esa información es soportada.
CALIFICADORES:
Privados
Públicos
Protegidos
10. Definiciones
Una clase, es un modelo abstracto de un objeto
Un objeto, es una instancia concreta de una clase
11. Relaciones entre Objetos
Dependencia: Se da cuando una clase necesita de otra para
realizar sus funciones, esta necesidad no implica pertenencia.
Se la representa con una línea punteada con una flecha que
apunta a la clase necesitada.
12. Relaciones entre Objetos
Asociación: Una clase necesita de otra para realizar sus funciones,
no implica pertenencia, pero la clase necesitada si puede formar
parte de sus atributos.
Se la representa con una línea continua con una flecha que apunta
a la clase necesitada. Si la relación es bidireccional, no se colocan
flechas
13. Relaciones entre Objetos
Agregación: Cuando un objeto puede ser parte de otro objeto. Esta relación
denota pertenencia. Una instancia de una clase puede ser agregada a otra cuando
sea necesario, pero que no es imprescindible para que la primera pueda existir.
La agregación, está representada por una línea
recta que tiene el contorno de un rombo en el
lado del objeto contenedor.
14. Relaciones entre Objetos
Composición: Esta relación indica que una instancia de una clase es
parte de otra. En esencia se podría decir que una instancia de la segunda
no puede existir sin la primera. La pertenencia es fuerte.
Está representada por una línea recta que tiene un rombo negro en el
lado del objeto contenedor
15. Herencia
Generalización, especialización: Cuando se
tienen diferentes objetos con características
comunes, se recomienda crear una jerarquía de
objetos, partiendo del objeto más general en la
cima, para llegar al objeto más específico en la
base
Esta relación está representada por una línea que
tiene un triángulo, la punta del triángulo está
orientada hacia la clase más general y la base del
triángulo está orientada hacia la o las clases más
específicas.
16. Diagrama de clases
Un diagrama de clases sirve para visualizar las relaciones entre las clases que
involucran el sistema, las cuales pueden ser asociativas, de herencia, de uso y de
agregación, ya que una clase es una descripción de conjunto de objetos que
comparten los mismos atributos, operaciones, métodos, relaciones y semántica;
mostrando un conjunto de elementos que son estáticos, como las clases y tipos junto
con sus contenidos y relaciones. Esta compuesto por : Clase: atributos, métodos y
visibilidad. Relaciones: Herencia, Composición, Agregación, Asociación y Uso
17. Diagrama de clases
Todos los atributos y métodos de una superclase son heredados en las subclases.
Clase abstracta pura porque no se
instancia, tampco será implementada
- Herencia
18. Diagrama de clases
Todos los atributos y métodos de una superclase son heredados en las subclases.
- Herencia
- Asociación
19. Diagrama de clases
Todos los atributos y métodos de una superclase son heredados en las subclases.
- Herencia
- Asociación
- Agregación
20. Diagrama de clases
Todos los atributos y métodos de una superclase son heredados en las subclases.
21. Ejercicio
Se pide modelar un diagrama de clases para el desarrollo de un
software de “carrito de compras en línea” que debe cumplir los
siguientes requisitos.
-El software debe tener usuarios administradores que serán los que
renueven los catálogos de productos, para ello accederán al sistema
con credenciales que los identifiquen.
También existirán usuarios cliente que accederán al sistema y podrán
hacer pedido de productos para comprar. Una vez que se haya llenado
el carrito con productos a comprar, deberá confirmar su pedido y el
sistema le mostrará un detalle del pedido y los datos de envío para
una confirmación final y se proceda al envío de los productos hasta su
domicilio.