You are on page 1of 44

CLASE 1: POO.

Primeros conceptos

Ideas bsicas

Una nueva forma de pensar

Paradigmas

Paradigma estructurado vs. paradigma orientado a objetos

El Objeto

La Clase (anticipo)

Objetos y Clases (anticipo)

Instanciacin de Clases, variables, referencias.

Componentes de un objeto: Estado, Comportamiento,

Interaccin entre objetos: mensajes.


Mtodos. Pasaje de parmetros, retorno.

Clases: Constructores, Instanciacin de clases

Manipulacin de objetos

El mtodo main()

Abstraccin de la realidad al modelar con objetos

UML. Diagrama de Clases

Ejemplo de un programa en Java Implementacin TDA Pila en objetos

IDEAS BSICAS
La programacin orientada a objetos es
una metodologa que descansa en el
concepto de objeto para imponer la
estructura modular de los programas.
Permite comprender el dominio del
problema a resolver, al intentar construir un
modelo del mundo real que envuelve
nuestro sistema. Es decir, la representacin
de este mundo mediante la identificacin
de los objetos que constituyen el
vocabulario del dominio del problema, su
organizacin y la representacin de sus
responsabilidades.
2

IDEAS BSICAS
El paradigma orientado a objetos se basa
en los tres mtodos de organizacin que
utilizamos desde nuestra infancia y en los
que basamos todo nuestro pensamiento:
A) la diferencia entre un objeto y sus
atributos (por ejemplo, entre una
manzana y su sabor o peso),
B) la diferencia entre un objeto y sus
componentes (por ejemplo, entre una
manzana y su piel o semillas) y
C) la formacin y distincin entre clases de
objetos (por ejemplo, entre manzanas
rojas, manzanas verdes, etc.)
3

IDEAS BSICAS

La idea de manejar objetos reales como


contenedores de estados y
comportamientos, es mucho ms atractiva
desde el punto de vista del usuario. De
esta manera no tendr que batallar con
construcciones orientadas al computador,
sino que podr manejar objetos (y
operaciones) que se asemejen ms a sus
equivalentes en el mundo real. La
elevacin del nivel de abstraccin es sin
duda un objetivo deseable.
4

IDEAS BSICAS

Las tcnicas orientadas a objetos usan un


mismo modelo conceptual para el anlisis,
el diseo y la programacin. La transicin
desde el anlisis al diseo es tan natural
que es difcil especificar donde comienza
uno y donde acaba el otro.

UNA NUEVA FORMA DE PENSAR


P.O.O.

La P.O.O. hace referencia a una nueva forma de pensar


(ms cercana a como expresaramos las cosas en la vida
real que otros tipos de programacin) acerca del proceso
de descomposicin de problemas y de desarrollo de
soluciones de programacin.

Tradicionalmente, la forma de enfrentarse a la complejidad de la programacin ha sido


descomponer el problema objeto de resolucin en subproblemas y ms subproblemas
hasta llegar a acciones muy simples y fciles de codificar (paradigma estructurado funcional)

UNA NUEVA FORMA DE PENSAR


En la P.O.O. se buscan (o disean)
entidades independientes que colaboren
en la resolucin de un problema, cada una
de estas entidades tendr un conjunto de
habilidades propias y responsabilidades
designadas (cada entidad es responsable de
ciertas tareas).
Para resolver un problema, se utilizan un
conjunto de estas entidades, las cuales
interactan entre si, envindose mensajes
entre ellas y proporcionando en cada
mensaje la informacin necesaria para
resolver la tarea y devolver una respuesta a
quien le invoc.

Entidades
independientes

Responsabilidades

mensajes

Problemas

PARADIGMA
El filsofo y cientfico Thomas Kuhn dio a paradigma su significado contemporneo, lo
define de la siguiente manera:

lo que se debe observar y escrutar


el tipo de interrogantes que se supone hay que formular para hallar respuestas en
relacin al objetivo

cmo deben estructurarse estos interrogantes

cmo deben interpretarse los resultados de la investigacin cientfica


"Considero a los paradigmas como realizaciones cientficas
universalmente reconocidas que, durante cierto tiempo, proporcionan
modelos de problemas y soluciones a una comunidad cientfica"
Thomas Kuhn

PARADIGMA
La programacin Orientada a Objetos (POO) es un paradigma de programacin que usa
objetos y sus interacciones para disear aplicaciones y programas. Est basado en
varias tcnicas, como por ejemplo herencia, abstraccin, polimorfismo y
encapsulamiento.
En sntesis
Qu es un
paradigma?
Conjunto de elementos y reglas.
Brinda un marco para el diseo
y la construccin de Programas.

PARADIGMA ESTRUCTURADO VS. PARADIGMA ORIENTADO A OBJETOS


Paradigma
ParadigmaEstructurado
Estructurado
Sistemas
Sistemascontienen
contienendatos
datosyy
algoritmos.
algoritmos.
Los
Losprogramas
programasmanipulan
manipulanlos
losdatos.
datos.
Se
Seconstruyen
construyenen
enbase
baseaa
Asignacin.
Asignacin.

Secuencia.
Secuencia.
Repeticin.
Repeticin.

Condicional.
Condicional.
Los
Losprogramas
programasestn
estnorganizados
organizadospor:
por:

Descomposicin
Descomposicinfuncional.
funcional.
Flujo
Flujode
deDatos.
Datos.

Mdulos.
Mdulos.

Paradigma
ParadigmaOrientado
OrientadoaaObjetos
Objetos
Los
Lossistemas
sistemasestn
estncompuestos
compuestospor
porun
unconjunto
conjuntode
de
objetos.
objetos.
Los
Losobjetos
objetosson
sonresponsables
responsablesde
dellevar
llevaraacabo
cabociertas
ciertas
acciones.
acciones.
Los
Losobjetos
objetoscolaboran
colaboranpara
parallevar
llevaraacabo
cabosus
sus
responsabilidades.
responsabilidades.
Los
Losprogramas
programasestn
estnorganizados
organizadosen
enbase
baseaaclases
clasesyy
jerarquas
jerarquasde
deherencia.
herencia.
Principios
Principiosdel
delparadigma
paradigmaOO
OOsegn
segnAlan
AlanKay
Kay
(creador
del
Smalltalk)
(creador del Smalltalk)
Todo es un objeto.
Todo es un objeto.
Los objetos se comunican enviando y recibiendo
Los objetos se comunican enviando y recibiendo
mensajes.
mensajes.
Los objetos tienen su propia memoria (en trminos
Los objetos tienen su propia memoria (en trminos
de
deobjetos).
objetos).
10

EL OBJETO
Un objeto en POO representa alguna entidad de la vida real, es decir, alguno de
los objetos que pertenecen al negocio con que estamos trabajando o al problema
con el que nos estamos enfrentando, y con los que podemos interactuar.
Auto
patente
modelo
marca
color
.
arrancar()
detener()
acelerar()
frenar()
.

Objeto es todo aquello que pueda ser


identificable dentro de una especificacin de
requerimientos o problema, y posea:

Caracteristicas: una manera de


representar sus datos.
Comportamiento: lo que puede hacer
(correr, saltar, volar, etc).
Interaccin/comunicacin: con otros
objetos por medio de sus mtodos
11

LA CLASE
A travs del estudio de los objetos se adquiere el conocimiento necesario para,
mediante la abstraccin y la generalizacin, agruparlos segn sus
caractersticas en conjuntos. Estos conjuntos determinan las clases de objetos
con las que estamos trabajando.
En general, primero existen los objetos; luego aparecen las clases en funcin
de la solucin que estemos buscando.

CLASE

OBJETOS

12

OBJETOS Y CLASE (anticipo)

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

En algn punto, la clase es al objeto como el struct a la variable de ese tipo.El mecanismo para la creacin de objetos a partir de la clase (que define sus
caractersticas y comportamiento) se llama instanciacin de la clase
Clase

instanciacin

instanciacin

objeto1
objeto2
13

INSTANCIACIN DE CLASES, VARIABLES, REFERENCIAS


Para instanciar una
clase y as crear un
nuevo objeto, se utiliza
el operador new(...)

Autoauto1=newAuto();
clase

variable

operador

constructor

El operador new () crea un nuevo


objeto y lo almacena en el HEAP (espacio
de almacenamiento para los objetos) y
retorna una referencia al objeto creado.
Esta referencia se almacena en una
variable del tipo (de la clase)
auto1
Si bien no es lo mismo, ayuda pensar en el concepto de
puntero (C++).

auto2
14

COMPONENTES DE UN OBJETO

Un objeto tienen estado, exhibe algn comportamiento bien


15
definido, tiene una identidad nica.

EL ESTADO DE UN OBJETO
El estado de un objeto se refiere al conjunto de los

Objeto Caja de Ahorro

valores de sus atributos en un instante de tiempo


dado.

Variables de Instancia

Est compuesto por las variables de instancia


del objeto (atributos).
Las V.I. pueden hacer referencia a:

Propiedades intrnsecas del objeto.

Otros objetos con los cuales puede colaborar


para llevar a cabo sus responsabilidades.

Es conveniente que sea privado del objeto.


Ningn otro objeto debera accederlo.

saldo
600

titular

Objeto Persona
Variables de Instancia

Nombre
Juan Perez
16

EL ESTADO DE UN OBJETO VARIABLES DE INSTANCIA


Variable
Es unidad bsica de almacenamiento. En el
Lenguaje Java, cada variable tiene un tipo de
dato, un identificador y un mbito.

Objeto Caja de Ahorro


Variables de Instancia

saldo
600

titular

Variables de Instancia o atributos


Los atributos son las caractersticas individuales
que diferencian un objeto de otro. Los atributos
se guardan en variables denominadas de
instancia y cada objeto particular puede tener
valores distintos para estas variables.

Objeto Persona
Variables de Instancia

Nombre
Juan Perez
17

TIPOS DE DATOS DE LAS VARIABLES


Las variables pueden contener tipos de datos primitivos o
referencia a objetos
Tipos de datos primitivos: entero, carcter, booleano...
Referencia a Objetos: las variables de tipo no
primitivo almacenan una referencia a un
objeto, no contienen al objeto. Los objetos se
almacenan en una pila de objetos llamada
Heap.
Si bien no es lo mismo, ayuda pensar en el
concepto de puntero (C++).

18

EL COMPORTAMIENTO DE UN OBJETO
Qu hace un objeto?
Un objeto se define en trminos de su comportamiento.
El comportamiento indica qu sabe hacer el objeto
(determina cuales son sus responsabilidades)
Se especifica a travs del conjunto de mensajes que el
objeto sabe responder: protocolo.

depositar(unMonto)

Objeto
Caja de Ahorro

extraer(unMonto)
saldo()

Cmo lo hace?
La implementacin de un objeto se especifica
a travs de un conjunto de mtodos.
Cuando un objeto recibe un mensaje
responde activando el mtodo asociado.
Es privado del objeto: el que enva el
mensaje delega en el receptor la manera de
resolverlo, sin importarle cmo lo resuelve.

Objeto
Caja de
Ahorro

Mtodos
depositar(unMonto)
extraer(unMonto)

depositar(unMonto)
extraer(unMonto)
saldo()

saldo()

19

Estado y Comportamiento de un Objeto


Objeto
Caja de Ahorro
Variables de Instancia

saldo
600

titular

Mtodos
depositar(unMonto)

depositar(unMonto)

extraer(unMonto)

extraer(unMonto)

saldo()

saldo()

titular()
titular(unaPersona)

titular()
titular(unaPersona)

Objeto Persona
Variables de Instancia

Nombre
Juan Perez
20

INTERACCIN ENTRE OBJETOS USANDO MENSAJES


El comportamiento de un objeto est definido en trminos de los mensajes que ste
entiende.
Para poder enviarle un mensaje a un objeto, primero hay que conocerlo.
Al enviarle un mensaje a un objeto, ste responde activando el mtodo asociado a ese
mensaje (siempre y cuando exista).
Como resultado del envo de un mensaje, puede retornarse un objeto.
Se especifica con el nombre correspondiente al protocolo del objeto receptor.
Se indica cuales son los parmetros, es decir, la informacin necesaria para resolver el
mensaje.
Se utilizar la siguiente sintaxis:

<objetoreceptor>.<nombredelmensaje>(<parmetros>);
21

EJEMPLO DE MENSAJE
Objeto
Caja de Ahorro
Variables de Instancia

saldo
600

titular

Mtodos
depositar(unMonto)

depositar(unMonto)

extraer(unMonto)

extraer(unMonto)

saldo()

saldo()

titular()
titular(unaPersona)

titular()
titular(unaPersona)

Ejemplo empleando la sintaxis propuesta:


Decirle a una cuenta bancaria que deposite $100 se escribe como:

CajaDeAhorrounaCuenta=newCajaDeAhorro();
unaCuenta.depositar(100);

22

MTODOS
Los mtodos son la contraparte funcional del mensaje. Expresa la forma de llevar a cabo
la semntica propia de un mensaje particular.
Un mtodo puede realizar bsicamente 3 cosas:

Modificar el estado interno del objeto receptor.

Colaborar con otros objetos.

Retornar y terminar.
public void depositar (double monto)
{
this.saldo = this.saldo + monto;
}
public double extraer (double monto)
{
This.saldo = this.saldo monto;
return saldo;
}

Objeto
Caja de
Ahorro

Mtodos
depositar(unMonto)
extraer(unMonto)

depositar(unMonto)
extraer(unMonto)
saldo()

saldo()

public double saldo()


{
return this.saldo;
}

23

PARMETROS, PASAJE DE PARMETROS, RETORNO


En el Lenguaje de Programacin Java, el pasaje de parmetros es

por valor.
Tener en cuenta que en el caso de parmetros de tipo Objeto, el valor
que contiene es una referencia a un Objeto (como cualquier
variable no primitiva). Por lo tanto, teniendo esa referencia se puede
alterar el estado del objeto referenciado (por el parmetro formal).
En el momento de la invocacin, el parmetro formal copia el contenido
del parmetro real (pasaje de parmetros por valor), pero lo que est
copiando es la referencia del objeto que contiene el parmetro real). O
sea, cualquier alteracin (dentro del mtodo) del estado del objeto
referenciado por el parmetro formal impacta sobre el objeto.
24

ASPECTOS COMUNES A LOS OBJETOS


Caja de
Ahorro A

Comportamiento
comn entre objetos
Cuntos objetos Caja de
Ahorro habr?
Es necesario especificar el
comportamiento de cada
caja de Ahorro? O el
comportamiento debera ser
comn a todas?

Caja de
Ahorro B

Qu cosas son comunes a


todas las cajas de ahorro y
qu cosas son particulares a
cada una?
25

Entonces... cmo
representar este
comportamiento comn,
de manera que cada caja
de ahorro pueda
reutilizarlo?

26

CLASES !

27

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

Una clase es una abstraccin que:

Enfatiza las caractersticas relevantes


Suprime otras caractersticas (simplificacin)

Un objeto es una instancia de una clase


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


28

Clases e Instancias (objetos)


Despus de identificar los requerimientos de una aplicacin, debemos identificar las
clases y los objetos necesarios para construir la aplicacin, as que vamos a ver qu
son clases y objetos.
Objeto
Concepto: Los objetos son
Clase
instancias de una clase
Concepto: Una clase es la abstraccin de las
propiedades y operaciones o acciones que
ejecutan los objetos del mundo real.

en trminos coloquiales
la clase
es como si fuera una plantilla
que sirve para
crear los objetos

es decir, las unidades de una


clase especfica que
existen en el mundo real

Una similitud es la siguiente:


La clase es como un molde para
hacer tortas y las tortas hechas con el
molde son los objetos
29

Clases e Instancias (objetos)


Las clases cumplen tres roles:

Agrupar el comportamiento comn

Definir la forma

Crear las instancias

En consecuencia, todas las instancias de


una clase se comportan de la misma
manera. Cada instancia mantendr su propio
estado interno.
Cada instancia tiene una copia de las
variables de instancia y de los mtodos
declarados en la clase.

30

Especificacin de Clases
Las clases se especifican por medio de un nombre, el estado
interno o estructura que tendrn sus instancias y los mtodos
asociados que definen el comportamiento.
Nombre de Clase:
Comienza con mayscula
y no posee espacios

Atributos (variables de
instancia):
Se escriben en minsculas
y sin espacios
Mtodos:
Para cada uno se debe
especificar como mnimo
el nombre, parmetros y
retorno
31

El constructor

Se utiliza para realizar inicializaciones ms complejas.


Bloque de sentencias que se pueden utilizar para inicializar un
objeto antes de que se devuelva una referencia mediante new.

Tiene el mismo nombre que la clase que inicializan

Puede admitir cero o ms parmetros.

No es un mtodo y por lo tanto no tiene tipo de retorno.

Se invoca despus de que las variables de instancia del objeto


de nueva creacin tenga asignado sus valores iniciales por
defecto y despus de que sus inicializadores explcitos se
hayan asignado.
32

Constructores
public class Vehiculo
{
private String nroPatente;
private String propietario;
public Vehiculo(String patente)
{
this.nroPatente = patente;
}
public Vehiculo(String patente, String propietario)
{
this(patente);
this.propietario= propietario;
}
public Vehiculo()
{}
// mtodos
}
33

Cmo se instancia una Clase ?

Para instanciar una clase, es decir, para crear un objeto de una clase,
se usa el operador new.
La creacin e inicializacin de un objeto involucra los siguientes
pasos:

Se aloca espacio en memoria para la variable y para el objeto.


Se inicializan los atributos del objeto con los valores por defecto.
Se ejecuta el constructor (parecido a un mtodo que tienen el mismo
nombre de la clase)
Se asigna la referencia del nuevo objeto a la variable.

CuentamiCuenta=newCuenta();
34

Constructores y new
public class Vehiculo
.
{
Vehiculo v1;
private String nroPatente;
Vehiculo v2;
private String propietario;

public Vehiculo(String patente)


v1 = new Vehiculo(ABC123);
{
v2 = new Vehiculo(ABC123, Pedro);
this.nroPatente = patente;
.
}
public Vehiculo(String patente, String propietario)
{
this(patente);
this.propietario= propietario;
}
public Vehiculo()
{}
// mtodos
}
35

Especificacin de Clases
public class CajaDeAhorro
{
private double saldo;
private Persona titular;

public double getSaldo()


{
return this.saldo;
}

public CajaDeAhorro()
{
super();
}

public Persona getTitular()


{
return this.titular;
}

public void depositar (double monto)


{
//escribir cdigo
}

public void setTitular(Persona titular)


{
this.titular = titular;
}

public double extraer (double monto)


{
return 0.0;
}

public boolean sePuedeExtraer(double monto)


{
return true;
}
}

36

Cmo manipular Objetos?

37

El mtodo main()

38

Abstraccin de la realidad al modelar con objetos


La Abstraccin es una descripcin especial simplificada de un sistema que
hace nfasis en ciertos rasgos y suprime otros.
Por ejemplo, la
perspectiva de ver a un
gato es muy distinta entre
una abuela amorosa y un
mdico veterinario. La
abuela har una
abstraccin fijndose en
rasgos afectivos y de
cuidado mientras que el
veterinario lo ver como
un objeto anatmicofisiolgico de estudio.
39

Abstraccin de la realidad al modelar con objetos


De qu hablamos cuando hablamos de abstraccin?

Es el proceso de supresin de detalles respecto de un fenmeno,


entidad o concepto.
El objetivo es concentrarse en los aspectos ms significativos.

Algunas definiciones

Un concepto general formado a partir de la extraccin de


caractersticas comunes tomadas de ejemplos especficos.
El proceso mental donde las ideas son separadas de los objetos
concretos.

40

Qu es el diseo orientado a objetos?

Un diseo Orientado a Objetos expresa, sin necesidad de escribir cdigo, como


colaboran los objetos para realizar sus actividades.
Han existido diversos mtodos y tcnicas orientadas a objetos, con muchos
aspectos en comn pero utilizando distintas notaciones.

Como resultado de varias de ellas, surgi el Lenguaje


Unificado de Modelado (del Unified Modeling Language
UML) como estndar para el modelado de sistemas de
software. En 1994, Booch, Rumbaugh (OMT) y Jacobson
(Objectory) deciden unificar sus mtodos y nace el UML.

Es un lenguaje de propsito general para el modelado orientado a objetos


41

Notacin UML. Diagramas de Clase.

Posee distintos tipos de diagramas, pero ahora slo el Diagrama de Clases.


En el diagrama de clases, un clase se describe en funcin de sus atributos y
mensajes.

La notacin para una clase es la siguiente:

42

Ejemplo

43

Ejemplo

44

You might also like