La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

IMPLEMENTACION DE APLICACIONES INTERNET I

Presentaciones similares


Presentación del tema: "IMPLEMENTACION DE APLICACIONES INTERNET I"— Transcripción de la presentación:

1 IMPLEMENTACION DE APLICACIONES INTERNET I
Unidad 2: Programación orientada a objeto

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

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.

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ás Rápido Correcto Económico (Reutilización)

5 Introducción (2) Esta búsqueda concibe
Programación Orientada a Objetos (POO) Comienza con lenguajes SmallTalk Eiffel C++ Logra apogeo con Java

6 Introducción (3) Nuevo Paradigma: Programación imperativa
Paradigmas: Programación imperativa Programación funcional Programación lógica Nuevo Paradigma: Programación orientada a objeto (POO).

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 A lo largo de la historia se han ido desarrollando distintos lenguajes de programación basados en distintos paradigmas o formas de estructurar y pensar el desarrollo de software. A principios de la década de 1980 comenzó a surgir el llamado paradigma de “Orientación a Objetos”, que proponía una forma novedosa de comprender y modelar el mundo que nos rodea. Hoy, luego de varias décadas, este paradigma es sin duda uno de los principales y más importantes en la escena del desarrollo de software.

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) A diferencia del paradigma estructurado, que propone modelar a la realidad como una serie de procedimientos secuenciales, la orientación a objetos propone representar todo lo que conocemos en términos de entidades (objetos) que interactúan y se relacionan entre sí. Estas entidades pueden representar absolutamente cualquier cosa, desde algo físico y tangible como una persona, una factura o un auto, hasta cosas intangibles como la imaginación, un proceso químico o un algoritmo matemático. La mayoría de los programadores que tienen conocimientos de paradigmas estructurados tienden a encarar la orientación a objetos como un agregado más a aquellos, o sólo como una forma ligeramente distinta de hacer lo mismo. Según iremos viendo a lo largo del curso, la realidad nos dicta que para ser buenos programadores orientados a objetos deberemos entender y modelar la realidad de una manera distinta.

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) En la actualidad, el paradigma de orientación a objetos es sin lugar a dudas el más utilizado por las empresas de todo el mundo a la hora de encarar desarrollos de aplicaciones de software, ya que permite representar de manera relativamente simple modelos y realidades muy complejas y esto hace que el software sea más fácil de programar, comprender y mantener. Por otra parte, luego de más de 20 años de investigación y desarrollo sobre Orientación a Objetos pareciera ser que la industria se ha dado cuenta que el paradigma está lo suficientemente maduro como para dar soporte a las aplicaciones más importantes del mundo actual.

10 Programació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.

11 Conceptos de la POO La POO trata de amoldarse al modo de pensar del hombre y no a la de la máquina. Conceptos fundamentales que sustentan la POO: Clase Objeto Instancia Atributos Métodos

12 Principales Lenguajes OO
Simula Smalltalk Object Pascal Eiffel C++ Java C#

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)

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.

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).

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.

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.

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

19 Comparación de Lenguajes

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).

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)

22 Tipos de Objetos Objetos de cocina Objetos de oficina
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.

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.

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.

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 Según las definiciones formales de James Rumbaugh y Grady Booch (dos de las principales autoridades de la orientación a objetos en la actualidad, y coautores de UML, el lenguaje de modelado universal para objetos), un objeto es una abstracción de la realidad que tiene un significado concreto y claro para el problema que se está modelando. Un ejemplo de una entidad física representada como un objeto conceptual puede ser “Un Auto”. Ahora bien, todos los objetos tienen 3 características principales: Estado: representa la definición de atributos internos del objeto, sus características. Por ejemplo, un auto tiene un cierto número de puertas, un cierto número de ruedas, un volante, un motor, pedales, etc. Comportamiento: representa la definición del comportamiento del objeto, las acciones que éste puede realizar. Por ejemplo, un auto puede “arrancar”, “frenar”, “doblar”, “acelerar”, etc. Identidad: Cada objeto tiene una identidad única, incluso si su estado es idéntico al de otro objeto

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.

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.

28 Un objeto posee Identidad
Cada objeto tiene una identidad única, incluso si su estado es idéntico al de otro objeto. El concepto de identidad se refiere al hecho de que cada objeto es único en el mundo, por más que su conjunto de atributos y sus valores sean exactamente iguales a los de otros objetos. Por ejemplo, dos autos del mismo modelo, color, motor, salidos de la misma línea de producción el mismo día no dejan de ser dos autos diferentes, por más que su conjunto de atributos y sus valores sean iguales. La única posibilidad de que dos objetos sean iguales es que sean el mismo objeto.

29 “un archivo de clase lleno de funciones relacionadas”
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.

30 “Hola mundo” en C# class MainClass{
public static void Main(string[] args) { Console.WriteLine( "Hola Mundo!"); }

31 Objetos ó archivos de clases
Estructura básica 1. Constructores (o inicializadores) 2. Funciones Públicas 3. Funciones Privadas

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. La forma más sencilla de entender el concepto de clase es si la vemos como una agrupación de objetos con características similares. Por ejemplo, un auto ES UN tipo particular de vehículo motorizado, con lo cual dentro de su comportamiento podemos encontrar “arrancar” y “frenar”, entre otros. Ahora bien, una motocicleta también ES UN vehículo motorizado, y tiene dentro de su comportamiento “arrancar” y “frenar”. El conjunto de atributos también es compartido entre una motocicleta y un automóvil, aunque sus valores no coincidan necesariamente. Por ejemplo, ambos tienen el atributo “cantidad de ruedas”, sólo que el auto tiene 4 y la motocicleta 2.

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. Otra forma útil de ver una clase es como una plantilla, plano o molde de un conjunto de entidades a partir del cual se crearán luego instancias particulares (los objetos). La interacción de las entidades en el mundo real se produce entre objetos, no entre clases. Las clases no tienen “vida” en el mundo real, los objetos sí. Para poder interactuar con alguna clase deberemos crear una instancia particular de ella, con un conjunto de valores definidos para los atributos. A este proceso se lo conoce como “instanciación de un objeto”.

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

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. Tanto para los atributos (estado) como para los métodos (comportamiento) de una clase puede configurarse el nivel de visibilidad o acceso que estos tendrán hacia el mundo exterior (otras clases que interactúen con ella). Los cuatro niveles de acceso más comunes que se pueden establecer a nivel de miembro de una clase son: Público: un miembro público puede ser accedido desde cualquier otra clase Privado: un miembro privado solamente puede ser accedido desde la clase en la que está declarado Protegido: un miembro protegido solamente puede ser accedido desde la clase en la que está declarado y desde las clases que hereden de ella (se verá el concepto de herencia más adelante en este curso) Paquete: un miembro de tipo paquete sólo podrá ser accedido desde las clases que estén en el mismo paquete lógico que la clase en la que está definido. En un entorno Microsoft .NET un ejemplo de paquete es una biblioteca .dll o un archivo ejecutable .exe.

36 Modelamiento La base de esta tecnología es: Modelar Entidades
los problemas que se desea resolver… Modelar con base en … relevantes  y tangibles en el problema. Entidades

37 Abstracción El modelo define una perspectiva abstracta del problema:
Los datos que son afectados. Las operaciones que son identificadas.

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”.

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

40 Encapsulamiento Abstracción que permite ignorar los detalles no esenciales de un objeto, manteniendo un modelo simplificado.

41 Encapsulamiento El 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.

42 Encapsulamiento Toda clase tiene una serie de atributos y métodos asociados a ella. 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.

43 Encapsulamiento

44 Polimorfismo 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.

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.

46 Herencia Una clase (clase hija) puede heredar, de otra clase (clase padre): Atributos y Métodos

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)

48 Clases como abstracciones
Las clases son abstracciones que representan a un conjunto de objetos con un comportamiento e interfaz común. Clase: Atributos Representan el estado de un objeto (Variables de ejemplar) Métodos Representan el comportamiento de un objeto. (Funciones miembro).

49 Instancias - Objetos Una Instancia u Objeto es una ocurrencia o representante de la clase. Es una variable del tipo de una clase.

50 Ejemplo de instancia de objetos
Clase: Estudiante Declarativa: Estudiante A, B Objeto: B Objeto: A Métodos Inscribir Consultar Nombre: Juan Métodos Inscribir Consultar Nombre: María

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.

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.

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. POO Procedural Objeto. Instanciación de objetos Variable. Declaración de variables.

54 Inicio y fin de Objetos Cada objeto es responsable de inicializarse y destruirse en forma correcta. Un objeto consta de: Un tiempo de vida. Estado. Comportamiento(s). Atributos Métodos

55 Tiempo de vida de un objeto
La duración de un objeto en un programa siempre está limitada en el tiempo. 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.

56 Estado de un objeto 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.

57 Comportamiento de un objeto
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.

58 Mensaje Mecanismo por el cual se solicita una acción sobre el objeto.
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.

59 Ambiente procedimental
Ejemplo Considerar la siguiente acción en el computador: Al presionar una tecla, para que aparezca el carácter en la pantalla Ambiente procedimental Ambiente OO Se identifican las funciones que resuelven el problema. Se identifican los objetos que interactúan.

60 Ambiente Procedimental
Esperar, hasta que una tecla es presionada. Obtener el valor de la tecla. Escribir el valor de la tecla en la posición actual del cursor. Avanzar la posición del cursor.

61 Procedimental Procedimiento 1 D A T O S Procedimiento 2

62 Ambiente Orientado a Objeto
Tecla 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.

63 POO Métodos DATOS

64 Conceptos de la POO La POO trata de amoldarse al modo de pensar del hombre y no al de la máquina. Conceptos fundamentales que sustentan la POO: Clase Objeto Instancia Atributos Métodos

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.

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.

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.

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.

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.

70 Clases y Objetos Objeto Clase María Persona

71 Objetos y mensajes 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.

72 Tipos de mensajes 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.

73 ¿Qué es una Clase? 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.

74 Variables (características)
Clases 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) Métodos (conductas)

75 Clases 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.

76 Clases La clase está formada entonces por:
Variables de instancia, también conocidas como variables de objeto o variables de estado. Métodos, utilizados por las variables de instancia o de estado para lograr un objetivo.

77 Sintaxis 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étodo1 Definición de método2 ... Definición de otros métodos ... }

78 Uso 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();

79 Definiendo la clase Persona
public 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.

80 Pilares de la Orientación a Objetos
Abstracción Relaciones Encapsulamiento Herencia

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. El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.

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. Otro de los pilares de la orientación a objetos es el encapsulamiento. Para entender este principio veamos un ejemplo práctico: Como todos ustedes se imaginarán, no es necesario ser mecánico de automóviles para poder manejar uno. Si el comprender cómo es el funcionamiento interno del motor, la dirección, los frenos, los cilindros, etc. fuera requisito para poder manejar un automóvil, serían muchos menos los conductores certificados y sería mucho más difícil aprender a manejar. Es más, si a cualquier automotriz se le ocurriera cambiar el funcionamiento interno de alguna de estas cosas, probablemente todos los conductores tendrían que volver a aprender como funciona el nuevo componente interno para poder seguir manejando sin problemas. Por suerte esto no es así, ya que la complejidad interna del funcionamiento de un automóvil está escondida de los conductores (usuarios). Para poder interactuar con el automóvil, éste nos expone una interfaz sencilla y definida, que no cambia nunca por más que cambien internamente el funcionamiento de sus componentes. Esta interfaz está compuesta por el volante, los pedales, la palanca de cambios, el asiento, etc. De esta forma decimos que el automóvil ha encapsulado su complejidad interna.

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

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.

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.

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. Clase Base El propósito principal de la herencia es el de organizar mejor las clases que componen una determinada realidad, y poder agruparlas en función de atributos y comportamientos comunes a la vez que cada una se especializa según sus particularidades. Cabe aclarar además que hay dos tipos de herencias: Herencia Simple: una clase derivada puede heredar sólo de una clase base (los lenguajes .NET soportan este tipo de herencia) Herencia Múltiple: una clase derivada puede heredar de una o más clases base (C++ es un ejemplo de lenguaje que soporta este tipo de herencia). Clases Derivadas o subclases

87 Herencia 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.

88 Herencia (2) public class A Clase A { hereda }
public class B extends A public class C extends B hereda Clase B hereda Clase C

89 Herencia (3) public class A { } public class B extends A
Clase A Si no encontró abajo busca aquí. public class A { } public class B extends A public class C extends B Clase B Si no encuentra busca aquí. Clase C Cuando se usa un método, lo busca aquí primero.

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

91 Sobreescritura (Overriding)
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.

92 Sobreescritura Escribir un método en la subclase que tenga el mismo nombre y parámetros que su superclase. Applet paint(Graphics g ) PersonApplet paint(Graphics g )

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.

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.

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; }

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.

97 Mé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

98 Sintaxis general de un método
public tipoRetorno nombreMetodo( TipoParam1 param1, TipoParam2 param2,...) { tipo1 varLocal1; tipo2 varLocal2; ... estatuto1; estatuto2; ... }

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); }

100 Llamadas a mé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);

101 Llamadas a métodos (2) Un método llama a otro de otra clase:
Forma general: objeto.metodo(parametros); Ejemplos: maria.dameTuEdad(); cuentaBancaria.deposita(1000);

102 Encapsulamiento 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.

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.

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; }}

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);

106 Definición de clase Persona sin constructor
public 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 )}}

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)

108 Clases y Objetos Mamiferos perro Clase Objeto

109 Clases y Objetos 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.

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.

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”

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.

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 }

114 C# - Propiedades Propiedad: característica o atributo de un objeto
class CtaCte { int balance; public int Balance get return balance; } set balance = value; CtaCte cc = new CtaCte(); cc.Balance = 100; //Asignación Mostrar(cc.Balance); //Obtención Las propiedades permiten implementar el encapsulamiento, impidiendo el acceso directo a los atributos de una clase y proporcionando un mecanismo para poder obtener y asignar sus valores. Nótese que como VB.NET no distingue entre mayúsculas y minúsculas no es posible utilizar para el miembro de la clase el mismo nombre que para la Propiedad. Sin embargo, es importante que ambos tengan nombres significativos para la lógica de la aplicación. No se recomienda el agregado de prefijos o sufijos a los nombres.

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.

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.

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

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

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.

120 Resumen sobre métodos públicos y privados
acceso\modificador sin modificador public private protected private protected misma clase subclase no clase ajena Distintos modificadores y restricciones que imponen a las variables y a los métodos

121 Ejemplo public 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;    } }

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.

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.

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.

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.

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);    } }

127 Ejemplo de instancia La variable R, es de tipo reloj
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

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á.

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);    }

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);    } }

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.”

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

133 ¿ De que clase heredaría la clase Hidroavión ?
Interfaces (2) Suponiendo que estamos en un entorno donde sólo se soporta la herencia simple, ante la jerarquía de clases planteadas: ¿ De que clase heredaría la clase Hidroavión ? En teoría debería heredar tanto de Vehículo-Aéreo (ya que tiene atributos y comportamientos propios de un avión, como “cantidad de alas” y “despegar”) como de Vehículo-Acuático (ya que también tiene atributos y comportamientos propios de un barco, como por ejemplo “capacidad de flotación” y “navegar”). Ahora bien, como la herencia múltiple no se encuentra soportada según los parámetros del problema debemos buscar otra solución. Aquí es donde el concepto de interfaces se vuelve de gran utilidad. ¿ De que clase heredaría la clase Hidroavión ?

134 Interfaces (3) Se crean las interfaces que definen comportamiento.
Hidroavión deberá definir los comportamientos de cada una de las interfaces que implemente. Una interfaz define un contrato de comportamientos que una clase debe cumplir al implementarla. Los comportamientos declarados en la interfaz no tienen cuerpo ni funcionalidad, son sólo “firmas” que las clases que implementen la interfaz deberán completar. De esta forma, si bien no podemos lograr que la clase derivada herede todos los atributos y comportamientos de su clase base, podemos al menos “obligar” a que implemente el conjunto de funcionalidades definidas en la interfaz. Una clase puede implementar tantas interfaces como desee, y una interfaz puede ser implementada por tantas clases como se desee.

135 Polimorfismo 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í.

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 Aquí tenemos un ejemplo práctico de la implementación de polimorfismo en un diseño orientado a objetos. Por un lado tenemos la clase base “Transporte”, que posee los métodos “Avanzar” y “Frenar”. Por otro lado tenemos tres clases distintas derivadas de la clase “Transporte”, cada una de las cuales podrá sobrescribir la implementación de los métodos Avanzar y Frenar para que su comportamiento sea más específico. Ahora bien, como todas heredan de la misma clase base, las clases derivadas pueden ser tratadas genéricamente. Esto quiere decir que podríamos tener un array que almacene objetos de tipo Transporte, y recorrerlo luego para llamar al método “Avanzar” de cada uno. De esta forma, en tiempo de codificación es imposible saber a qué método “Avanzar” se está llamando en realidad (al del Auto? Al del caballo? Al del transbordador?), sino que esta decisión es tomada en tiempo de ejecución en base al tipo particular de objeto que esté instanciado. En pseudocódigo, esto se escribiría de la siguiente manera: Definir arrayTransportes (3) de tipo Transporte arrayTransportes(1) = nuevo Automóvil() //Un automóvil ES UN TIPO DE transporte arrayTransportes(2) = nuevo Transbordador() //Un Transbordador ES UN TIPO DE transporte arrayTransportes(3) = nuevo Caballo() //Un Caballo ES UN TIPO DE transporte Por Cada (Transporte t en arrayTransportes) t.Avanzar() t.Frenar() Fin

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! UML es un lenguaje visual de modelado y documentación de sistemas, tan utilizado en el mundo de desarrollo orientado a objetos que se ha convertido casi en un estándar “de facto”. A partir de está filmina, todos los diagramas que hagamos serán diagramas UML.

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 “–”

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.

140 Identificación de clases
¿Qué hace que un modelo de clases sea bueno? Cada comportamiento que requiera el sistema debe ser proporcionado por los objetos de las clases que se elijan. 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.

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: Diseño dirigido por los datos. Diseño dirigido por la responsabilidad.

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.

143 Identificación de nombres
Se procede en dos etapas: Identificar las clases candidatas seleccionando todos los nombres y locuciones nominales de la especificación de requisitos del sistema. Descartar candidatas inapropiadas, renombrando las clases restantes, si es necesario.

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.

145 Tarjetas CRC Se almacenan: El nombre de la clase Las responsabilidades
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.

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.

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.

148 Representación de una clase en UML.
Atributos de una clase Describen los datos contenidos en un objeto de la clase. Representación de una clase en UML.

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.

150 Ejemplo de diagrama de clases:
Una Cuenta Corriente posee como características: balance Puede realizar las operaciones de: depositar girar El diseño asociado es:

151 Vista de la clase en el modelo

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.

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).

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.

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: 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". 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.

156 Ejemplo de Agregación

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:

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.

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.

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.

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

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


Descargar ppt "IMPLEMENTACION DE APLICACIONES INTERNET I"

Presentaciones similares


Anuncios Google