Vous êtes sur la page 1sur 21

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

Tema 1

Introduccin a la Programacin Orientada a Objetos

1. La Evolucin de la Programacin La evolucin de la programacin responde a dos razones fundamentales: Primero, el adelanto de la tecnologa sobre la cual se programa y segundo, los nuevos enfoques de diseo de los lenguajes de programacin, orientados a hacer la tarea del programador ms natural. En esta evolucin se puede notar la influencia de lenguajes de programacin con ciertas caractersticas distintivas: Los lenguajes mquina, de bajo nivel, de alto nivel, estructurados, con mecanismos de abstraccin y orientados a objetos. 1.1. Lenguajes de Mquina y Lenguajes de Bajo Nivel Los primeros programas fueron escritos directamente en cdigos de mquina o en secuencias de patrones de bits. Esto dio lugar a los lenguajes ensambladores o de bajo nivel, que utilizan smbolos y mnemotecnia para expresar los cdigos de mquina subyacentes. Sin embargo, pese a que estos lenguajes eran justificables debido a la poca velocidad de procesamiento y poca memoria que tenan las mquinas en aquel entonces (los aos 50) tenan una serie de desventajas: a) b) c) d) Eran difciles para el programador. Utilizaban una gran cantidad de instrucciones para realizar una tarea. Eran dependientes de la mquina. Se escriban utilizando una sintaxis muy poco parecida al lenguaje natural.

1.2. Lenguajes de Alto Nivel Para lidiar con las desventajas inherentes de los lenguajes de bajo nivel, surge el primer lenguaje de programacin de alto nivel llamado FORTRAN (FORmula TRANslation), desarrollado entre 1954 y 1957 por un equipo de IBM y diseado principalmente para la programacin cientfica. Muchas de las caractersticas que introdujo FORTRAN en su momento se mantienen como un estndar en los lenguajes de programacin actuales, como por ejemplo:

Universidad de Carabobo

Facultad Experimental de Ciencias y Tecnologa

Departamento de Computacin Pg. 1

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

a) Los arreglos. b) Los ciclos controlados por una variable indexada. c) Los condicionales anidados. Luego fue desarrollado por el Departamento de Defensa de los EEUU entre 1959 y 1960 el lenguaje de programacin COBOL (COmmon Business-Oriented Languaje), el cual fue adoptado para el registro de operaciones a gran escala y operaciones comerciales. COBOL estuvo orientado a que las personas sin conocimiento de programacin lo pudieran utilizar, sin embargo esto complic su sintaxis y legibilidad. Pese a su poca aceptacin por la comunidad acadmica, los aportes de este lenguaje fueron significativos: a) Los registros. b) La separacin de las estructuras de datos de la seccin de ejecucin de un programa. Al mismo tiempo, entre 1958 y 1960 nace el lenguaje Algol60 (ALGOrithmic Languaje) como un lenguaje general y expresivo para la descripcin algoritmos, tanto en la investigacin como en las aplicaciones prcticas. Los aportes de este lenguaje fueron los siguientes: a) b) c) d) Bloques de inicio y fin. Declaraciones de tipo para las variables. Recursin. Paso de parmetros por valor.

Un aporte importante hecho por otro de los primeros lenguajes de alto nivel, LISP (LISt Processor), fue ser pionero en el concepto de recoleccin de basura. A partir de estos lenguajes, en la dcada de los 60s surgen una gran cantidad de lenguajes de alto nivel, los cuales en su gran mayora han desaparecido, y slo pocos tuvieron un efecto significativo en los lenguajes de programacin actuales, como por ejemplo BASIC (Beginners All-purpose Symbolic Instruction Code), diseado en 1964, el cual todava se sigue usando en escuelas y negocios, y SNOBOL (StriNg Oriented symBOlic Languaje), el cual fue uno de los primeros en manejar cadenas. Ahora bien, los lenguajes de alto nivel tambin presentaron una serie de desventajas, entre las cuales se incluyen: a) Los proyectos grandes resultan difciles de desarrollar, mantener y depurar. b) Dificultades para la programacin en equipo. c) Escaso grado de reutilizacin.
Universidad de Carabobo Facultad Experimental de Ciencias y Tecnologa Departamento de Computacin Pg. 2

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

d) Variables accesibles desde cualquier punto e) Saltos incondicionales: GOTOs. 1.3. Lenguajes Estructurados Como consecuencia a las desventajas observadas en los lenguajes diseados hasta el momento, en la dcada de los 70s, surgi un nuevo enfoque en el diseo de lenguajes de programacin, el cual inclua simplicidad y consistencia. De este nuevo enfoque surgen los lenguajes estructurados, entre los cuales se encuentran dos lenguajes de gran importancia: Pascal (1971) y C (1972). Entre las caractersticas de los lenguajes estructurados se destacan: a) Intentan solventar los problemas detectados en los lenguajes tradicionales. b) Se eliminan los saltos incondicionales y se adopta una estrategia modular, donde cada variable tiene un mbito en la cual es accesible. c) Aparecen los procedimientos, como cajas negras que reciben datos, realizan operaciones y devuelven resultados. d) La solucin a un problema se plantea en trminos de procedimientos, cada uno de los cuales resuelve un subproblema. Las ventajas de los lenguajes estructurados son muchas, sin embargo se destacan tres: a) Se facilita la gestin de grandes proyectos software. b) La programacin modular facilita la programacin en equipo. c) Facilita la reutilizacin del cdigo en distintos proyectos. Sin embargo, presentan ciertas desventajas tales como: a) El desconocimiento del cmo dividir un problema en subproblemas: Cmo se identifican los subproblemas?, Hasta cundo hay que subdividir el problema? b) Si un procedimiento resuelve parte de un problema mayor Ser fcil que pueda reutilizarse en otros problemas, o ser demasiado dependiente y especfico de aquel? c) Se introduce una nueva forma de programacin spaghetti: Muchos procedimientos que se llaman entre ellos. 1.4. Lenguajes con Mecanismos de Abstraccin de Datos Tambin en la dcada de los 70s se comienza a experimentar con mecanismos de abstraccin de datos, de aqu surge el concepto de TDA (Tipo de Dato Abstracto). Debido al nuevo enfoque adoptado
Universidad de Carabobo Facultad Experimental de Ciencias y Tecnologa Departamento de Computacin Pg. 3

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

por los diseadores de lenguajes de programacin, en esta dcada se experiment ampliamente con mecanismos de abstraccin de datos, concurrencia y verificacin (demostracin de la correctitud de un programa), lo cual influye en que en los aos 80s se introdujeran lenguajes con mecanismos para el manejo de TDAs: ADA y Modula-2. ADA, cuyo nombre fue colocado en honor a la primera programadora, introduce el concepto de paquete como un mecanismo de abstraccin de datos y tarea como herramienta para la concurrencia, mientras que anlogamente Modula-2 introduce los conceptos de mdulo y corrutina. Entre las ventajas de estos lenguajes se encuentran: a) Los TDAs son fcilmente identificables en un problema: Representan entidades matemticas (vector, punto, polinomio, funcin, entre otras) o estructuras de datos (pilas, colas, listas, entre otras). b) Un TDA no resulta especfico de ningn problema, por tanto es fcil su reutilizacin. c) Los TDAs son elegantes, legibles y fciles de depurar. Igualmente, tambin presentan ciertas desventajas: a) Un TDA no es en general una estructura del lenguaje de programacin, por tanto es fcil cometer errores en su construccin. b) Se puede presentar repeticin de cdigo entre TDAs similares. c) Tradicional limitacin a estructuras de datos y objetos matemticos. 1.5. Lenguajes Orientados a Objetos Hacia los aos 80 el inters se desva a la Programacin Orientada a Objetos (POO) con la emisin de la versin final de Smalltalk en 1980, y se incrementa con el crecimiento de C++, creado por Bjarne Stroustrup en los laboratorios Bell. En 1995 aparece Java, creado por Sun Microsystems, el cual ms adelante fue revisado para poder utilizarlo en la Web. El enfoque orientado a objetos toma como elemento bsico al objeto, el cual es un ente real o abstracto con ciertas caractersticas y funcionalidades que lo definen. Mediante este enfoque, un sistema complejo puede ser descompuesto en una serie de entes autnomos ms simples que colaboran entre s para lograr un propsito. Este alto grado de abstraccin hizo exitosos a los lenguajes orientados a objetos. Los lenguajes orientados a objetos formalizan el concepto de TDA e introducen nuevos mecanismos como la herencia y el polimorfismo.
Universidad de Carabobo Facultad Experimental de Ciencias y Tecnologa Departamento de Computacin Pg. 4

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

Entre sus ventajas se encuentran: a) El desarrollo de aplicaciones es muy sencillo e intuitivo. b) El cdigo es muy elegante, fcil de comprender y mantener. c) Los objetos son completamente independientes, por tanto la facilidad para la programacin en equipo y la reutilizacin son muy altos. Su principal desventaja es la dificultad, en un primer momento, de resolver un problema bajo este nuevo esquema, ya que implica un cambio de mentalidad con respecto a la programacin tradicional. 2. Anlisis Orientado a Objetos (AOO) y Diseo Orientado a Objetos (DOO) Para poder pensar en la programacin orientada a objetos, primero hay que cambiar la forma en que se analiza y se disea el software, de forma tal que se tenga en cuenta que el modelo a seguir es el modelo de objetos.

Anlisis Orientado a Objetos Es un mtodo de anlisis que examina los requisitos desde la perspectiva de las clases y objetos que se encuentran en el vocabulario del dominio del problema (Booch, 2007).

En la etapa de anlisis del problema, bajo el enfoque orientado a objetos se debe realizar un proceso de identificacin de objetos que consiste en identificar en la descripcin del problema los nombres (sustantivos). El producto de este anlisis se usa como bloque de construccin para realizar el diseo orientado a objetos.

Diseo Orientado a Objetos Es un mtodo de diseo que abarca el proceso de descomposicin orientada a objetos y una notacin para describir los modelos lgico y fsico, as como los modelos esttico y dinmico del sistema que se disea (Booch, 2007).

En esta etapa de diseo se utilizar la notacin UML (Unified Modeling Language) y se har enfoque en los diagramas de clases que representan solamente el modelo esttico del sistema. Luego de tener un diseo orientado a objetos se puede realizar la implementacin mediante la programacin orientada a objetos.

Universidad de Carabobo

Facultad Experimental de Ciencias y Tecnologa

Departamento de Computacin Pg. 5

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

3. Programacin Orientados a Objetos (POO) Vivimos en un mundo de objetos: Casas, carros, rboles, personas, animales, entre otras cosas. Debido a esto, nuestra mente est acostumbrada a estructurar la realidad en base a objetos o entidades, las cuales son las unidades bsicas de la memoria. Sin embargo, antes de la aparicin de los lenguajes orientados a objetos, los lenguajes de programacin se basaban en acciones (verbos) en lugar de cosas u objetos (sustantivos) (Deitel y Deitel, 2004), y por lo tanto obligaban al programador a estructurar los problemas en base a acciones, pese a que naturalmente su percepcin de la realidad es en base a objetos. Con la introduccin de la Programacin Orientada a Objetos el proceso de programacin se ha vuelto ms natural y ha dado como resultado un mayor grado de productividad.

Programacin Orientada a Objetos Es un mtodo de implementacin en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son, todas ellas, miembros de una jerarqua de clases unidas mediante relaciones de herencia (Booch, 2007).

3.1. Objetivos Fundamentales Este paradigma tiene como objetivos fundamentales los siguientes (Meyer, 1999): a) Reutilizacin: Capacidad del software de servir para la construccin de cuantiosas aplicaciones diferentes. b) Extensibilidad: Facilidad de adaptar el software a los cambios de especificacin. c) Correccin: Capacidad del software para realizar con exactitud sus tareas, tal y como se definen en las especificaciones. d) Robustez: Capacidad del software de reaccionar adecuadamente ante condiciones excepcionales. Complementa a la correccin, caracterizando lo que ha de suceder fuera de las especificaciones. 3.2. Elementos Fundamentales El modelo orientado a objetos est orientado a modelar entidades del mundo real, debido a esto tiene cuatro elementos fundamentales: a) b) c) d) Abstraccin. Encapsulamiento. Modularidad. Jerarqua.
Facultad Experimental de Ciencias y Tecnologa Departamento de Computacin Pg. 6

Universidad de Carabobo

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

Segn Booch (2007), si alguna de estas cuatro propiedades falta, el modelo no es orientado a objetos. a) Abstraccin: La abstraccin es la propiedad que permite representar las caractersticas esenciales de un objeto, sin preocuparse de las restantes caractersticas (no esenciales) (Joyanes, 1996). Definir una abstraccin significa describir una entidad del mundo real, no importa lo compleja que pueda ser, y a continuacin utilizar esta descripcin en un programa. Existen varias formas de abstraccin que pueden ser aplicadas sobre una entidad, las ms relevantes son: (1) Abstraccin de entidades, la cual permite tomar las caractersticas esenciales que pueden describir a un objeto y (2) Abstraccin Funcional, la cual est orientada al funcionamiento o comportamiento del objeto. En la programacin orientada a objetos, esta propiedad es aplicada por las clases. b) Encapsulacin o Encapsulamiento: Es el proceso de almacenar en un mismo compartimento los elementos de una abstraccin que constituyen su estructura y su comportamiento; sirve para separar la interfaz contractual de una abstraccin y su implantacin (Booch, 2007). Esta propiedad que permite asegurar que el contenido de la informacin de un objeto est oculto del mundo exterior (Joyanes, 1996). Es un mecanismo que restringe el acceso a los componentes de un objeto permitiendo as la ocultacin de informacin. La POO logra el encapsulamiento mediante mecanismos de control de acceso a los datos, a los cuales se accede slo mediante su interfaz de la clase, la cual permite separar el qu hace una abstraccin del como lo hace. c) Modularidad: Es la propiedad que permite subdividir una aplicacin en partes ms pequeas llamadas mdulos, cada una de las cuales debe ser tan independiente como sea posible de la aplicacin en s y de las restantes partes (Joyanes, 1996). En POO los mdulos son llamados clases. d) Jerarqua: La jerarqua es una clasificacin u ordenacin de abstracciones (Booch, 2007). Las dos jerarquas de un sistema complejo son la generalizacin/especializacin, que son logradas mediante la herencia, y la agregacin (Joyanes, 1996). Existen tambin tres elementos secundarios: Tipos, concurrencia y persistencia. Estos elementos no son tan importantes para la POO como los anteriores, pero vale la pena nombrarlos. a) Tipos (tipificacin): Los tipos son la puesta en vigor de la clase de los objetos, de modo que los objetos de tipos distintos no pueden intercambiarse o, como mucho, pueden intercambiarse de formas muy restringidas (Booch, 2007). b) Concurrencia: Es la propiedad que distingue un objeto activo de uno que no est activo (Booch, 2007). c) Persistencia: Es la propiedad de un objeto por la que su existencia trasciende el tiempo (es decir, el objeto continua existiendo despus de que su creador deja de existir) y/o el espacio (es decir, la posicin del objeto vara con respecto al espacio de direcciones en el que fue creado).

Universidad de Carabobo

Facultad Experimental de Ciencias y Tecnologa

Departamento de Computacin Pg. 7

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

3.3. Clase, Instancia y Objeto

Clase Una clase es una descripcin de la organizacin y las acciones compartidas por uno o ms objetos similares (Armstrong, 1996).

De acuerdo a esta definicin, una clase est estructurada por la abstraccin de las caractersticas y funcionalidades relevantes compartidas por un conjunto de objetos que son parte de un sistema. Las caractersticas comunes a todos los objetos se conocen como atributos de la clase, y las funcionalidades se conocen como los mtodos de la clase.

Operacin y Mtodo Una operacin es una invocacin que se hace sobre un objeto, esto es, la declaracin de un procedimiento, mientras que un mtodo es el cuerpo del procedimiento. Generalmente estos trminos se utilizan de manera indistinta, pero en ciertas ocasiones es til ser precisar su diferencia (Fowler, 2004).

En conjunto, a los atributos y mtodos de una clase se les conoce como miembros de la clase. Se puede pensar en una clase como una plantilla o molde para crear objetos. Ejemplo: Persona - nombre - cedula + mostrarNombre + mostrarCedula + cambiarNombre + cambiarCedula Nombre de la clase Atributos (visibilidad nombre: tipo = valor predeterminado)

Mtodos (visibilidad nombre(parmetros): retorno {propiedades})

Instancia Dado que una clase representa las caractersticas y funcionalidades compartidas por un conjunto de entes, se puede decir que cuando se le da un valor especifico a cada caracterstica, se est describiendo a un ente particular del conjunto. A este ente particular se le llama instancia.

Universidad de Carabobo

Facultad Experimental de Ciencias y Tecnologa

Departamento de Computacin Pg. 8

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

Al crear una instancia de una clase, se le da un valor a cada uno de sus atributos, por ejemplo, para la clase persona una posible instancia es la siguiente: nombre = Carlos Prez y cedula = 12345678.

Objeto Un objeto es un elemento individual e identificable, ya sea real o abstracto, el cual contiene una serie de datos que lo definen y las descripciones de cmo pueden ser manipulados dichos datos (Armstrong, 1996).

De acuerdo a esta definicin cada objeto creado es una instancia de su clase y est formado por tantos campos como atributos tiene la misma. Todo objeto tiene estado, comportamiento e identidad. El estado de un objeto abarca todas las propiedades del mismo ms los valores actuales de cada una de esas propiedades. El comportamiento es cmo acta y reacciona un objeto, en trminos de sus cambios de estado y paso de mensajes. La identidad es aquella propiedad de un objeto que lo distingue de todos los dems objetos Ejemplo: a: Persona nombre = Carlos Prez cedula = 12345678 Nombre del objeto seguido del nombre de la clase Atributos y sus valores = estado del objeto

Debe tomarse en cuenta que durante la ejecucin de un programa se pueden crear varios objetos de una misma clase. 3.4. Mecanismos de Encapsulacin: Modificadores de Control de Acceso, Interfaz y Mensajes

Modificador de Control de Acceso Un modificador de control de acceso es un mecanismo determina el nivel de proteccin de los atributos y mtodos de una clase, esto es, define quien puede acceder a los mismos (Ceballos, 2003).

Existen tres modificadores de control de acceso: privado, protegido y pblico. Un miembro declarado como privado es accesible solamente por los mtodos de su propia clase, un miembro declarado como protegido es accesible por los mtodos de su propia clase y los de sus

Universidad de Carabobo

Facultad Experimental de Ciencias y Tecnologa

Departamento de Computacin Pg. 9

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

subclases, y un miembro de una clase que haya sido declarado como pblico es accesible por los mtodos de su propia clase y por los mtodos de cualquier otra clase o subclase. Debido al encapsulamiento presente en una clase, los detalles de su implementacin quedan ocultos y por lo tanto debe existir alguna forma de poder interactuar con los objetos definidos de la misma. Este mecanismo es la interfaz de la clase.

Interfaz de Clase Es el conjunto de todos los atributos y operaciones que son visibles al mundo exterior (Egger, 2008).

De cada objeto solo se conoce su apariencia externa, es decir, su interfaz, y solamente mediante la interfaz de la clase se puede tener acceso y modificar el estado de un objeto sin necesidad de conocer los detalles de su implementacin. La interfaz presenta las operaciones que pueden ser invocadas para as ejecutar un mtodo. Ahora bien, la comunicacin con un objeto mediante su interfaz se conoce como paso de mensajes. Mensaje Un mensaje es una llamada a un mtodo hecha por un objeto emisor hacia un objeto receptor (Poo, 2008).

Los objetos se comunican unos con otros mediante el envo de mensajes, los cuales responden mediante la ejecucin de un mtodo. En OO cuando un objeto recibe un mensaje, ste puede reaccionar de dos maneras: a) Si el mensaje corresponde a un tratamiento definido en la clase del objeto, el protocolo del mtodo correspondiente se ejecuta. El objeto ha respondido en este caso al mensaje que se le ha enviado. b) El objeto rechaza el mensaje sealando que ha ocurrido un error. Esto quiere decir que cuando un objeto recibe un mensaje, reacciona de forma inmediata al mismo y avisa al programador en cado de que haya ocurrido un error. Cada objeto es responsable del control y la ejecucin de los mensajes que se le aplican, en consecuencia, es responsable de su comportamiento, lo cual permite detectar de forma rpida y fcil los errores.

Universidad de Carabobo

Facultad Experimental de Ciencias y Tecnologa

Departamento de Computacin Pg. 10

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

3.5. Miembros de una Clase: Atributos y Mtodos Como se mencion anteriormente, los elementos estructurales de una clase son los atributos y los mtodos. stos son obtenidos al aplicar el proceso de abstraccin sobre algn ente. En particular, los atributos se obtienen de la abstraccin de datos y los mtodos de la abstraccin funcional.

Atributo Los atributos constituyen la estructura interna de los objetos de una clase (Ceballos, 2003); son un conjunto de variables que describen el estado de un objeto (Joyanes, 1996).

Los atributos son los elementos esenciales que comparte un conjunto elementos presentes en algn problema de programacin. Los elementos esenciales de un objeto podran ser diferentes dependiendo de la naturaleza del problema que se est abordando.

Mtodo Un mtodo es una coleccin de sentencias que ejecutan una tarea especfica, se implementa en una clase y determina cmo debe actuar un objeto cuando recibe un mensaje vinculado con ese mtodo (Ceballos, 2003).

Existen dos mtodos especiales que puede tener una clase: a) Constructor: Un constructor es un mtodo especial cuya funcin principal es inicializar nuevos objetos de su clase (Ceballos, 2003). Existe un tipo especial de constructor llamado constructor copia, el cual se invoca para inicializar un nuevo objeto creado a partir de otro existente (Ceballos, 2003). b) Destructor: Un destructor es un mtodo especial de una clase, el cual es llamado cuando se destruye un objeto. Este no recibe parmetros ni retorna valor alguno (Deitel & Deitel, 2009). 3.6. Miembros Estticos Cuando se crea un objeto de una clase, ste guarda una copia de cada uno de sus atributos. Un atributo declarado como esttico es un atributo de la clase, el cual almacena informacin comn a todos los objetos de la clase, pero no pertenece a ninguno, y existe aunque no existan objetos de la clase.

Universidad de Carabobo

Facultad Experimental de Ciencias y Tecnologa

Departamento de Computacin Pg. 11

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

De acuerdo a esto se puede decir que los atributos de una clase pueden ser clasificados como: a) Atributos o Variables de instancia, cuando pertenecen a cada objeto de la clase. b) Atributos o Variables de clase, cuando son estticos y en consecuencia pertenecen solamente a la clase y no a los objetos que se creen de la misma. Si el valor de un atributo es comn a todos los miembros de la clase, es conveniente declararlo como esttico para evitar copias innecesarias en cada uno de los objetos de dicha clase. Un mtodo declarado como esttico es un mtodo de la clase. Este tipo de mtodo no es ejecutado para un objeto en particular, y por lo tanto no puede acceder a los atributos no estticos de un objeto. 3.7. Miembros Constantes Al declarar un atributo como constante se evita que ste pueda ser modificado accidentalmente por algn mtodo. Cuando se declara un mtodo como constante se evita que este pueda ser redefinido, por ejemplo, por una subclase. Esto implica que todo mtodo llamado de forma directa o indirecta desde un mtodo de tipo constante, debe ser a su vez constante. 3.8. Relaciones entre las clases Existen diferentes tipos de relaciones entre clases, entre ellos los ms relevantes son: Asociacin, agregacin, composicin y generalizacin.

Asosiacin
1 Clase A * Clase B Clase A 1

Agregacin
* Clase B

Composicin
1 Clase A * Clase B Clase A

Generalizacin
Clase B

Representacin UML de las diferentes relaciones entre clases.

Universidad de Carabobo

Facultad Experimental de Ciencias y Tecnologa

Departamento de Computacin Pg. 12

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

Los caracteres que aparecen en ambos extremos de las lneas definen la cardinalidad de la relacin. En la prctica existen 3 tipos habituales de cardinalidad en una relacin: a) Uno a uno. b) Uno a muchos. c) Muchos a muchos. Las relaciones de uno a uno denotan una relacin estrecha. Por ejemplo en una operacin de venta con tarjeta se encontrara una relacin de uno a uno entre la clase Venta y la clase TransaccionTarjetaCrdito, ya que cada venta corresponde exactamente con una transaccin y viceversa. En el caso de una relacin de uno a muchos se tiene el ejemplo de las clases Venta y Producto: En una venta se pueden vender mltiples productos. Las relaciones de muchos a muchos tambin son habituales, por ejemplo, si se tienen las clases Vendedor y Cliente, un vendedor puede interactuar con muchos clientes y cada cliente puede interactuar con muchos vendedores.

Asociacin Es una dependencia semntica entre clases que de otro modo seran independientes (Booch, 2007).

Las asociaciones son relaciones estructurales que describen una conexin entre las clases de un sistema. Son el tipo de relacin ms general, pero tambin el de mayor debilidad semntica. Normalmente representan relaciones del tipo igual/igual o cliente/servidor. El establecimiento de una asociacin define los roles (papeles) o dependencias entre objetos de dos clases y sus cardinalidades (multiplicidad); es decir, cuantas instancias (ejemplares) de cada clase pueden estar implicadas en una asociacin. Por ejemplo, si se piensa en las clases Profesor y Estudiante, se puede decir que una relacin entre ambas sera que el profesor le da clase al estudiante o que el estudiante ve clase con el profesor.

Profesor

1..*

DaClase

1..*

Estudiante

Universidad de Carabobo

Facultad Experimental de Ciencias y Tecnologa

Departamento de Computacin Pg. 13

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

Esta relacin es de muchos a muchos ya que un profesor le puede dar clase a uno o ms estudiantes y cada estudiante puede ver clase con uno o ms profesores. Otro ejemplo de una asociacin podra darse entre las clases Profesor y Universidad.

Jefe

Tiene

Empleado

Esta relacin es de uno a muchos ya que un jefe puede tener de cero a muchos empleados y un empleado puede tener un solo jefe.

Agregacin Es una forma de asociacin que especifica una relacin todo/parte entre un agregado (el todo) las partes que lo componen (Rumbaugh, 2000).

La agregacin denota un tipo de relacin parte de (part of) o tiene un (has a). Por ejemplo, en un sistema se pueden tener las clases Estudiante y Seccin, se puede ver que un estudiante es parte de una seccin. Inclusive, el estudiante puede ser parte de varias secciones y en caso de disolverse alguna seccin, los estudiantes que pertenezcan a la misma seguirn existiendo como parte del sistema y podran estar en alguna otra seccin.
1..* Seccin 1..* Estudiante

Composicin Es una forma de asociacin de agregacin con fuerte sentido de posesin y tiempo de vida coincidente con las partes del conjunto. (Rumbaugh, 2000).

En este tipo de relacin, que al igual que la agregacin es de todo/parte, el compuesto (el todo) es el nico responsable de gestionar sus partes, por ejemplo su asignacin y desasignacin, esto implica que cada una de las partes puede pertenecer solamente a una composicin.

Universidad de Carabobo

Facultad Experimental de Ciencias y Tecnologa

Departamento de Computacin Pg. 14

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

Por ejemplo, si en un sistema se tienen las clases Libro y Capitulo, se puede intuir que un libro est compuesto por captulos, y si se elimina un objeto de la clase libro, la existencia de sus partes, que son los captulos no tiene sentido. Tambin se puede notar que un captulo puede pertenecer a un nico libro, en caso de que esto no ocurriera y un captulo pudiera pertenecer a varios libros, al eliminar una instancia de la clase Libro se eliminaran captulos que podran pertenecer a otra instancia de la clase Libro.
1 Libro 1..* Captulo

Otros ejemplos son: Urbanizacin y casa, titular y cuenta bancaria, cuenta bancaria y movimientos, inmueble y habitaciones, polgono y lnea, entre otros.
1 Urbanizacin * Casa

Generalizacin Es una relacin taxonmica entre un elemento ms general y un elemento ms especfico, que se construye sobre l y lo extiende. (Rumbaugh, 2000).

Al elemento ms general se le llama padre y al elemento ms especfico se le llama hijo. Este ltimo es completamente consistente con el elemento padre ya que tiene todas sus propiedades, miembros y relaciones, y adems puede contener informacin adicional. Uno de los propsitos de la generalizacin es permitir la descripcin incremental de un elemento que comprarte las caractersticas de sus antecesores. Esto se llama herencia. 3.9. Herencia y Polimorfismo

Herencia Es un mecanismo mediante el cual unos elementos ms especficos incorporan la estructura y el comportamiento definido por otros elementos ms generales. (Rumbaugh, 2000).

Ejemplo: Se tienen las clases Profesor y Estudiante.


Universidad de Carabobo Facultad Experimental de Ciencias y Tecnologa Departamento de Computacin Pg. 15

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

Ambas abstracciones comparten ciertas caractersticas tales como nombre, apellido, cdula, fecha de nacimiento, gnero, entre otras, por lo tanto se puede construir una clase ms general que contenga todas estas caractersticas comunes y as evitar cdigo duplicado. Existen dos tipos de herencia: Herencia simple y herencia mltiple. La herencia simple se da cuando una clase se deriva de una sola clase base; la herencia mltiple se da cuando una clase derivada hereda de varias clases base (posiblemente no relacionadas) (Deitel & Deitel, 2009).

Herencia Simple
Persona Profesor

Herencia Mltiple
Estudiante

Profesor

Estudiante

Preparador

Mediante la herencia, las clases hijas heredan los atributos y mtodos de sus padres, los cuales pueden ser sobrescritos. Ahora bien, cmo un objeto invoca al mtodo que el corresponde?

Polimorfismo Es la habilidad que tienen diferentes objetos para invocar el mtodo apropiado en respuesta a un mismo mensaje (Poo, 2008).

Existen dos tipos de polimorfismo: Polimorfismo esttico y polimorfismo dinmico. El polimorfismo esttico y el polimorfismo dinmico son soportados por la ligadura esttica y dinmica de mtodos respectivamente.

Ligadura Esttica y Dinmica Los lenguajes imperativos utilizan ligadura esttica, esto significa que los tipos de variables, expresiones y funciones se conocen en tiempo de compilacin (Joyanes, 1996). Por el contrario, los lenguajes orientados a objetos utilizan ligadura dinmica, la cual permite determinar en tiempo de ejecucin el mtodo a llamar para un objeto particular de una subclase dependiendo del argumento (Puntambekar, 2010).

Universidad de Carabobo

Facultad Experimental de Ciencias y Tecnologa

Departamento de Computacin Pg. 16

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

Polimorfismo Esttico Cuando se aplica el polimorfismo esttico, el compilador resuelve en tiempo de compilacin que implementacin debe llamar para mtodos que comparten el mismo nombre (Sarang, 2009). Este tipo de polimorfismo usa ligadura esttica y se implementa utilizando tcnicas de sobrecarga: a) Sobrecarga de Mtodos: La sobrecarga permite definir diferentes mtodos con un mismo nombre, siempre y cuando tengan signaturas diferentes (Deitel & Deitel, 2009). Cuando un mtodo es sobrecargado, el compilador decide que implementacin utilizar al examinar el nmero, tipo y orden de los parmetros en la llamada al mtodo. b) Sobrecarga de Operadores: La sobrecarga de operadores permite la redefinicin del significado asignado por defecto a los operadores regulares en un contexto determinado (Sarang, 2009). Un ejemplo de esto es el operador suma (+), que puede ser utilizado para las clases Entero, Real, Complejo y Cadena. Polimorfismo Dinmico Cuando se aplica polimorfismo dinmico, el compilador retrasa hasta el tiempo de ejecucin la decisin sobre cual implementacin se debe llamar para un mtodo (Sarang, 2009). El polimorfismo dinmico es implementado mediante la creacin de mtodos con el mismo nombre a travs de la jerarqua de clases, por lo cual, no necesitan tener signaturas diferentes. En este caso el mtodo de la superclase es sobrescrito por el mtodo de la subclase. A estos mtodos que son sobrescritos se les denomina mtodos virtuales. Ejemplo:
Animal

Perro

Gato

Cerdo

La clase animal puede tener un mtodo llamado hablar, el cual imprime en . El mtodo se puede sobrescribir en la clase Perro para que escriba Guau, en la clase Gato para que escriba Miau y en la clase Cerdo para que escriba Oink.
Universidad de Carabobo Facultad Experimental de Ciencias y Tecnologa Departamento de Computacin Pg. 17

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

Existen mtodos que son comunes a todas las subclases, pero su implementacin no es comn o puede ser muy general, por lo cual solamente se declaran en la clase abstracta, mas no se definen. Estos mtodos son llamados mtodos virtuales puros o mtodos abstractos, y no tienen cuerpo (Ceballos, 2003). Los mtodos abstractos slo son declarados mas no definidos dentro de la clase, por lo cual la misma queda de alguna manera incompleta. A estas clases se les denomina clases abstractas. Las clases abstractas no pueden ser instanciadas, su finalidad es definir miembros comunes que heredan sus subclases, tambin llamadas clases concretas, las cuales tienen la responsabilidad de definir cada mtodo virtual puro. Ejemplo: Se tiene la clase Cuenta, y sus subclases CuentaCorriente y CuentaAhorro. La clase Cuenta tiene un mtodo llamado calcularIntereses(). Como no existe una forma general de calcular intereses, sino que depende de a qu tipo de cuenta se le calculan, la superclase no define este mtodo, sino que cada subclase la define a conveniencia.

Cuenta
- saldo: Real + depositar(cantidad: Real) + calcularIntereses()

Clase Abstracta

CuentaCorriente
- descubiertoMaximo: Real + calcularIntereses()

CuentaAhorro
+ calcularIntereses()

Clases Concretas

El mtodo calcularIntereses(), es un mtodo abstracto. 3.10. Clase Asociacin Existen asociaciones que requieren cierta informacin adicional a la que normalmente suministran, esto es, cuando un enlace debe tener sus propios atributos y mtodos. En este caso se utiliza una clase asociacin.

Universidad de Carabobo

Facultad Experimental de Ciencias y Tecnologa

Departamento de Computacin Pg. 18

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

Clase Asociacin Es una asociacin que tambin es una clase (Rumbaugh, 2000).

Ejemplo: Se quiere crear un sistema que tome en cuenta los mdicos, clnicas en las que trabajen y los horarios de consulta.

1..*

TrabajaEn

1..*

Clnica

Mdico

Horario

Como un mdico puede trabajar en varias clnicas, debe tener horarios diferentes en cada una, igualmente cada clnica tiene muchos mdicos trabajando en diferentes horarios, lo que hace que un horario no pueda ser particular de una clnica o de un mdico sino de la relacin que los une a ambos. Leyenda = Definicin = Nota importante 4. Referencias Armstrong, D. J. (1996). The Quarks of Object-Oriented Development. Communications of the ACM. 49(2). 123 128. Booch, G., Maksimchuk, R. A., Engle, M. W., Young, B. J., Conallen, J., Houston, K. A. (2007). Object-Oriented Analysis and Design with Applications (Tercera ed.). Massachusetts, USA: Pearson Education Inc. Ceballos, F. J. (2003). Java 2: Curso de Programacin (Segunda ed.). Mxico D.F., Mxico: Alfaomega Grupo Editor S.S. de C.V. Deitel, Harvey M. y Deitel, Paul J. (2004). Cmo programar en C/C++ y Java. Pearson Education.
Universidad de Carabobo Facultad Experimental de Ciencias y Tecnologa Departamento de Computacin Pg. 19

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

Deitel, Paul. y Deitel, Harvey. (2009). Cmo Programar en C++ (Sexta ed.). Estado de Mxico, Mxico: Pearson Educacin de Mxico, S.A. de C.V. Egger, Markus. (1999). Advanced Object Oriented Programming with Visual FoxPro 6.0. Hentzenwerke Publishing. Fowler, Martin. (2004). UML Distilled (Tercera ed.). Addison-Wesley. Joyanes, L. (1996). Programacin Orientada a Objetos (Segunda ed.). Madrid, Espaa: McGraw-Hill Interamericana de Espaa S.A. LaLonde, W. R. y Pugh, J. R. (1990). Inside Smalltalk, Volume I. New Jersey, USA: Prentice-Hall, Inc. Louden, Kenneth C. (2004). Lenguajes de Programacin: Principios y Prctica. International Thomson Editores S.A. Poo, D., Kiong, D. y Swarnalatha, A. (2008). Object-Oriented Programming and Java (Segunda ed.). Londres, Inglaterra: Springer. Rumbaugh, J., Jacobson, I. y Booch G. (2000). El Lenguaje Unificado de Modelado. Pearson Education.

Universidad de Carabobo

Facultad Experimental de Ciencias y Tecnologa

Departamento de Computacin Pg. 20

Algoritmos II

Introduccin a la Programacin Orientada a Objetos

Resumen de UML: Diagrama de Clases

Clase NombreClase
Privado Pblico Protegido + atributo1: NombreClase1 # atributo2: NombreClase2 - atributo3: NombreClase3 + metodo1(p1: C1, p2: C2): ClaseRetorno Atributos

Clase con sus Atributos y Mtodos Suprimidos NombreClase


Nota: Cuando se coloca la clase sin los compartimientos de atributos y mtodos no significa que estos no existan, solamente que por simplicidad no se han dibujado y se encuentran definidos en otro lugar.

Mtodos

Clase sin Atributos NombreClase

Clase sin Mtodos NombreClase


- atributo: NombreClase1

Clase sin Atributos ni Mtodos NombreClase

+metodo(p1: C1, p2: C2):ClaseRet

Relaciones entre Clases


Asociacin Agregacin Composicin Son asociaciones especiales

Multiplicidad de las Relaciones entre Clases


La multiplicidad se coloca como un intervalo de la forma minimo..mximo donde mnimo y mximo son nmeros enteros positivos, o bien mximo es * que denota un lmite superior no acotado. Si el intervalo tiene un nico tamao se coloca nmero La expresin * es equivalente a 0..*

Generalizacin/Especializacin

Adornos de una Asociacin


Multiplicidad

Clase1

3..* rol de Clase1

Nombre

NombreAsociacin

Direccin

* rol de Clase2

Clase2

Rol

Objeto nombreObjeto: NombreClase


atributo1 = valor1 atributo2 = valor2

Clase Asociacin Clase1 Clase3 Clase2

Universidad de Carabobo

Facultad Experimental de Ciencias y Tecnologa

Departamento de Computacin Pg. 21

Vous aimerez peut-être aussi