2008 universidad de las américas - implementación de aplicaciones para la internet - dr. juan...
TRANSCRIPT
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 1
IMPLEMENTACION DE APLICACIONES INTERNET I
Unidad 2:
Programación orientada a objeto
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 2
Contenidos
Paradigmas de Programación
Clases y Objetos
Modificadores de Acceso
¿Qué es UML?
Principios de la Orientación a Objetos
Conceptos del Diseño Orientado a Objetos
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 3
Objetivos
Describir el Paradigma de Orientación a Objetos incluyendo los conceptos relacionados al análisis, diseño y programación.
Mostrar cómo aplicar los conceptos fundamentales de programación orientada a objetos utilizando Microsoft Visual C#.NET.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 4
Introducción
Un programa cumple su objetivo utilizando únicamente funciones y ciertas estructuras de control 'enfoque estructurado'
Desarrollado década de los 70’s Impulsado principalmente por Pascal y C
Programas más avanzados y complicados Disparan la búsqueda de un nuevo enfoque,
másRápidoCorrectoEconómico (Reutilización)
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 5
Introducción (2)
Esta búsqueda concibe Programación Orientada a Objetos (POO) Comienza con lenguajes
SmallTalk Eiffel C++ Logra apogeo con Java
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 6
Introducción (3) Paradigmas:
Programación imperativa
Programación funcional
Programación lógica
Nuevo Paradigma: Programación orientada a objeto
(POO).
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 7
Paradigmas de Programación Hay para todos los gustos:
Estructurados (C, Pascal, Basic, etc.) Funcionales (Categorical Abstract Machine
Language - CAML) Declarativos (Prolog) Orientados a Objetos (C#, VB.NET, Smalltalk,
Java) Orientados a Aspectos Híbridos (Lisp, Visual Basic) Incomprensibles....
Cada enfoque tiene sus ventajas y desventajas Cada uno es más apropiado para ciertas cosas
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 8
El mundo color de Objetos
Todo el mundo está compuesto de entidades que se relacionan e interactúan entre si
¿Qué es un Objeto? Todo es un Objeto ¡¿~?!
¿Es lo mismo de siempre con otro nombre? Pensar en Objetos ….
No es el último grito de la moda (1980s)
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 9
El mundo color de Objetos (2)
¿Por qué Orientación a Objetos (OO)?
Se parece más al mundo real.
Permite representar modelos complejos.
Muy apropiada para aplicaciones de negocios.
Las empresas ahora sí aceptan la OO.
Las nuevas plataformas de desarrollo la han adoptado. (Java / .NET)
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 10
Programación Orientada a ObjetosProgramación Orientada a Objetos
• La programación orientada a objetos es una modelación sobre la observación del mundo real.
• El poder crear objetos y combinarlos es lo que da como resultado una programación orientada a objetos.
• La característica más importante en la programación orientada a objetos es la Clase.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 11
Conceptos de la POO
Conceptos fundamentales que sustentan la POO: Clase
Objeto
Instancia
Atributos
Métodos
La POO trata de amoldarse al modo de pensar del hombre y no a la de la máquina.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 12
Principales Lenguajes OO
Simula
Smalltalk
Object Pascal
Eiffel
C++
Java
C#
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 13
Simula
Simula I (1964) y Simula 67 (1967), desarrollados en el Centro de Computación de Noruega por Ole-Johan Dahl y Kristen Nygaard, son los dos primeros lenguajes orientados a objetos.
Influenciado por Algol 60.
Simula 67 introdujo los principales conceptos de OOP: clases, objetos, encapsulamiento, herencia simple, sobrecarga (overriding) de métodos, y recuperación de memoria disponible (garbage collection)
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 14
Smalltalk Smalltalk (1972) fue desarrollado en Xerox PARC por
Alan Kay, Dan Ingalls y Adele Goldberg.
Influenciado por Simula y Lisp.
Lenguaje orientado a objetos puro.
Soporta clases, metaclases, encapsulación, herencia simple, polimorfismo, garbage collection
En Smalltalk, todo es un objeto y cada objeto pertenece a una clase.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 15
C++ C++ (1983) fue desarrollado en Bell Laboratories por
Bjarne Stroustrup.
Influenciado por C y Simula.
Lenguaje orientado a objetos híbrido, compatible con C.
Soporta clases, encapsulación, sobrecarga de funciones y operadores, herencia múltiple, polimorfismo, clases/funciones parametrizadas (genéricas).
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 16
Eiffel
Eiffel (1986) fue desarrollado por Bertrand Meyer.
Influenciado por Smalltalk y ADA.
Provee soporte para “Diseño por Contrato”: invariantes, pre-condiciones y postcondiciones.
Soporta clases, encapsulación, sobrecarga de operadores, herencia múltiple, polimorfismo, clases parametrizadas (genéricas), garbage collection.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 17
Java Java (1995) fue desarrollado en Sun
Microsystems por James Gosling, Bill Joy y Guy Steele.
Influenciado por C++.
Java es un lenguaje orientado a objetos más puro que C++ y menos puro que Smalltalk.
Soporta clases, encapsulación, herencia simple, polimorfismo, interfaces, garbage collection.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 18
C#
C# (2000) fue creado en Microsoft por Anders Hejlsberg.
Influenciado por Java: objetos manejados mediante referencias, herencia simple e interfaces, garbage collection; y C++ (sobrecarga de operadores).
Novedades: propiedades, eventos, delegados.
Permite crear código intermedio que corre en el Common Language Runtime (CLR), en .NET
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 19
Comparación de Lenguajes
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 20
Principios
En los objetos de la vida real, sin importar cuales sean, podemos distinguir:
que se clasifican en tipos,
que tienen características, y
que podemos interactuar con ellos (sin importar de que forma se haga).
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 21
¿Qué es un Objeto? Informalmente, un objeto representa una
entidad del mundo real.
Entidades Físicas
(Ej.: Vehículo, Casa, Producto)
Entidades Conceptuales
(Ej.: Proceso Químico, Transacción Bancaria)
Entidades de Software
(Ej.: Lista Enlazada, Interfaz Gráfica)
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 22
Tipos de Objetos
Los objetos tienen una jerarquía conceptual:
Objetos de cocina
Objetos de oficina
Objetos de un auto (motor, parabrisas, etc.)
Esta jerarquía es sumamente práctica y sencilla de recordar.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 23
Características de los Objetos
Aunque dos objetos sean del mismo tipo, dos autos por ejemplo, cada uno tiene características distintivas únicas:
el color,
el número de cilindros,
el número de válvulas,
número de asientos
Significa que aunque dos o más objetos sean del mismo tipo cada uno posee características únicas que lo definen.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 24
Interacción con los Objetos
Se refiere a una interfaz o un método de comunicación con tales objetos:
Podemos acelerar el auto, encender el televisor, vaciar el basurero, cerrar la cortina, operar el microondas, etc.
El origen del nombre "métodos" (para las funciones) viene de esta idea: los métodos son la manera de comunicación, interacción y manipulación con los objetos.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 25
Definición de Objeto
Definición Formal (Rumbaugh):
“Un objeto es un concepto, abstracción o cosa con un significado y límites claros en el problema en cuestión”
Un objeto posee (Booch): Estado Comportamiento Identidad
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 26
Un objeto posee Estado
Lo que el objeto sabe
El estado de un objeto es una de las posibles condiciones en que el objeto puede existir.
El estado normalmente cambia en el transcurso del tiempo.
El estado de un objeto es implementado por un conjunto de propiedades (atributos), además de las conexiones que puede tener con otros objetos.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 27
Un objeto posee Comportamiento
Lo que el objeto puede hacer
El comportamiento de un objeto determina cómo éste actúa y reacciona frente a las peticiones de otros objetos.
Es modelado por un conjunto de mensajes a los que el objeto puede responder (operaciones que puede realizar).
Se implementa mediante métodos.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 28
Un objeto posee Identidad
Cada objeto tiene una identidad única, incluso si su estado es idéntico al de otro objeto.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 29
Objetos en C#
Archivo de clase que contiene:
Un tipo (constructor)
características (variables)
Una serie de métodos (interfaz de comunicación)
“un archivo de clase lleno de funciones relacionadas”
Aprender POO es aprender a organizar mejor las funciones.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 30
“Hola mundo” en C#
class MainClass{
public static void Main(string[] args) {
Console.WriteLine( "Hola Mundo!");
}
}
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 31
Objetos ó archivos de clases
Estructura básica
1. Constructores (o inicializadores)
2. Funciones Públicas
3. Funciones Privadas
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 32
¿Qué es una Clase?
Una clase es una descripción de un grupo de objetos con: Propiedades en común: atributos. Comportamiento similar: operaciones. La misma forma de relacionarse con otros
objetos: relaciones. Una semántica en común: significan lo mismo.
Una clase es una abstracción que: Enfatiza las características relevantes. Suprime otras características: simplificación.
Un objeto es una instancia de una clase.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 33
Objetos y Clases Una clase es una definición abstracta de un objeto:
Define la estructura y el comportamiento compartidos por los objetos.
Sirve como modelo para la creación de objetos.
Los objetos pueden ser agrupados en clases.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 34
Ejemplo de una Clase Clase: Curso Estado (Atributos)
Nombre Ubicación Días Ofrecidos Horario de Inicio Horario de Término
Comportamiento (Métodos) Agregar un Alumno Borrar un Alumno Entregar un Listado del Curso Determinar si está Completo
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 35
Modificadores de Acceso
Permiten definir el nivel de acceso (visibilidad) de los miembros (atributos o métodos) de una clase.
Público: Cualquier clase puede “ver” los miembros públicos de otra clase.
Privado: Sólo la clase puede ver sus propios miembros privados.
Existen otros dos modificadores para propósitos específicos: Paquete y Protegido.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 36
La base de esta tecnología es:
Modelar
con base en
Entidades
los problemas que se desea resolver…
… relevantes y tangibles en el problema.
Modelamiento
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 37
Abstracción
El modelo define una perspectiva abstracta del problema:
Los datos que son afectados.
Las operaciones que son identificadas.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 38
Definición
La Programación Orientada a Objetos es un método de implementación en el que:
Los programas se organizan como colecciones de objetos.
Cada uno de los cuales representa una instancia de alguna clase, y cuyas clases pertenecen a una jerarquía”.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 39
Propiedades de la POO Propiedades, que lo llevan a ser un estilo
de desarrollo que permite crear código reutilizable son:
Encapsulamiento
Polimorfismo
Herencia
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 40
EncapsulamientoAbstracción que permite ignorar los detalles no esenciales de un objeto, manteniendo un modelo simplificado.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 41
EncapsulamientoEl encapsulamiento permite ocultar tanto
el tipo de datos como
las operaciones
El encapsulamiento mediante objetos incluye:
Privacidad de datos.
Compartir datos con otro objeto.
Datos "globales" compartidos por otros objetos.
Un conjunto de mensajes al cual un objeto responde.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 42
Encapsulamiento
Todos ellos están encapsulados o contenidos dentro de la misma, de manera que son propiedad de dicha clase.
Esos métodos y atributos pueden ser utilizados por otras clases sólo si la clase que los encapsula le brinda los permisos necesarios para ello.
Toda clase tiene una serie de atributos y métodos asociados a ella.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 43
Encapsulamiento
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 44
El polimorfismo permite que una misma operación pueda llevarse a cabo de forma diferente en clases diferentes.
Por ejemplo, la operación mover, es distinta para una pieza de ajedrez que para una ficha de damas, pero ambos objetos pueden ser movidos.
Una operación es una acción o transformación que realiza o padece un objeto.
La implementación específica de una operación determinada en una clase determinada se denomina método.
Polimorfismo
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 45
Polimorfismo Capacidad de que dos clases diferentes
respondan de forma distinta a un mismo mensaje.
Esto quiere decir que dos clases que tengan un método con el mismo nombre, y que respondan al mismo tipo de mensaje (es decir, que reciba los mismo parámetros), ejecutarán acciones distintas.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 46
Herencia Una clase (clase hija) puede heredar, de
otra clase (clase padre):
Atributos y
Métodos
Em pleado Cliente Alum no
PersonaN om b re
D irecc ió n
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 47
Desarrollando una Clase Una clase describe un grupo de objetos que
comparten propiedades y métodos comunes.
Una clase es una plantilla que define qué forma tienen los objetos de la clase.
Una clase se compone de dos tipos de campos:
Información: campos (atributos, propiedades)
Comportamiento: métodos (operaciones, funciones)
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 48
Clases como abstracciones
Atributos
Métodos
Clase:
Representan el estado de un objeto (Variables de ejemplar)
Representan el comportamiento de un objeto. (Funciones miembro).
Las clases son abstracciones que representan a un conjunto de objetos con un comportamiento e interfaz común.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 49
Instancias - Objetos Una Instancia u Objeto es una ocurrencia
o representante de la clase.
Es una variable del tipo de una clase.
Clases ObjetosPersona J uanPerro SamiraProducto ChocolateComputador DellFracción FStack S
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 50
Ejemplo de instancia de objetos
Clase: Estudiante
Objeto: A
Métodos
Inscribir
Consultar
Nombre: Juan
Objeto: B
Métodos
Inscribir
Consultar
Nombre: María
Declarativa: Estudiante A, B
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 51
Atributos Son aquellas características que se asocian
a un tipo de objeto (clase). Nombre Rut Edad Matrícula Dirección
Los atributos que se asocian a una clase, dependen en gran medida del uso que se le dará dentro del sistema que se diseña actualmente, pero también pueden ser definidos pensando en futuras implementaciones.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 52
Métodos Representan todas aquellas acciones que puede
realizar un objeto de una clase.
La clase Perro puede tener los métodos: Correr, Comer, Bañar Ladrar,
En la implementación, estos métodos son segmentos de código similares a los procedimientos y funciones utilizadas en la programación modular.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 53
Unidad de datos y procesos
En la POO se dice que en un objeto: "se unen datos y procesos".
En la programación estructurada, estaban separados en forma de variables y funciones.
Objeto. Instanciación de objetos
Variable. Declaración de variables.
POO Procedural
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 54
Inicio y fin de Objetos
Un objeto consta de: Un tiempo de vida. Estado. Comportamiento(s).
Atributos
Métodos
Cada objeto es responsable de inicializarse y destruirse en forma correcta.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 55
La duración de un objeto en un programa siempre está limitada en el tiempo.
Tiempo de vida de un objeto
La mayoría de los objetos sólo existen durante una parte de la ejecución del programa. Los objetos son creados mediante un mecanismo denominado instanciación. Cuando dejan de existir se dice que son destruidos.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 56
Queda definido por sus atributos.
Con él se definen las propiedades del objeto y las condiciones en que se encuentra en un momento determinado de su existencia.
Estado de un objeto
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 57
Lo definen los métodos de la clase.
Todo objeto debe de presentar una interfaz.Esta interfaz queda definida por sus métodos, para que el resto de los objetos que forman parte del programa puedan interactuar con él.
Comportamiento de un objeto
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 58
Mensaje
Un programa en ejecución es una colección de objetos que interactúan, son creados y destruidos.
La interacción se basa en mensajes que son enviados de un objeto a otro, donde el emisor le pide al receptor que aplique un método a sí mismo.
Mecanismo por el cual se solicita una acción sobre el objeto.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 59
Ejemplo
• Considerar la siguiente acción en el computador:
Ambiente procedimental
Se identifican las funciones que resuelven el problema.
Ambiente OO
Se identifican los objetos que interactúan.
Al presionar una tecla, para que aparezca el carácter en la pantalla
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 60
Ambiente Procedimental
1.Esperar, hasta que una tecla es presionada.
2.Obtener el valor de la tecla.
3.Escribir el valor de la tecla en la posición actual del cursor.
4.Avanzar la posición del cursor.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 61
Procedimental
Procedimiento 1
Procedimiento 2
Procedimiento 3
DATOS
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 62
Ambiente Orientado a Objeto
1. Tecla
2. Pantalla Una vez que una tecla recibe un mensaje
de cambiar su estatus al estado "estar presionada", su objeto correspondiente, manda un mensaje al objeto que representa a la pantalla.
Este mensaje le solicita al objeto pantalla que despliegue el valor asociado a la tecla presionada.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 63
POO
MétodosDATOS
MétodosDATOS
Métodos MétodosDATOS DATOS
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 64
Conceptos de la POO
Conceptos fundamentales que sustentan la POO:
Clase
Objeto
Instancia
Atributos
Métodos
La POO trata de amoldarse al modo de pensar del hombre y no al de la máquina.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 65
Mensajes y métodos Un objeto (agente emisor) envía un mensaje a otro objeto
(agente receptor).
El mensaje tiene codificada la petición de una acción.
El mensaje incluye la información necesaria (argumentos) para satisfacer la petición.
Si el receptor acepta el mensaje, acepta la responsabilidad de ejecutar la acción indicada.
En respuesta a un mensaje, el receptor ejecuta un método para satisfacer la petición.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 66
Clases y ejemplares
Todos los objetos son ejemplares de una clase.
La clase del receptor determina el método que se activa como respuesta a un mensaje.
Todos los objetos de una clase usan el mismo método en respuesta a mensajes similares.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 67
Clases y Métodos Un objeto tiene dos caras: una exterior, que
ve el usuario, y una interior, que sólo ve el programador.
El usuario ve nada más que un conjunto de operaciones que definen el comportamiento de la abstracción.
El programador ve las variables de datos que se usan para mantener el estado interno del objeto.
Un ejemplar es un representante de una clase.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 68
Clases y Métodos Una variable de ejemplar es una variable
interna mantenida por un ejemplar.
Cada ejemplar tiene su propia colección de variables de ejemplar.
Las variables de ejemplar sólo son modificables por los métodos definidos en la clase.
Un objeto es la combinación de estado y comportamiento.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 69
Clases y Métodos El estado lo determinan las variables de
ejemplar. El comportamiento lo determinan los
métodos. Desde el exterior, los clientes (Usuarios)
sólo pueden ver el comportamiento de los objetos.
Desde el interior, los métodos proporcionan el comportamiento apropiado mediante las modificaciones del estado del objeto.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 70
Clases y Objetos
Objeto Clase
María Persona
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 71
Un objeto es una entidad, física o conceptual, con propiedades o atributos que responde a un conjunto determinado de mensajes.
Un mensaje es un mandato que el objeto debe obedecer.
Objetos y mensajes
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 72
Algunos de estos mensajes le solicitan al objeto que lleve a cabo una determinada acción sin esperar que el objeto dé respuesta a cambio.
Otros mensajes solicitan del objeto cierta información, por lo que el objeto debe responder dando esa información.
Tipos de mensajes
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 73
Una clase define a un grupo de objetos que tienen el mismo comportamiento y propiedades comunes.
De esta forma, los objetos Silvestre, Garfield y Misifús pertenecen a la clase Gato y los objetos Juan Pérez y Pedro González pertenecen a la clase Persona.
¿Qué es una Clase?
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 74
ClasesClases
Una Clase tiene características y conductas, las cuales se reflejan con variables y métodos respectivamente:
int x, y;char ch; Variables (características)Variables (características)
Métodos (conductas)Métodos (conductas)
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 75
En una clase Animal, podríamos tener las siguientes características:
Número de Extremidades.
Tamaño.
Color de Piel.
Podríamos tener las siguientes conductas:
Crecer.
Comer.
Reproducir.
Morir.
ClasesClases
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 76
La clase está formada entonces por:
1. Variables de instancia, también conocidas como variables de objeto o variables de estado.
2. Métodos, utilizados por las variables de instancia o de estado para lograr un objetivo.
ClasesClases
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 77
SintaxisSintaxis para definir una clase para definir una clase
class classname { Declaración de la variable de instancia1;Declaración de la variable de instancia2;...Declaración de otras variables de
instancia ... Definición de método1Definición de método2 ... Definición de otros métodos ... }
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 78
Uso de las clasesUso de las clases
• Una clase se puede utilizar a través de sus objetos.
• Declaración de un objeto:
Clase objeto;
ejemplo: Figura2d cuadrado;
• Creación de un objeto:
objeto = new Constructor(parametros);
ejemplo: cuadrado = new Figura2d();
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 79
Definiendo la clase Personapublic class Persona{ // En seguida se declaran las variables de instancia o atributos public String nombre; public int edad; public int alto; public String sex;
// Después se declaran los métodos de la clase Persona public void drawPerson(Graphics g, int x, int y) { // Escribir las instrucciones necesarias para dibujar a la persona en las posiciones (x, y) en el elemento gráfico g. } public double grow(double increment) { // Escribir las instrucciones necesarias para incrementar el tamaño de la persona. }}
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 80
Pilares de la Orientación a Objetos
RelacionesRelaciones
HerenciaHerencia
AbstracciónAbstracción
Encapsulamiento Encapsulamiento
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 81
Abstracción
Ignorancia Selectiva: La abstracción nos ayuda a trabajar con cosas
complejas. Se enfoca en lo importante. Ignora lo que no es importante: simplifica.
Una clase es una abstracción en la que: Se enfatizan las características relevantes. Se suprimen otras características.
Una clase debe capturar una y solo una abstracción clave.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 82
Encapsulamiento Principio que establece que los atributos propios de
un objeto no deben ser visibles desde otros objetos.
Deben ser declarados como privados.
Permite abstraer al resto del mundo de la complejidad de la implementación interna.
Permite exponer el estado del objeto sólo a través del comportamiento que le hayamos definido mediante miembros públicos.
¿Por qué es útil?
Punto de Control/Validación.
Mejor respuesta ante los Cambios.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 83
Relaciones Todo sistema abarca muchas clases y
objetos.
Los objetos contribuyen en el comportamiento de un sistema colaborando entre si.
La colaboración se logra a través de las relaciones.
Existen dos tipos principales de relaciones
Asociación
Agregación
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 84
Relaciones de Asociación Una asociación es una conexión entre dos clases que
representa una comunicación.
Una asociación puede tener nombre.
La comunicación puede ser tanto uni como bi-direccional (por defecto).
La multiplicidad es el número de instancias que participan en una asociación.
Ejemplo: Una Persona es Dueña de un Vehículo. Un Vehículo Pertenece a una Persona.
Persona Vehiculo-dueño
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 85
Relaciones de Agregación La agregación es una forma especial de asociación
donde un todo se relaciona con sus partes.
También se conoce como “una parte de” o una relación de contención.
Ejemplo:
Una Puerta es una parte de un Vehículo.
El Vehículo es azul, la Puerta es Azul.
Mover el Vehículo implica mover la Puerta.
+Mover()
-color
Vehiculo Puerta
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 86
Herencia Es una relación entre clases en la
cual una clase comparte la estructura y comportamiento definido en otra clase (Grady - Booch).
Cada clase que hereda de otra posee:
Los atributos de la clase base además de los propios.
Soporta todos o algunos de los métodos de la clase base.
Una subclase hereda de una clase base.
+Avanzar()+Detenerse()
-pasajeros
Transporte
Automóvil Avión
Clase BaseClase Base
Clases Derivadas oClases Derivadas o
subclasessubclases
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 87
HerenciaHerencia
• La herencia permite crear subclases que heredan tanto las variables de estado como los métodos de su superclase.
• Una subclase puede utilizar las variables y los métodos que tiene la clase que le hereda, sin necesidad de definirlos.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 88
Clase A
Clase B
Clase C
public class A
{
}
public class B extends A
{
}
public class C extends B
{
}
hereda
hereda
Herencia (2)Herencia (2)
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 89
Clase A
Clase B
Clase C
public class A
{
}
public class B extends A
{
}
public class C extends B
{
}
Cuando se usa un método, lo busca aquí primero.
Si no encuentra busca aquí.
Si no encontró abajo busca aquí.
Herencia (3)Herencia (3)
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 90
Ventajas de la Herencia
•Ahorra tiempo al reutilizar el código.
•Reduce errores porque se utiliza algo que ya fue probado.
•“Divide y vencerás”
class Cuenta //Clase Base{ }class CtaCte : Cuenta //Clase Derivada{ }
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 91
Sobreescritura (Sobreescritura (OverridingOverriding))
• Al heredar de una clase, una subclase puede sobreescribir métodos de acuerdo a sus necesidades, de tal forma que el objeto que se cree utilizará el método de la subclase y no el de la clase ancestro.
• Una subclase puede definir otras variables y otros métodos que no están en la super clase de donde está heredando.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 92
Sobreescritura
Escribir un método en la subclase que tenga el mismo nombre y parámetros que su superclase.
Appletpaint(Graphics g )
PersonAppletpaint(Graphics g )
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 93
Alcance de las variables de Instancia y Locales
• Variables de instancia: si declaramos las variables inmediatamente después de abrir la clase, se dice que son variables de instancia (atributos) y pueden ser utilizadas por TODOS los métodos de esa clase.
• Variables locales: si las variables son declaradas DENTRO de un método, dicha variable solo puede ser utilizada por ese método.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 94
Paso de parámetros
Un método puede ser definido para aceptar cero o más parámetros.
Cada elemento en la lista de parámetros es especificado por su tipo y nombre.
Los parámetros en la definición del método son llamados parámetros formales.
Los valores pasados a un método cuando es llamado se llaman parámetros actuales.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 95
Paso de parámetros Los parámetros también actúan como variables
locales.
Cuando se pasa un parámetro, se construye una copia del valor y es asignada al parámetro formal. Ejemplo:
suma(5,4);
..
int suma ( int operando1, int operando2){
return operando1+operando2;
}
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 96
Convenciones para nombrar variables de instancia y clases:
• Los identificadores para variables de instancia deben empezar con minúscula y hacer cambio a mayúscula cuando sean varias palabras: numEmpleado.
• Los identificadores para las variables locales y parámetros deben ser cortos y significativos.
• Los nombre de las clases deben empezar con mayúsculas y ser cortos y descriptivos.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 97
MétodosMétodos
• Los métodos son las acciones que pueden realizar las instancias de objeto de una clase.
• Un método es una agrupación de instrucciones que pueden ejecutar algo útil para las variables de instancia y posiblemente regresar algo.
• Ejemplos:public void HacerDeposito(int importe) //No devuelve valor{}
public int ObtenerInventario(int codArticulo) //Devuelve un entero{}
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 98
Sintaxis general de un método
public tipoRetorno nombreMetodo( TipoParam1 param1, TipoParam2 param2,...) {
tipo1 varLocal1;
tipo2 varLocal2; ...
estatuto1;
estatuto2; ... }
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 99
Métodos
• Los métodos pueden tener valor de retorno. Ejemplo:
public double promedio(double a, double b){
return (a+b)/2; }
• O pueden NO tener valor de retorno. Ejemplo:
public void dibuja(Graphics g) {
g.drawRect(20,20,50,60); }
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 100
Llamadas a Llamadas a métodosmétodos
Un método llama a otro de la misma clase:
Forma general:
metodo ( parametros);
Ejemplos:
dameTuEdad();
deposita(1000);
double y=promedio(9.5,10.0);
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 101
Un método llama a otro de otra clase:
Forma general:
objeto.metodo(parametros);
Ejemplos:
maria.dameTuEdad();
cuentaBancaria.deposita(1000);
Llamadas a Llamadas a métodos (2)métodos (2)
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 102
EncapsulamientoEncapsulamiento
• El acceso a un método o a una variable desde otra clase solo se logra si estos han sido declarados como públicos.
• Si dentro de una clase las variables de instancia o los métodos se definen como privados solo podrán ser usadas dentro de esa clase (encapsulamiento).
• La clase tendrá entonces métodos privados que servirán para hacer operaciones con las variables de estado, pero también tendrá métodos públicos que servirán para poder utilizar las variables de estado desde otra clase.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 103
Constructores
• Los constructores son métodos que sirven para construir, crear o inicializar un objeto o instancia de una clase.
• NO tienen un valor de retorno (ni siquiera void).
• Se deben llamar IGUAL que la clase.
• Si no se especifica, C# proporciona automáticamente un constructor (vacío) para la clase.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 104
Constructores (2) Puede tener parámetros, que son usados
para inicializar algunas variables en el objeto.
Ejemplo:
class CuentaBanco{
int numCuenta, saldo1;
CuentaBanco(int num, int saldo){
num_cuenta=num;
saldo1=saldo;
}}
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 105
Constructores (3)
Son invocados con el operador new durante la creación de un objeto.
Por ejemplo, el constructor CuentaBanco puede ser definido con dos parámetros que indican su balance inicial:
miCuenta= new CuentaBanco(1001, 650);
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 106
Definición de clase Persona sin Definición de clase Persona sin constructorconstructorpublic class Persona {
String nombre;
int edad, altura; String sexo;
String construye(int e, int a, String s){
edad=e; altura=a; sexo=s;}
String dameDatos(Graphics g){
g.drawString(“edad ”+edad+” altura”+altura,50,50 )}}
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 107
Sobrecarga (Overloading)
• Escribir un método en la misma clase, que tenga el mismo nombre pero diferente numero de parámetros.
public class Person// Métodos Constructores public Person( ) ... public Person(String name, int age) ...public void HacerDeposito(int importe) {}
public void HacerDeposito(int importe, bool acreditar){}
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 108
Clases y Objetos
Mamiferos perro
Clase Objeto
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 109
Un objeto tiene: estado - características descriptivas que
definen al objeto. comportamientos - que es lo que puede hacer
(o se puede hacer) con ese objeto. Por ejemplo, una cuenta de banco
tiene número de cuenta, tiene un saldo, se le puede depositar, se le puede retirar, se le puede obtener su saldo.
Clases y Objetos
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 110
Acciones del Constructor
Inicializan la clase: le dan un estado inicial estable listo para su uso.
Al declarar un entero, éste tomaba el valor cero como estado inicial, para ser cambiado.
Los constructores hacen lo mismo pero para las clases.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 111
Definiendo constructores
En un auto el constructor sería el equivalente de encender el motor.
En un computador el constructor iniciaría el Sistema Operativo.
En una calculadora el constructor encendería el display y activaría las teclas para su uso.
“Lo primero que debemos pensar es en cómo definir un constructor”
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 112
Características de los constructores
"Constructor" es sólo un nombre más elegante para referirnos a una función.
En cierta forma también es una función pero es una muy especial porque no tiene tipo y no devuelve valores.
Sólo es una sección de código que se ejecutará antes que las demás.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 113
Inicio de variables en los Constructores
Es un área perfecta para inicializar muchas variables, ya que se ejecutará antes que ninguna otra parte del programa.
También es llamado función inicializadora de variables.
class CtaCte{ public CtaCte(){...} //Const. por default public CtaCte(int i){...} //Const. con un parametro}
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 114
C# - Propiedades
Propiedad: característica o atributo de un objetoPropiedad: característica o atributo de un objetoclass CtaCte{ int balance; public int Balance { get { return balance; } set { balance = value; } }}
CtaCte cc = new CtaCte();cc.Balance = 100; //AsignaciónMostrar(cc.Balance); //Obtención
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 115
Funciones públicas o métodos públicos Funciones de la clase que podemos usar
libremente en el momento que se necesiten.
¿Bajo qué condiciones deben ser públicas?
Cuando se quieren llamar desde fuera de la clase (desde el exterior).
Un método público sirve para modificar el estado interno de los objetos.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 116
Funciones privadas o métodos privados
Son las que NO son accesibles desde el exterior de la clase.
Estas funciones sólo se necesitan dentro de la misma clase.
No es importante que se tenga acceso a ellas desde el exterior.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 117
Ejemplo métodos Públicos y Privados
Pseudocódigo:
Constructor: Reloj negro, hora inicial 12:00am; Funciones Públicas: Apagar Encender Poner despertador; Funciones Privadas: Mecanismo interno de control Mecanismo interno de baterías Mecanismo de agujas
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 118
Ejemplo métodos Públicos y Privados
Pseudocódigo:
Constructor: PC DELL, sistema operativo Windows XP, encendido Funciones Públicas: Apagado Teclado Pantalla Impresora Parlantes Funciones Privadas: Caché del sistema Procesador Dispositivo de Almacenamiento Motherboard
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 119
Métodos Públicos y Privados
El programador puede modificar todo el código fuente:
No tiene relación con seguridad.
Tiene relación con la optimización y organización eficiente del código.
Existe un modificador más, además de "public" y "private“, que es "protected“, el cual restringe el acceso para clases de otros paquetes.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 120
Resumen sobre métodos públicos y privados
Distintos modificadores y restricciones que imponen a las variables y a los métodos
acceso\modificador sin modificador public private protected private protected
misma clase sí sí sí sí sí
subclase sí sí no sí sí
clase ajena sí sí no sí no
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 121
Ejemplopublic class reloj { private int horas, minutos, segundos; //constructor public reloj() { horas = 12; minutos = 0; segundos = 0; } //funcion pública public void cambiarHora(int h, int m, int s) { horas = h; minutos = m; segundos = s; } //otra función pública public String obtenerHora() { return "Hora: " + horas + " Minutos: " + minutos + " Segundos: " + segundos; } }
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 122
Ejemplo (2)
Contiene dos funciones públicas y un constructor.
La palabra clave public al inicio permite que cualquier navegador tenga acceso libre para abrir la clase.
Las primeras tres variables int son private, cierran literalmente el acceso a cualquiera que intente manipularlas desde fuera de la clase.
En cierto modo private les pone un candado para que nadie excepto la misma clase pueda modificarlos.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 123
Ejemplo (3) No se ve muy clara la utilidad del constructor:
No es llamado en ninguna parte de la clase.
No tiene tipo y tampoco devuelve ningún valor.
Inicializa las variables horas, minutos y segundos. La función pública cambiarHora es de tipo void lo
que significa que no devuelve ningún valor:
Recibe tres argumentos enteros que sirven para reajustar los valores de horas, minutos y segundos.
Como esta función esta trabajando dentro de la misma clase, puede acceder libremente a estas variables aunque sean private.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 124
Ejemplo (4)
La función obtenerHora es de tipo String:
Devuelve una cadena de texto que muestra la hora completa juntando el contenido de todas las variables.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 125
Ejemplo (5)
La clase reloj es un objeto.
¿Cómo la utilizamos?
Se debe crear una clase que instancia o llama y utiliza el objeto creado.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 126
Ejemplo de instancia (en JAVA)
import java.awt.*; import java.applet.Applet; public class UsoReloj extends Applet { reloj R; //inicializar applet public void init() { R = new reloj(); R.cambiarHora(12, 23, 34); } //dibujar en la pantalla una cadena public void paint(Graphics g) { g.drawString(R.obtenerHora(), 20, 20);
} }
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 127
Ejemplo de instancia
El applet UsoReloj tiene dos métodos y una sola variable
La variable R, es de tipo reloj
para inicializarlo llamamos a su constructor mediante: R = new reloj();
Lo anterior se llama instanciar el objeto
R.cambiarHora(12, 23, 34)
Accede a la función pública cambiarHora dentro de la clase reloj
R.obtenerHora( )
Esta función no recibe argumentos y devuelve un String
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 128
Instancias del objeto
Java no solo permite manejar una sola variable de una clase (objeto).
Se pueden crear tantas como se quiera de ella.
Cada una con sus propias funciones y variables públicas o privadas identificadas por la etiqueta o nombre que se les de.
Java jamás las confundirá ni las mezclará.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 129
Instancias del objeto
import java.awt.*; import java.applet.Applet; public class UsoRelojes extends Applet { reloj R; reloj A; reloj B; reloj C; //inicializar applet public void init() { R = new reloj(); R.cambiarHora(12, 23, 34); A = new reloj(); A.cambiarHora(12, 12, 0); B = new reloj(); B.cambiarHora(9, 43, 29); C = new reloj(); C.cambiarHora(0, 0, 0); }
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 130
Instancias del objeto
//dibujar en la pantalla una cadena public void paint(Graphics g) { g.drawString("R " + R.obtenerHora(), 20, 20); g.drawString("A " + A.obtenerHora(), 20, 40); g.drawString("B " + B.obtenerHora(), 20, 60); g.drawString("C " + C.obtenerHora(), 20, 80); } }
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 131
Reutilización del Software
Es fácil crear varios relojes con una sola clase reloj.
Esta facilidad se llama Reutilización del Software
“Codifique una vez y úselo cuantas veces quiera.”
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 132
Interfaces
Recurso de diseño soportado por los lenguajes orientados a objetos que permite definir comportamiento.
Permite que clases que no están estrechamente relacionadas entre sí deban tener el mismo comportamiento.
La implementación de una interfaz es un contrato que obliga a la clase a implementar todos los métodos definidos en la interfaz
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 133
Interfaces (2)
¿ De que clase heredaría la clase Hidroavión ?¿ De que clase heredaría la clase Hidroavión ?
Vehiculo
Avión Barco
Aereo TerrestreAcuatico
Automóvil
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 134
Interfaces (3)
Se crean las interfaces que definen comportamiento.
Hidroavión deberá definir los comportamientos de cada una de las interfaces que implemente.
Hidroavion
+Navegar()
«interface»Acuatico
+Volar()
«interface»Aereo
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 135
Es la propiedad que tienen los objetos de permitir invocar genéricamente un comportamiento (método) cuya implementación será delegada al objeto correspondiente recién en tiempo de ejecución.
El polimorfismo tiende a existir en las relaciones de herencia, pero no siempre es así.
Polimorfismo
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 136
Polimorfismo - Ejemplo
La definición del método reside en la clase base.
La implementación del método reside en la clase derivada.
La invocación es resuelta al momento de ejecución.
Transporte
Avanzar
Frenar
Transporte
Avanzar
Frenar
Transporte
Avanzar
Frenar
Transporte
Avanzar
Frenar
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 137
¿Qué es UML? “UML es un lenguaje visual para especificar, construir
y documentar sistemas” (OMG - Object Management Group)
Unified (UNIFICADO): El aporte de muchos métodos y notaciones Independiente de implementaciones, plataformas y
lenguajes Modeling (MODELADO):
Los modelos son utilizados en todas las ingenierías Language (LENGUAJE):
Si hay gente, requieren comunicarse. Si se tienen que comunicar, se tienen que entender. Para entenderse necesitan un lenguaje común
¡UML no es Metodología!
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 138
Una Clase en UML
Una clase está compuesta de tres secciones: La primera sección contiene el nombre de
la clase La segunda sección muestra la estructura
(atributos) La tercera sección muestra el
comportamiento (operaciones) La segunda y la tercera sección pueden ser
suprimidas Modificadores de Acceso
Los miembros públicos se denotan con el signo “+”
Los miembros privados se denotan con el signo “–”
+AgregarAlumno()+BorrarAlumno()+GenerarListadoCurso()+EstaCompleto()
-nombre-ubicacion-dias-inicio-fin
Curso
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 139
¿Qué son las clases?
Una clase describe un conjunto de objetos con un rol ó roles equivalentes en un sistema.
Los objetos, y su división en clases, derivan de:
Cosas tangibles, ó “del mundo real”: libro, curso.
Roles: estudiante, pasajero.
Eventos: llegada, salida, compra.
Interacciones: encuentro, intersección.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 140
Identificación de clases
¿Qué hace que un modelo de clases sea bueno?
1. Cada comportamiento que requiera el sistema debe ser proporcionado por los objetos de las clases que se elijan.
2. Un buen modelo de clases está formado, dentro de lo posible, por clases que representan elementos permanentes de los objetos del dominio, independientemente de la funcionalidad requerida en un momento dado.
El secreto de un buen diseño orientado a objetos está en terminar con un modelo de clases que:
no distorsione la realidad conceptual del dominio, y que
permita una implementación coherente de la funcionalidad requerida.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 141
Como construir un modelo de clases
La colección de clases en un modelo de diseño probablemente cambiará a lo largo de las iteraciones del desarrollo.
Primero se identifican las clases mas relevantes de los objetos del dominio: pertenecientes al problema obviamente; en vez de aquellas clases introducidas para resolverlo.
Existen dos tendencias principales que se complementan:
1. Diseño dirigido por los datos.
2. Diseño dirigido por la responsabilidad.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 142
Datos versus Responsabilidad Las clases tienen tanto datos como responsabilidades.
Una imperfección del diseño dirigido a los datos es que supone la identificación de todos los datos del sistema, para dividirlos en clases antes de considerar las responsabilidades de las clases.
Una técnica: Identificación de nombres.
Una imperfección del diseño dirigido a la responsabilidad es que supone la identificación de todas las responsabilidades en el sistema y su división en clases antes de considerar los datos.
Una técnica: Tarjetas Clase, Responsabilidades, Colaboración – CRC.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 143
Identificación de nombres
Se procede en dos etapas:
1. Identificar las clases candidatas seleccionando todos los nombres y locuciones nominales de la especificación de requisitos del sistema.
2. Descartar candidatas inapropiadas, renombrando las clases restantes, si es necesario.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 144
Razones para descartar una clase Redundante: A la misma clase se le ha dado mas de un nombre. Deben
distinguirse objetos parecidos que no poseen diferencias suficientes para catalogarlos en clases distintas.
Impreciso: No se puede especificar el significado de un nombre. Hay que eliminar la ambigüedad previo a la decisión si es clase.
Evento u operación: Hace referencia a algo que se hace para, por ó en el sistema.
Metalenguaje: El nombre forma parte de la manera en que se definen las cosas.
Fuera del alcance del sistema: El nombre importa para describir cómo funciona el sistema, no sus aspectos internos.
Atributo: El nombre referencia algo simple, sin comportamiento, que es atributo de otra clase.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 145
Tarjetas CRC
Se almacenan:
1. El nombre de la clase
2. Las responsabilidades
3. Los colaboradores
La responsabilidad de la clase describe su propósito a alto nivel.
Una clase debe tener, como máximo, entre tres y cuatro responsabilidades. Frecuentemente tienen una sola.
Demasiadas responsabilidades se corresponden con una cohesión débil del modelo.
Muchos colaboradores indican un fuerte acoplamiento.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 146
Asociaciones Corresponden con verbos.
Expresan las relaciones entre clases.
Hay instancias de asociaciones: enlaces, al igual que instancias de clases: objetos. Una instancia de asociación relaciona un par de objetos.
La clase A está asociada con la clase B si:
Un objeto de la clase A envía un mensaje a un objeto de la clase B.
Un objeto de la clase A crea un objeto de la clase B.
Un objeto de la clase A tiene un atributo cuyos valores son objetos ó colecciones de objetos de la clase B.
Un objeto de la clase A recibe un mensaje con un objeto de la clase B como parámetro.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 147
Operaciones de una clase Definen las maneras en que los objetos pueden
interactuar.
Un objeto envía un mensaje a otro solicitándole que realice una operación.
El receptor invocará a uno de sus métodos para realizar dicha operación.
El emisor no sabe que método será invocado, ya que puede haber muchos métodos implementando dicha operación en diferentes niveles de la jerarquía.
La firma (signature) de una operación da el selector, los nombres y tipos de cualquier parámetro formal ó argumento de la operación, así como el tipo del valor de retorno.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 148
Atributos de una clase
Describen los datos contenidos en un objeto de la clase.
Representación de una clase en UML.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 149
Vistas de operaciones y atributos Se tiene una aproximación conceptual y pragmática, que se
intenta hacer consistente.
Permite identificar:
que datos están conceptualmente asociados con un objeto de esa clase, y
que mensajes parece razonables esperar que entienda un objeto.
Debe comprobarse que se han incluido los datos y el comportamiento suficientes para los datos en cuestión, por lo que deberá considerarse cómo trabajan juntos los objetos de las diversas clases para satisfacer los requerimientos del sistema.
Las tarjetas CRC apoyan esta última observación.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 150
Ejemplo de diagrama de clases: Una Cuenta Corriente posee como características:
balance
Puede realizar las operaciones de:
depositar
girar
balance
El diseño asociado es:
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 151
Vista de la clase en el modelo
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 152
Atributos y Métodos Atributos:
Los atributos o características de una Clase pueden ser de tres tipos: los que definen el grado de comunicación y visibilidad de ellos con el entorno, estos son:
public (+): Indica que el atributo será visible tanto dentro como fuera de la clase, es decir, es accesible desde todos lados.
private (-): Indica que el atributo sólo será accesible desde dentro de la clase: sólo sus métodos lo pueden acceder.
protected (#): Indica que el atributo no será accesible desde fuera de la clase, pero si podrá ser accedido por métodos de la clase además de las subclases que se deriven.
Métodos:
Los métodos u operaciones de una clase son la forma en como ésta interactúa con su entorno, éstos pueden tener las características:
public (+): Indica que el método será visible tanto dentro como fuera de la clase, es decir, es accesible desde todos lados.
private (-): Indica que el método sólo será accesible desde dentro de la clase: sólo otros métodos de la propia clase lo pueden acceder.
protected (#): Indica que el método no será accesible desde fuera de la clase, pero si podrá ser accedido por métodos de la clase, además de por métodos de las subclases que se deriven.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 153
Relaciones entre clases Para describir como se pueden interrelacionar dos o
más clases, cada una con características y objetivos diferentes, es necesario explicar el concepto de cardinalidad de relaciones: Multiplicidades.
En UML, la cardinalidad de las relaciones indica el grado y nivel de dependencia.
Se anota en cada extremo de la relación y éstas pueden ser:
uno o muchos: 1..* (1..n)
0 o muchos: 0..* (0..n)
número exacto ó fijo: m (m denota el número).
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 154
Herencia (Especialización / Generalización) Indica que una subclase
hereda los métodos y atributos especificados por una Super Clase.
Por tanto, la Subclase, además de poseer sus propios métodos y atributos, poseerá las características y atributos visibles de la Super Clase (public y protected).
El ejemplo especifica que Auto y Camión heredan de Vehículo.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 155
Agregación Para modelar objetos complejos no bastan los tipos de datos
básicos que proveen los lenguajes: enteros, reales y secuencias de caracteres.
Cuando se requiere componer objetos que son instancias de clases definidas por el desarrollador de la aplicación, tenemos dos posibilidades:
1. Por Valor: Es un tipo de relación estática, en donde el tiempo de vida del objeto incluido esta condicionado por el tiempo de vida del que lo incluye. Este tipo de relación es comúnmente llamada Composición: el Objeto base se construye a partir del objeto incluido, es decir, es "parte/todo".
2. Por Referencia: Es un tipo de relación dinámica, en donde el tiempo de vida del objeto incluido es independiente del que lo incluye. Este tipo de relación es comúnmente llamada Agregación: el objeto base utiliza al incluido para su funcionamiento.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 156
Ejemplo de Agregación
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 157
Asociación
Permite asociar objetos que colaboran entre si.
No es una relación fuerte, es decir, el tiempo de vida de un objeto no depende del otro.
Ejemplo:
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 158
Dependencia o Instanciación (uso)
Representa un tipo de relación muy particular, en la que una clase es instanciada: su instanciación es dependiente de otro objeto/clase.
Se denota por una flecha punteada.
El uso más particular de este tipo de relación es para denotar la dependencia que tiene una clase de otra, como por ejemplo una aplicación grafica que instancia una ventana: la creación del Objeto Ventana esta condicionado a la instanciación proveniente desde el objeto Aplicación.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 159
Clase Abstracta Una clase abstracta se denota con el nombre de la
clase y de los métodos con letra "itálica".
Esto indica que la clase definida no puede ser instanciada pues posee métodos abstractos: métodos que aún no han sido definidos, es decir, sin implementación.
La única forma de utilizarla es definiendo subclases que implementen los métodos abstractos definidos.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 160
Clase parametrizada Una clase parametrizada se denota con un subcuadro en el extremo
superior de la clase, en donde se especifican los parámetros que deben ser pasados a la clase para que esta pueda ser instanciada.
El ejemplo típico es el caso de un Diccionario, en donde una llave o palabra tiene asociado un significado, pero en este caso las llaves y elementos pueden ser genéricos.
La genericidad puede venir dada de una plantilla (template), como en el caso de C++, o bien de alguna estructura predefinida: especialización a través de clases.
En el ejemplo no se especificaron los atributos del Diccionario, pues ellos dependerán exclusivamente de la implementación que se le quiera dar.
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 161
Fuentes de información
Juan José Aranda Aboy:
Programación en Objetos
Fundamentos de UML parte 1
Programa Microsoft Desarrollador Cinco Estrellas:
DCE0_IntroduccionOrientacionAObjetos.ppt
DCE0_ProgramacionOO_C#_VBNET.ppt
2008 Universidad de Las Américas - Implementación de Aplicaciones para la Internet - Dr. Juan José Aranda Aboy 162
Referencias en Internet - UML Desarrollo Orientado a Objetos con UML
Tutorial de UML DCC UChile (versión ZIP)
Introducción a UML
UML con ArgoUML y Poseidon
UML® Resource Page
TOUR POR UML
Programación: Ingeniería de Software:
¿Qué es UML?
UML: Análisis y Diseño Orientado a Objetos
UML Guía Visual
Base de Datos y UML