Vous êtes sur la page 1sur 35

Sistemas de informacin

PROGRAMACIN ORIETADA A
OBJETOS
Introduccin

Paradigma: Ejemplo ilustrativo, enunciado modelo


Programacin imperativa
Programacin funcional
Programacin lgica

Nuevo Paradigma:
Programacin Orientada a Objetos (POO)

4
Introduccin
Los problemas suelen tener varias soluciones posibles.
En programacin existen diversas metodologas que nos
ayudan a enfrentar un problema.
Cada metodologa tiene diversos lenguajes que las
soportan.
Algunos lenguajes soportan varias metodologas.

Metodologa Lenguaje
Estructurada Fortran, C, Pascal, Basic
Orientada a objetos (OOP) C++, Java, Smalltalk
Orientada a eventos VisualBasic
POO

Facilita la creacin de software de calidad pues


sus caractersticas potencian:
La mantencin
La extensin y
La reutilizacin del software generado bajo este
paradigma

La POO se basa en la idea natural de un mundo


lleno de objetos y que la resolucin de problemas
se realiza mediante el modelo de objetos

6
POO

La visin de Objetos:
Mesas
Sillas
Computadores
Autos
Cuentas bancarias
Partidos de ftbol
Perros, etc

7
POO

Los objetos se pueden Organizar segn su


necesidad
Mamferos : Perro, Ciervo
Telfonos : Fijo, Celular
Deportes : Ftbol, Tenis
Vehculos : Automvil, Camin

8
Programacin Orientada a Objetos
Definicin:
La Programacin Orientada a Objetos (OOP) es un
mtodo de programacin en el cual los programas se
organizan en 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.
Comentarios:
Usamos objetos en lugar de algoritmos como bloque fundamental
Cada objeto es una instancia de una clase
Las clases estn relacionadas entre s por relaciones tan
complejas como la herencia
Ventajas de la POO

Proximidad de los conceptos modelados


respecto a objetos del mundo real
Facilita la reutilizacin de cdigo
Y por tanto el mantenimiento del mismo
Se pueden usar conceptos comunes durante
las fases de anlisis, diseo e implementacin
Disipa las barreras entre el qu y el cmo
Desventajas de la POO

Mayor complejidad a la hora de entender el


flujo de datos
Prdida de linealidad
Requiere de un lenguaje de modelizacin de
problemas ms elaborado:
Unified Modelling Language (UML)
Representaciones grficas ms complicadas
Conceptos de la OOP
Conceptos bsicos Tipos de relaciones
Objeto Asociacin
Clase Herencia

Caractersticas de la OOP Agregacin

Abstraccin: Instanciacin
Encapsulamiento:
Modularidad: Representaciones grficas
Jerarqua Diagramas estticos (de
clases, de objetos...)
Otros conceptos OOP
Diagramas dinmicos (de
Tipos
interaccin...)
Persistencia
Objeto y Clase
Un objeto es algo de lo Una clase describe los
que hablamos y que objetos del mismo tipo
podemos manipular Todos los objetos son
Existen en el mundo real (o instancias de una clase
en nuestro entendimiento del Describe las propiedades y el
mismo) comportamiento de un tipo de
objetos

Objeto:Clase Clase
Atributo1=valor Atributos
Atributo2=valor
... Operaciones
Instancias-Objetos

Una Instancia es una ocurrencia de la clase

Al momento de crear un objeto se produce la


instanciacin

Un Objeto es una instancia de una Clase especfica

14
Instancias-Objetos

EJEMPLO:
Suponer que existe la clase Vehculo

El auto patente WF-4631 es una instancia de la


clase Vehculo, o sea, un objeto de esa clase

La camioneta patente ZT-9283 es otra instancia


de la clase Vehculo

15
Atributos

Son los datos que caracterizan a los objetos de una


clase y determinan el estado de un objeto

Marca
Ao
Color
Patente, etc.

16
Mtodos

Representan todas aquellas acciones que se


pueden realizar sobre un objeto de cierta clase
En la implementacin, estos mtodos son segmentos
de cdigo en la forma de funciones
La clase Vehculo puede incluir los mtodos:
Encender
Acelerar
Virar
Frenar

17
Principios de la POO

Propiedades, que lo llevan a ser un estilo de


desarrollo que permite crear cdigo re-utilizable

Abstraccion
Encapsulamiento
Herencia
Polimorfismo

18
Conceptos OOP: Abstraccin
Nos permite trabajar con la complejidad del mundo real
Resaltando los aspectos relevantes de los objetos de una clase
Ocultando los detalles particulares de cada objeto
Separaremos el comportamiento de la implementacin
Es ms importante saber qu se hace en lugar de cmo se
hace:
Un sensor de temperatura
Se define porque...
mide la temperatura
nos muestra su valor
se puede calibrar...
No sabemos... (no nos importa)
cmo mide la temperatura
de qu est hecho
cmo se calibra
Conceptos OOP: Encapsulamiento

Ninguna parte de un sistema complejo debe


depender de los detalles internos de otra.
Complementa a la abstraccin
Se consigue:
Separando la interfaz de su implementacin
Ocultando la informacin interna de un objeto
Escondiendo la estructura e implementacin de los
mtodos (algoritmos).
Exponiendo solo la forma de interactuar con el
objeto
Conceptos OOP: Encapsulamiento

Ejemplo: Un paralelogramo

Vemos que se puede... No vemos...


Construir con: Como est representado
4 puntos (y restricciones) internamente
1 punto y 2 vectores 4 puntos?
1 punto, 1 vector, 1 1 punto y 2 vectores?
ngulo y 1 lado
...
Transformaciones:
Escalado Como se modifica su escala

Rotacin Guardando el factor?


Desplazamiento Escalando en el momento?
Dibujar Idem para rotacin, traslacin,
etc...
Conceptos OOP: Modularidad
Consiste en separar el sistema en bloques poco
ligados entre s: mdulos.
Organizacin del cdigo
Es una especie de encapsulamiento de ms alto nivel.
El C++ no lo impone aunque lo soporta
(namespace)
El Java es ms formal (packages)
Difcil pero muy importante en sistemas grandes.
Suele aplicarse refinando el sistema en sucesivas
iteraciones
Cada mdulo debe definir una interfaz clara
Conceptos OOP: Modularidad
Conceptos POO: Jerarqua

Es una clasificacin u ordenamiento de las


abstracciones
Hay dos jerarquas fundamentales:
Estructura de clases:
Jerarqua es un/a
Relaciones de herencia
Estructura de objetos:
Jerarqua parte de
Relaciones de agregacin
Est implementada de manera genrica en la estructura de
clases
Conceptos OOP: Jerarqua
Ejemplo: Figuras planas y diagramas
Una figura plana es: Herencia simple
Algo con una posicin en el Un cuadrado es una figura
plano
Un crculo es una figura
Escalable
Rotable

Un grfico es algo que se Herencia mltiple


puede dibujar en 2D es una figura
es un grfico
Un diagrama es un conjunto Agregacin
de cuadrados y crculos
Relaciones
Estn presentes en cualquier sistema
Definen como se producen los intercambios de
informacin y datos
Tambin ayudan a comprender las
propiedades de unas clases a partir de las
propiedades de otras
Existen 4 tipos de relaciones:
Asociacin
Herencia
Agregacin
Instanciacin
Relacin de Asociacin
Relacin ms general
Denota una dependencia semntica
Es bidireccional
Primer paso para determinar una relacin
ms compleja
Ejemplo: Relacin entre un producto y una venta. Cualquier venta
est asociada a un producto, pero no es, ni forma parte de, ni
posee ningn producto al menos en una primera aproximacin.

Cardinalidad: multiplicidad a cada lado


Uno a uno: Venta-Transaccin
Uno a muchos: Producto-Venta
Muchos a muchos: Comprador-Vendedor
Relacin de Herencia
Relacin caracterstica de la OOP!
Puede expresar tanto especializacin
como generalizacin
Evita definir repetidas veces
las caractersticas comunes a
varias clases
Una de las clases comparte la estructura
y/o el comportamiento de otra(s)
clase(s).
Tambin se denomina relacin es un/a
(is a)
Relacin de Herencia (vocabulario)
Clase base o superclase: clase de la cual se hereda
Clase derivada o subclase: clase que hereda
Herencia simple: Hereda de una sola clase
Herencia mltiple: Hereda de varias clases
Java solo la soporta parcialmente
Presenta diversos problemas (qu hacer cuando se hereda
ms de una vez de la misma clase?)
Clase abstracta: La que no lleva, ni puede llevar,
ningn objeto asociado
Polimorfismo: Posibilidad de usar indistintamente
todos los objetos de un clase y derivadas.
Relacin de Herencia (ejemplo)
Equiltero
Polimorfismo

Clase abstracta Tringulo Issceles

Figura plana
Escaleno
Herencia simple

Rectngulo Cuadrado

Superclase Subclase
Relacin de Agregacin

Una clase contiene a otra


clase
sta es parte de aqulla.
Tambin se denomina
relacin es parte de (has a)
Una clase puede contener a otra:
Por valor: Cuando los objetos de la clase contenida
se crean y destruyen al mismo tiempo que los de la
clase continente
Por referencia: Cuando no necesariamente ocurre lo
anterior
Relacin de Agregacin

Un coche est hecho de


Volante
Volante

Palanca de cambio
Motor Marchas
Ruedas
Coche
Motor

Ruedas
Relacin de Instanciacin

En determinados casos una clase (p.ej. un


vector) puede implementarse
independientemente del tipo (real, complejo,
color...) de alguno de sus atributos:
Tipo
Definimos una clase
parametrizada o template Vector
(plantilla)
Para cada uno de los tipos
que necesitemos
VectorColores VectorEnteros
definimos una nueva <Color> <int>
clase Instanciacin
Representaciones grficas
Nos sirven para comunicarnos con otros usuarios o
desarrolladores.
Documentan nuestro sistema
Hay mltiples vistas y tipos de diagramas:
Estticos
Diagramas de clases Los de los ejemplos
Diagramas de objetos
...
Dinmicos:
Diagramas de estado: Muestra el ciclo de vida de los objetos,
sistemas, etc...
Diagramas secuenciales: Muestra como los objetos interaccionan
entre ellos
...

Vous aimerez peut-être aussi