2. La Programación Orientada a Objetos
Es un paradigma de programación, esto es, una
filosofía o forma de pensar, con una teoría y una
metodología definidas.
Un lenguaje orientado a objetos es un lenguaje de
programación que permite el diseño de aplicaciones
orientadas a objetos.
Un lenguaje de programación tradicional, basa su
funcionamiento en el concepto de Procedimiento o
Función; esta filosofía, sin embargo, descompone el
programa en Objetos.
3. Los Objetos
Entidades del mundo Real que poseen un conjunto de
Propiedades o Atributos, y un conjunto de Métodos u
Acciones, mediante los cuales muestran su
comportamiento.
Estas Entidades se encuentran Relacionadas unas con
otras por medio del intercambio de Mensajes y responden a
estos mensajes ejecutando ciertas Acciones.
En términos técnicos: Es la representación en un programa
de un Concepto, y contiene información necesaria para
abstraerlo: datos que describen sus atributos y operaciones
que pueden realizarse sobre los mismos.
4. Los Mensajes entre Objetos
Un objeto sin comunicación con el mundo exterior no es
de utilidad. La idea no es crear islas de objetos si no
objetos relacionados.
Los objetos interactúan entre ellos mediante mensajes.
Cuando un objeto A quiere que otro objeto B ejecute una
de sus funciones o procedimientos miembro(métodos del
Objeto B), el objeto A manda un mensaje al objeto B.
Constan de 3 partes a saber
El objeto Destinatario
El método o la acción a Ejecutar
El (los) parámetro (s) necesarios para ejecutar el método
5. Identificando Objetos
Los objetos generalmente se ubican en las
siguientes categorías:
Cosas Tangibles
avión, auto, producto, insumo.
Roles
gerente, cliente, vendedor, auxiliar, empleado.
Organizaciones
empresa, colegio, proveedor.
Cosas Intangibles
vuelos, servicios, materias, programas.
6. Clases
Los objetos pueden ser varios de un mismo tipo, o
como se dice normalmente, de una misma clase.
Por ejemplo, si se posee un Automóvil, este
Automóvil es una Instancia de la Clase de Objetos
Carro. Todo Carro tiene atributos (color, cuatro
ruedas, puertas) y algunos métodos (arrancar, frenar,
apagar).
Podemos decir que es como una Plantilla que define
los atributos y los métodos que son comunes para
todos los objetos de un cierto tipo.
7. Diagrama de Clases
El propósito de este diagrama es el de representar
los objetos fundamentales del sistema, es decir los
que percibe el usuario y con los que espera tratar
para completar su tarea.
La clase define el alcance de un conjunto de objetos,
cada objeto pertenece a una clase y estos objetos se
crean por instanciación de las clases.
8. Formato del Diagrama de Clases
Nombre de la Clase
Atributos de la Clase
Operaciones de la Clase
9. Atributos I
Tipo.- Depende del Lenguaje de Programación empleado.
Valor Inicial.- Valor que posee el Atributo al crear el
Objeto.
Visibilidad.- Se relaciona con el Encapsulamiento.
Multiplicidad.- Determina si un atributo de estar o no, y si
posee un único valor o una lista de valores.
Ordenamiento.- Si lleva un orden o no.
Capacidad de Cambio.- Atributos con valores constantes.
Modificadores.- Los atributos pueden se de Clase,
Derivado, Volátil, Transitorio.
10. Atributos II - Visibilidad
El Encapsulamiento presenta tres ventajas
básicas
Se protegen los datos de accesos indebidos
El acoplamiento entre las clases de disminuye
Favorece la modularidad y el mantenimiento
Los atributos de una clase no deben ser
manipulables directamente por el resto de los
objetos.
11. Atributos III – Niveles de Encapsulamiento
(-) Privado. Es el más fuerte, esta parte es
totalmente invisible desde fuera de la clase.
(~) Package. Solo es visible dentro del mismo
paquete.
(#) Protegido. Están visibles para las clases
amigas y las derivadas de la original.
(+) Publico. Son visibles a otras clases, en el caso
de los atributos, se rompe el principio de
encapsulamiento.
12. Atributos IV - Multiplicidad
Valor Descripción
1 El atributo debe tener un único valor
0..1 El atributo puede o no tener un valor
0..*
El atributo puede tener varios valores o ninguno
1..*
El atributo puede tener varios valores, pero debe
tener al menos uno
* El atributo puede tener varios valores
M..N El atributo puede tener entre M y N valores
13. Atributos V - Modificadores
Clase o Estático. El atributo
aparece subrayado, no es necesario
contar con un objeto para ejecutarlo.
Derivado. Es calculable a partir de
otros atributos.
Transitorio. Tendrá valor solo
durante una porción de la ejecución.
Volátil. No se persiste.
14. Operaciones
Es un servicio que una instancia de la clase
puede realizar.
Tipo Devuelto. Depende del Lenguaje de
Programación utilizado.
Parámetros. Además del tipo, puede
especificarse si son In, Out o InOut.
Visibilidad. Se relaciona con el
encapsulamiento.
Modificadores. Una operación puede ser de
clase, abstracta, query o constructor.
15. Ejemplo de Clase
BEGIN CLASS
Punto
ATTRIBUTES
X : Integer
Y : Integer
METHODS
setX(nuevaX : Integer) :
Integer
getX()
setY(nuevaY : Integer) :
Integer
getY()
END
Public Class Punto
-X: Integer
-Y: Integer
+setX(nuevaX: Integer) :
Integer
+getX()
+setY(nuevaY: Integer) :
Integer
+getY()
17. Abstracción
Consiste en aislar un elemento de su
contexto o del resto de los elementos que lo
acompañan.
En programación, el término se refiere al
énfasis en el "¿qué hace?" más que en el
"¿cómo lo hace?" (característica de Caja
Negra).
18. Herencia
El mecanismo de herencia permite definir
nuevas clases partiendo de otras ya
existentes.
Las clases que derivan de otras heredan
automáticamente todo su comportamiento,
pero además pueden introducir
características particulares propias que las
diferencian.
19. Ejemplo de Herencia
BEGIN CLASS
Circulo
EXTENDS
Punto
PROPERTIES
Radio : double
METHODS
setRadio(nuevoRadi
o : Integer) : Integer
getRadio()
END
Public Class Circulo Extends Punto
-X: Integer
-Y: Integer
-Radio : Double
+setX(nuevaX: Integer) : Integer
+getX()
+setY(nuevaY: Integer) : Integer
+getY()
+setRadio(nuevoRadio : Integer) :
Integer
+getRadio()
20. Superclase/Subclase
Si la clase A hereda de la clase B, entonces B es la superclase
de A, por lo que A es subclase de B.
Los programadores pueden implementar las llamadas
superclases abstractas, que definen comportamientos
genéricos.
Las clases abstractas definen e implementan parcialmente
comportamientos, pero gran parte de estos comportamientos
no se definen ni se implementan totalmente.
El propósito de una clase abstracta es servir de modelo base
para la creación de otras clases derivadas, pero cuya
implantación depende de las características particulares de
cada una de ellas.
21. Encapsulamiento
Ocultamiento del estado, es decir, de los datos
miembro de un objeto de manera que sólo se
pueda cambiar mediante las operaciones
definidas para ese objeto.
Solamente se muestra lo que se necesita. Es
un empaquetamiento de los atributos y
métodos dentro de un objeto.
22. Polimorfismo
Los comportamientos pueden ser
identificados bajo el mismo nombre
pero procesan información de
manera diferente de acuerdo al objeto
que lo contenga.
Estos comportamientos permiten
que los métodos puedan ser
reemplazados en una clase derivada.
23. Ejemplo de Polimorfismo
Objeto 2
Función Sumar (a,b)
Sumar = a + b
Fin Función
Objeto 1
Objeto2.sumar (a,b)
Objeto3.sumar
(a,b,c)
Objeto 3
Función Sumar
(a,b,c)
Sumar = a + b + c
Fin Función
El objeto 1 invoca a 2 métodos que llevan el
mismo nombre pero funcionan diferente en
cada objeto.
24. Estructura de un Objeto
Un objeto puede considerarse
como una especie de cápsula
dividida en tres partes:
Campos y Propiedades (Atributos)
Métodos
Relaciones
25. Modificadores de Acceso
Permiten controlar la forma de acceder a los
atributos y métodos encapsulados dentro de una
clase.
PUBLICO: Que puede se accedido desde fuera de la
clase. Se representa por (+).
PRIVADO: Que NO puede ser accedido desde fuera de
la clase. Solo puede ser utilizado internamente en la
clase. Se representa por ( - ).
PROTEGIDO: Puede ser heredado por otra clase pero
en esta ultima se convierten en elementos Privados.
Se representa por ( # ).
26. Campos y Propiedades
Los Campos y Propiedades distinguen un objeto determinado de los
restantes que forman parte de la misma organización y tiene valores
que dependen del Atributo de que se trate. Estos Atributos pueden ser
heredados a sus descendientes en la organización.
Pueden ser Constantes, aquellos cuyo valor no cambia; y Variables,
aquellos que sus valores cambiarán dependiendo del Método que lo
realice.
Atributos Propios. Asociados directamente al objeto.
Atributos Heredados. Están definidos en un objeto diferente,
antepasado de éste (padre, "abuelo", etc.). A veces estos Atributos se
llaman Atributos Miembro porque el objeto las posee por el simple
hecho de ser miembro de una clase.
27. Métodos
Los Métodos son las operaciones que pueden
realizarse sobre el objeto, que normalmente estarán
incorporados en forma de Sub Programas (Funciones
o Procedimientos) que el objeto es capaz de ejecutar y
que también pone a disposición de sus descendientes
a través de la herencia.
Métodos Propios. Están incluidos dentro de la
cápsula del objeto.
Métodos Heredados. Están definidos en un objeto
diferente, antepasado de éste (padre, "abuelo", etc.).
A veces estos métodos se llaman métodos miembro
porque el objeto los posee por el simple hecho de ser
miembro de una clase.
28. Constructores
Son Procedimientos de construcción de una clase.
Se emplea la palabra reservada New, para instanciar
un Objeto de una Clase.
En la mayoría de los Lenguajes de Programación, el
nombre del Constructor es el nombre de la Clase.
Los constructores pueden o no incluir Parámetros,
siempre que se quiera crear un Objeto con todos los
Atributos que posee.
29. Destructores
Su objetivo es destruir las clases
creadas.
Este destructor se ejecuta toda vez
que el recolector de basura libera la
memoria ocupada por un objeto
cuyos atributos ya no se emplean.
30. Interfaces
Es una colección de Prototipos de
Métodos y Propiedades.
Proporciona en forma declarativa, una
lista de propiedades y métodos que
posteriormente pueden se codificados
dentro de una clase.
Las Interfaces no contienen código, sino la
implementación de las Propiedades y
Métodos que pueden ser programadas en
una clase que herede la Interfaz.
31. Relaciones
Las relaciones permiten que el
objeto se inserte en la organización y
están formadas esencialmente por
punteros a otros objetos.
Es un
Parte de
Tiene un
32. Relación Es un…
Relación de especialización.
Un objeto contiene la definición
de otro y añade comportamientos
adicionales.
33. Ejemplo de relación ES UN(A)…
Public Class Punto
-X: Integer
-Y: Integer
+setX(nuevaX: Integer) :
Integer
+getX()
+setY(nuevaY: Integer) :
Integer
+getY()
Public Class Circulo Extends
Punto
-X: Integer
-Y: Integer
-Radio : Double
+setX(nuevaX: Integer) : Integer
+getX()
+setY(nuevaY: Integer) : Integer
+getY()
+setRadio(nuevoRadio : Integer) :
Integer
+getRadio()
34. Relación Parte de…
Objetos compuestos por otros, relación de
contenencia. Un objeto es parte de otro
cuando conserva su independencia.
Public Class Logo
-circulo : Circulo
-triangulo : Triangulo
+setPunto(donde:Integer):Integer
Clase Circulo Clase Triangulo
35. Relación Tiene un…
Esta relación es justamente la inversa de
la relación Parte-de.
Public Class Logo
-circulo : Circulo
-triangulo : Triangulo
+setPunto(donde:Integer):Integer
Clase Circulo Clase Triangulo