Sei sulla pagina 1di 62

Programación Orientada a

Objetos

Mag. Rosa Macaione

Mag. Rosa Macaione~ Programación Orientada a Objetos


Temario

Outline

Motivación

Introducción
Crisis del Software
Paradigmas

Másdetalles de POO
Origen
Definiciones
Conceptos promovidos por POO

UML

Mag. Rosa Macaione~ Programación Orientada a Objetos


Motivación

Introducir conceptos de la POO.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Durante las primeras generaciones de
computadoras, el costo de fabricación
era muy alto. El desarrollo de software
a escala era muy bajo.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Crisis del Software

Pero . . .

con el tiempo, las computadoras fueron más


complejas y los costos de fabricación
fueron reduciendo. Esto ocasiona mayor
demanda de software.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Crisis del Software

Cuál fue el problema?

La mayor demanda de software y el


mantenimiento de los mismos. Esto da
inicio a la crisis del software.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Temario Motivación Introducci´on M´as detalles de POO UML

Crisis del Software

En busca de un software de calidad


�Confiabilidad lo cual se relaciona con la corrección
(funcionalidad vs. especificación) y robustez (buena
performance ante situaciones
críticas/excepcionales)
�Extensibilidad facilidad de adaptarse a los cambios de
requerimientos
�Reutilización capacidad para que porciones de un sistema
pueda usarse en otros.
� Facilidad de uso
�Portabilidad capacidad que el sistema funcione en/con otras
plataformas (SO, BD, otros)
� Eficiencia
� Oportunidad
Mag. Rosa Macaione~ Programación Orientada a Objetos
� Costo
Temario Motivación Introducci´on UML

Paradigmas

Programación Estructurada

Propuesto por Bohm-Jacopini, todo programa puede


escribirse usando tres instrucciones de control: secuencia,
iteración, instrucción condicional.
Ventajas
� Programas sencillos y rápidos
� Programas fáciles de entender
� Facilidad de mantenimiento
Desventajas
� Se obtiene un solo bloque de código
� Muchas más!!!

Mag. Rosa Macaione~ Programación Orientada a Objetos


Temario Motivación Introducci´on M´as detalles de POO UML

Paradigmas

Programación Modular
Propone dividir un programa en un conjunto de
módulos o subprogramas los cuales son
programados, verificados y mantenidos en forma
individual.
Ventajas
� Facilidad de desarrollo
� Facilidad de mantenimiento
� Es posible la reusabilidad
� Es posible lograr programas

entendibles Desventajas
� El programa se ejecuta en forma secuencial
� Datos separados de las operaciones
Mag. � Dificultad
Rosa Macaione~ deOrientada
Programación manejo de múltiples instancias
a Objetos
Paradigmas

POO

En la programación estructurada/modular los


algoritmos se describen en base a procesos. POO
encara la resolución de problema a través de un
conjunto de objetos que colaboran entre ellos
mediante mensajes.

Entre otros lenguajes que son orientados a


Objetos podemos mencionar Smalltalk, C++, C#,
Java, Python, Ruby.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Temario Motivación Introducci´on M´as detalles de POO UML

Paradigmas

Más de POO

POO es un paradigma que se basa en conceptos previos como


abstracción y ocultamiento de información. Pero también
incorpora la herencia, polimorfismo y otros conceptos.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Temario Motivación Introducci´on M´as detalles de POO UML

Paradigmas

Importante

Programación estructurada/modular
data structures + algorithms = Program
POO
objects + messages = Program

Mag. Rosa Macaione~ Programación Orientada a Objetos


Paradigmas

Pros y contras de POO


Ventajas
� Reusabilidad

� Mantenimiento

� Prueba, depuración

� Encapsulamiento
� Enfoque natural

Desventajas
� Código excesivo
� Poco recomendable para problemas sencillos
� Falta de Motores de BD que adopten el paradigma
� Costo de desarrollo
Mag. Rosa Macaione~ Programación Orientada a Objetos
Paradigmas

Características de un programa OO

� Un programa es un conjunto de objetos que


interactuan mediante mensajes.
� Cada objeto tiene un tipo (clase) que le dice que
mensajes acepta
� Todos los objetos de una misma clase admiten los
mismos mensajes
� Los objetos son entidades independientes
� Cada objeto se crea construyendo un agregado
de otros objetos

Mag. Rosa Macaione~ Programación Orientada a Objetos


UM

Paradigmas

Objeto - Definición

Qué es?
Es una entidad real o abstracta de la cual se almacenan
datos y la forma de manipular los mismos.
Es una instancia de una clase.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Temario Motivación M´as detalles de POO UML

Paradigmas

Objeto - Características

Cuales son?
� Estado: define la situación del mismo en un
instante de tiempo. Los valores que toma un
objeto se almacenan en variables internas
llamadas atributos.
� Comportamiento: describe las acciones y
reacciones de un objeto. Es la manera que éste
reacciona ante mensajes o estímulos recibidos.
Las formas de respuesta se denominan métodos
y corresponde a procedimientos/funciones.
� Identidad: es lo que diferencia un objeto de otros.
Esta se otorga en el momento de su creación y es
Mag. Rosa Macaione~ Programación Orientada a Objetos
independiente del estado.
Paradigmas

Cómo funciona POO?

Un objeto contiene toda la información que permite


definirlo e identificarlo de otros objetos (de otras
clases o de la misma). Además, tiene métodos que
favorecen la comunicación entre ellos, permitiendo
el cambio de estado.
Importante
Los métodos y atributos están estrechamente
relacionados. Debemos pensar en ambos
conceptos, sin separarlos ni dar más importancia
a uno que a otro.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Paradigmas

Un ejemplo

Figure: Clase y Objeto

Mag. Rosa Macaione~ Programación Orientada a Objetos


Origen

Inicios

Los conceptos de la Programación Orientada a Objetos


se originan con el lenguaje para simulaciones Simula67,
creado por Dahl y Nygaard del Centro de Cómputo de
Noruega.
En dicho centro y durante una simulación de naves
tuvieron la idea de agrupar diversos tipos de naves en
clases de aviones donde cada una de ellas pudiese definir
sus propios datos y comportamiento.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Origen

Línea de tiempo

� Dichos conceptos fueron refinados en Smalltalk,


inicialmente desarrollado en Simula.
�Como estilo de programación, tiene más adeptos en los
80s debido a la influencia de C++, y gracias también
al auge de interfaces gráficas
Para esa época da sus primeros pasos la Programación
Orientada a Objetos dirigida por Eventos (Visual
Basic, entre otros).

Mag. Rosa Macaione~ Programación Orientada a Objetos


Origen

Línea de tiempo-2

� Las características de orientación a objetos fueron


agregados a muchos lenguajes entre ellos BASIC, PASCAL,
FOXPRO, entre otros.

� Gracias al auge de Internet y la implementación de la


máquina virtual de JAVA en los navegadores, ´este es
uno de los lenguajes orientados a objetos más usados en
la actualidad.

PHP también ha sido modificado a lo largo de sus


versiones soportando en versiones actuales las
características de POO.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Definiciones

Clase y Objeto

Una clase es una plantilla a partir de la cual se crean objetos.


Es una pieza de software que incluye una especificación de
datos y funciones que operan sobre los mismos (Drozdek,
2007).

Un objeto es una instancia de una clase. Es una entidad


creada usando una definición de clase.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Definiciones

Más de objeto

Un objeto es una entidad que posee un conjunto


de propiedades o atributos (datos) y
comportamiento o funcionalidad (métodos). Es una
instanciación de una clase.
Qué es la instanciación?
Es la lectura de las definiciones de una clase y la
creación de un objeto de dicha clase.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Definiciones

Diferencia entre objeto y clase

Un objeto es algo concreto, aunque pueda ser


tanto real como abstracto. Una clase es una
abstracción del concepto que engloba a todos los
objetos (Fontela, 2004).
Ejemplo
País, idioma, libro, automóvill son clases. En
tanto, Argentina, inglés, Condorito de Oro,
Ford Ka chapa XXX666 son objetos.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Definiciones

Método y Atributo

Método
Algoritmo (operación) asociado a un objeto, el cual
se ejecuta luego de recibir un mensaje.
A nivel comportamiento, un método es lo que el
objeto puede hacer.
Un método puede modificar los datos de las
propiedades, mostrarlos, enviar un mensaje a
otro objeto, etc.
Propiedad o atributo
Es un contenedor de un tipo de dato asociado a un
objeto.
El dato asociado a la propiedad o atributo puede ser
alterado por la ejecución de algún método.
Mag. Rosa Macaione~ Programación Orientada a Objetos
Definiciones

Mensaje y estado interno

Mensaje
Es la comunicación dirigida a un objeto para que
éste ejecute uno de sus métodos con
determinados parámetros.
Estado interno
Son los atributos declarados como privados, los
cuales pueden ser accedidos por algún método
del objeto y no son visibles al usuario que
trabaja con instancias de la clase.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Definiciones

Finalmente . . .

Si buscamos puntos en común entre Programación


Imperativa y POO, podemos decir:
Importante
Una variable en POO es un contenedor de un
atributo de un objeto.
Una función (procedimiento) es un método del
objeto.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Introducción

Como se mencionó anteriormente, POO promueve


ciertas técnicas.

Mag. Rosa Macaione~ Programación Orientada a Objetos


abstracción

La noción de abstracción consiste en


descomponer un Sistema en sus partes más
importantes, así como describir las mismas con un
lenguaje sencillo y preciso.
Puede aplicarse este concepto a tavés de los TDA,
los cuales especifican el tipo de datos que se
guarda, las operaciones que se realizan con ellos
y los parámetros de las operaciones. Un TDA
especifica qué hace cada operación, no cómo lo
hace.
En JAVA se puede expresar un TDA mediante una
interfaz.
Mag. Rosa Macaione~ Programación Orientada a Objetos
Un ejemplo de Interfaz

A continuación, mostramos una interfaz en JAVA


public interface Transportable{
public int weight;
public boolean IsHazardous;
}

Mag. Rosa Macaione~ Programación Orientada a Objetos


Temario Motivación

Conceptos promovidos porPOO

Por qué es importante la abstracción?

A través de la abstracción es posible desarrollar


sistemas conectando/uniendo componentes
desarrollados por terceros. Para esto, necesitamos
saber qué hace el componente, no cómo lo hace.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Ocultamiento de Información

Este concepto permite el desarrollo de software de


forma tal que cliente (o consumidor del componente)
no pueda usar la estructura de datos y los algoritmos
subyacentes.
Es decir . ..
se pueden usar las interfaces definidas por el
programador, no la implementación.

Mag. Rosa Macaione~ Programación Orientada a Objetos


¿Por qué es importante el ocultamiento
de Información?

Al menos dos motivos:


� Permite cambios de implementación: dado que el
cliente no puede tener acceso a las estructuras
de datos y algoritmos, es posible modificar el
sistema a futuro sin que esto ocasione efectos
secundarios / cambios en las aplicaciones
cliente.
� Evita violaciones de acceso a datos internos
Se oculta la implementación para que el
cliente no sea dependiente de la misma.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Reutilización y extensión

La reutilización es el uso de clases u objetos


desarrollados y probados, para el desarrollo de
nuevas aplicaciones/componentes. La extensión es
el uso de clases previamente desarrolladas, para el
desarrollo de nuevas clases.
De todas maneras, la extensión es una forma de
reutilización

Mag. Rosa Macaione~ Programación Orientada a Objetos


Agregación

Existe agregación cuando un objeto se relaciona con otros objetos,


ambos con existencia propia.

Ejemplo

En el caso de carrera universitaria y alumnos. Si elimino una


carrera, esto no implica la eliminación de todos los alumnos ya que
éstos pueden cursar otras carreras además de la eliminada.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Composición

Si bien es una técnica previa a POO, la composición permite definir


un objeto como una composición de otros. Si el objeto compuesto
deja de existir, los objetos componentes, no tienen sentido su
existencia.

Ejemplo

En el caso de un alumno y sus notas finales de todas las


materias que cursó. Si deja de existir dicho alumno, sus notas
tampoco deberían existir.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Ejemplo Composición

public class clsNota{


// faltan los atributos!!!
// public getNota();
// faltan más métodos }
public class clsListaNota{
// private clsNota[] lista;
// faltan más atributos!!!
// public
getMuestraNotas();
// faltan más métodos }

Mag. Rosa Macaione~ Programación Orientada a Objetos


Algo más de composición y agregación

Ambos conceptos son muy útiles en el


desarrollo de base de datos. La composición es
un caso especial de agregación.
Ambas son relaciones entre objetos.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Generalización-Especialización

La Generalización permite definir una clase como


un caso general de varias clases. La operación
inversa se llama Especialización.
La Generalización es una relación entre clases.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Temario Motivación

Conceptos promovidos porPOO

Una jerarquía de clases

Figure: Jerarquía de clases para un modelo de


Mag. Rosa Macaione~ Programación Orientada a Objetos
biblioteca
Otra jerarquía de clases

Figure: Jerarquía de clases de usuarios


Mag. Rosa Macaione~ Programación Orientada a Objetos
Temario Motivación

Conceptos promovidos porPOO

Herencia y generalización-especialización

La herencia es la característica más importante de


POO. Además, colabora con la reutilización.
Cada clase puede tener descendientes
(especialización-Generalización). A través de la
herencia, cada clase hereda atributos y
comportamiento de su clase ancestro (también
super-clase).

Mag. Rosa Macaione~ Programación Orientada a Objetos


Un ejemplo

Figure: Ejemplo de herencia


Mag. Rosa Macaione~ Programación Orientada a Objetos
Herencia múltiple

Figure: Herencia múltiple para un Audio de Libro

Mag. Rosa Macaione~ Programación Orientada a Objetos


Herencia y reutilización

Cuando se declara una clase descendiente, esta


hereda atributos y métodos de la clase ancestro.

A su vez, la subclase puede agregar atributos y


métodos propios, los cuales pueden ser heredados
por sus descendientes.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Polimorfismo

En forma literal, polimorfismo significa muchas


formas.
Es la capacidad que tiene un objeto para tomar
distintas formas, es decir, que pueda tener un
comportamiento diferente al ser invocado el
mismo método.
Esta clase de funcionalidad permite que una clase
especializada T extienda una clase S, heredando los
métodos genéricos de S y que pueda redefinir otros
métodos de S para tener en cuenta las propiedades
específicas de T.
Mag. Rosa Macaione~ Programación Orientada a Objetos
Temario Motivación

Conceptos promovidos porPOO

Un ejemplo

Figure: Ejemplo de polimorfismo


En Fig. podemos ver que la Clase T redefine el método c de la
Clase S.Macaione~ Programación Orientada a Objetos
Mag. Rosa
Temario Motivación Introducci´on M´as detalles de POO UML

Conceptos promovidos porPOO

Sobrecarga

Es un concepto que poco tiene que ver con POO. La


sobrecarga se presenta cuando clase T tiene uno o
varios métodos con el mismo nombre que los
métodos del ancestro, siempre que cada uno de
ellos tenga una firma distinta. Una firma es la
combinación de nombre del método, la clase a la
que pertenece y cantidad de argumentos que recibe.
Si en la superclase y en la subclase existe un
método en ambos pero con firmas distintas, el
método de la superclase está disponible en la
sub-clase.
Mag. Rosa Macaione~ Programación Orientada a Objetos
Temario Motvación Introducci´on M´as detalles de POO UML

¿Qué es UML?

El lenguaje Unificado de Modelado UML es un lenguaje


estándar para escribir planos de software. Puede usarse para
ver, especificar, construir y documentar artefactos de un
sistema (Booch et al, 2006).

Mag. Rosa Macaione~ Programación Orientada a Objetos


Diagrama de Clase

Un diagrama de clases muestra un conjunto de


clases, interfaces y colaboraciones así como
sus relaciones (Booch et al.,2006).
Los diagramas de clases son usados para
modelar la vista de diseño estática de un sistema.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Un diagrama de clase

Figure: Ejemplo tomado desde uml.org


Mag. Rosa Macaione~ Programación Orientada a Objetos
Representación de clases en UML

� Una clase se representa con un rectángulo con 3


divisiones: una para el nombre de la clase, otra
para atributos y otra para métodos.

� Sepuede indicar el tipo de los atributos como


también valores iniciales por defecto.

� En cuanto a los métodos, se puede indicar la


firma y el tipo de retorno.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Un ejemplo

Mag. Rosa Macaione~ Programación Orientada a Objetos


Generalización en UML

Es una relación entre un elemento general


(superclase) y un caso más específico (subclase).
La Generalización a veces se llama relacioón ”es
un tipo de”. Gráficamente, se representa con un
arco apuntando al padre.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Temario Motivación Introducci´on M´as detalles de POO UML

Un ejemplo

Mag. Rosa Macaione~ Programación Orientada a Objetos


Asociación en UML

Una asociación es una relación que especifica que


los objetos de un elemento (clase) están
conectados con los objetos de otro (Booch et al.,
2006).
Una asociación puede tener un nombre que se usa
para describir a la relación. Para evitar confusión,
se puede dar una dirección al nombre usando una
flecha.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Un Ejemplo

Figure: Una Asociación

Mag. Rosa Macaione~ Programación Orientada a Objetos


Asociación -
Multiplicidad

En muchas situaciones, es importante indicar cuántos


objetos pueden conectarse a través de una
asociación.
La multiplicidad se escribe como una expresión con
un valor mínimo y máximo.
Multiplicidad
� 1: multiplicidad de exactamente uno
(exactamente una instancia)
� 1 . . . *: al menos una instancia
� 0 . . . 1: cero o uno
� 0 . . . * ´o *: muchos (incluye ninguno)
Mag. Rosa Macaione~ Programación Orientada a Objetos
Un Ejemplo

Figure: Un objeto Empresa tiene al menos un objeto Persona; un objeto


Persona trabaja en 0 o m´as objetos Empresa

Mag. Rosa Macaione~ Programación Orientada a Objetos


Asociación - Agregación

Una asociación normal entre dos clases representa


una relación entre iguales (mismo nivel).
El tipo de relación que se usa para modelar una
relación ”todo/parte” se denomina agregación. El
rombo vacío distingue al ”todo” de la ”parte”.
Para restringir aún más la agregación, se usa la
composición.

Mag. Rosa Macaione~ Programación Orientada a Objetos


Un Ejemplo

Figure: Un objeto Factura consta de varios objetos LineaFactura. Un


objeto LineaFactura pertenece a un objeto Factura

Mag. Rosa Macaione~ Programación Orientada a Objetos


Fontela, C. (2004),“Orientación a Objetos con UML
y Java”, Nueva Librer´ıa.
Drozdek, A. (2007),“Estructura de datos y
algoritmos en Java”, Thomson.
Booch et al. (2006),“UML Lenguaje Unificado de
Modelado”, Addison Wesley.
Larman, C. (2003),“UML y Patrones”, Pearson.

Mag. Rosa Macaione~ Programación Orientada a Objetos

Potrebbero piacerti anche