Está en la página 1de 26

Introduccin a la Orientacin a Objetos

Programacin orientada a objetos


Es un paradigma de programacin que usa objetos y sus interacciones, para disear aplicaciones y programas informticos. Est basado en varias tcnicas, incluyendo herencia, abstraccin, polimorfismo y encapsulamiento. Su uso se populariz a principios de la dcada de los aos 1990. En la actualidad, existe variedad de lenguajes de programacin que soportan la orientacin a objetos.

Qu es un Objeto?
Informalmente, un objeto representa una entidad del mundo real Entidades Fsicas

(Ej.: Vehculo, Casa, Producto)

Entidades Conceptuales

(Ej.: Proceso Qumico, Transaccin Bancaria) (Ej.: Lista Enlazada, Interfaz Grfica)

Entidades de Software

Qu es un Objeto?
Definicin Formal :

Un objeto es un concepto, abstraccin o cosa con un significado y lmites claros en el problema en cuestin

Un objeto posee :

Estado Comportamiento Identidad

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), adems de las conexiones que puede tener con otros objetos

Un objeto posee Comportamiento


Lo que el objeto puede hacer El comportamiento de un objeto determina cmo ste acta 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 mtodos

Un objeto posee Identidad


Cada objeto tiene una identidad nica, incluso si su estado es idntico al de otro objeto

Qu es una Clase?
Una clase es una descripcin de un grupo de objetos con:

Propiedades en comn (atributos) Comportamiento similar (operaciones) La misma forma de relacionarse con otros objetos (relaciones) Una semntica en comn (significan lo mismo) Enfatiza las caractersticas relevantes Suprime otras caractersticas (simplificacin)

Una clase es una abstraccin que:

Un objeto es una instancia de una clase

Objetos y Clases
Una clase es una definicin abstracta de un objeto

Define la estructura y el comportamiento compartidos por los objetos Sirve como modelo para la creacin de objetos

Los objetos pueden ser agrupados en clases

Ejemplo de una Clase


Clase: Curso Estado (Atributos)

Nombre Ubicacin Das Ofrecidos Horario de Inicio Horario de Trmino Agregar un Alumno Borrar un Alumno Entregar un Listado del Curso Determinar si est Completo

Comportamiento (Mtodos)

Modificadores de Acceso
Permiten definir el nivel de acceso (visibilidad) de los miembros (atributos o mtodos) de una clase

Publico: Cualquier clase puede ver los miembros pblicos de otra clase Privado: Slo la clase puede ver sus propios miembros privados

Existen otros dos modificadores para propsitos especficos (Paquete, Protegido)

Qu es UML?
UML es un lenguaje visual para especificar, construir y documentar sistemas (OMG - Object Management Group) Unified (UNIFICADO):

El aporte de muchos mtodos y notaciones Independiente de implementaciones, plataformas y lenguajes Los modelos son utilizados en todas las ingenieras Si hay gente, requieren comunicarse. Si se tienen que comunicar, se tienen que entender. Para entenderse necesitan un lenguaje comn

Modeling (MODELADO):

Language (LENGUAJE):

UML no es Metodologa!

Una Clase en UML


Una clase est compuesta de tres secciones

La primera seccin contiene el nombre de la clase La segunda seccin muestra la estructura (atributos) La tercera seccin muestra el comportamiento (operaciones)

Curso -nombre -ubicacion -dias -inicio -fin +AgregarAlumno() +BorrarAlumno() +GenerarListadoCurso() +EstaCompleto()

La segunda y la tercera seccin pueden ser suprimidas Modificadores de Acceso

Los miembros pblicos se denotan con el signo + Los miembros privados se denotan con el signo

Pilares de la Orientacin a Objetos

Abstraccin

Relaciones

Herencia

Encapsulamiento

Abstraccin
Ignorancia Selectiva

La abstraccin nos ayuda a trabajar con cosas complejas Se enfoca en lo importante Ignora lo que no es importante (simplifica)

Una clase es una abstraccin en la que:


Se enfatizan las caractersticas relevantes Se suprimen otras caractersticas

Una clase debe capturar una y solo una abstraccin clave

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 implementacin interna Permite exponer el estado del objeto slo a travs del comportamiento que le hayamos definido mediante miembros pblicos Por qu es til?

Punto de Control/Validacin Mejor respuesta ante los Cambios

Relaciones
Todo sistema abarca muchas clases y objetos Los objetos contribuyen en el comportamiento de un sistema colaborando entre si

La colaboracin se logra a travs de las relaciones Asociacin Agregacin

Existen dos tipos principales de relaciones

Relaciones de Asociacin
Una asociacin es una conexin entre dos clases que representa una comunicacin

Una asociacin puede tener nombre La comunicacin puede ser tanto uni como bidireccional (por defecto) La multiplicidad es el nmero de instancias que participan en una asociacin
Una Persona es Duea de un Vehculo Un Vehculo Pertenece a una Persona
Persona -dueo Vehiculo

Ejemplo:

Relaciones de Agregacin
La agregacin es una forma especial de asociacin donde un todo se relaciona con sus partes

Tambin se conoce como una parte de o una relacin de contencin Una Puerta es una parte de un Vehculo El Vehculo es azul, la Puerta es Azul Mover el Vehculo implica mover la Puerta
Vehiculo -color +Mover() Puerta

Ejemplo:

Herencia
Clase Base

Es una relacin 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:

Transporte -pasajeros +Avanzar() +Detenerse()

Los atributos de la clase base adems de los propios Soporta todos o algunos de los mtodos de la clase base

Automvil

Avin

Una subclase hereda de una clase base

Clases Derivadas o subclases

Herencia
Herencia Es-Un: herencia real, donde la subclase es un tipo especfico de la superclase

Un Cuadrado es un Rectngulo Un perro es un mamfero Un automvil es un vehculo a motor

Interfaces (1/3)
Recurso de diseo soportado por los lenguajes orientados a objetos que permite definir comportamiento Permite que clases que no estn estrechamente relacionadas entre s deban tener el mismo comportamiento La implementacin de una interfaz es un contrato que obliga a la clase a implementar todos los mtodos definidos en la interfaz

Interfaces (2/3)
Vehiculo

Aereo

Acuatico

Terrestre

Avin

Barco

Automvil

De que clase heredara la clase Hidroavin ?

Interfaces (3/3)
Se crean las interfaces que definen comportamiento Hidroavin deber definir los comportamientos de cada una de las interfaces que implemente
interface Acuatico +Navegar() interface Aereo +Volar()

Hidroavion

Polimorfismo
Es la propiedad que tienen los objetos de permitir invocar genricamente un comportamiento (mtodo) cuya implementacin ser delegada al objeto correspondiente recin en tiempo de ejecucin El polimorfismo tiende a existir en las relaciones de herencia, pero no siempre es as

Polimorfismo - Ejemplo
La definicin del mtodo reside en la clase base La implementacin del mtodo reside en la clase derivada La invocacin es resuelta al momento de ejecucin
Transporte Avanzar Frenar

Transporte
Avanzar Frenar
Transporte Avanzar Frenar Transporte Avanzar Frenar