Vous êtes sur la page 1sur 41

Programacin

Paradigma o Modelo
de Programacin
Programacin Programacin
Orientada a Objetos Orientada a Objetos
Clases
Objetos
Abstraccin
Encapsulacin
Polimorfismo Relaciones
Atributos
Comportamiento
Dependencia
Generalizacin
Asociacin
Realizacin
Mensajes
Conjunto de actiidades
!An"lisis# Dise$o# Codificacin%
&ue conllean a la construccin
de soluciones inform"ticas'
Modelo b"sico de dise$o e
implementacin de programas# cu(a
base se fundamenta en isionar los
programas como objetos
Conjunto de conceptos# reglas
&ue indican como llear a cabo
una actiidad
)enguaje de
programacin
)enguaje de
programacin
Codificacin
Objetos
*n elemento &ue posee una
serie de caracter+sticas (
comportamientos bien
definidos'

Atributos
Color# capacidad# etc
Mtodos
,renar# andar#
oltear
Atributos
Color# capacidad# etc
Mtodos
,renar# andar#
oltear
Clases

Conjunto de objetos &ue


comparten atributos ( m-todos'

Plantilla donde se definen


atributos ( M-todos &ue
describen un
Conjunto de objetos

.ombre clase/ Carro
Atributos Comunes/
color, capacidad
M-todos Comunes/
frenar, andar, voltear
Atributos:

Caracter+sticas &ue configuran la estructura de los objetos


Dimensin de los atributos/
Objeto
.ombre 0alor
color
capacidad
0erde
1 pasajeros
Clase
.ombre
color
capacidad
Tipo de Dato
Mtodos:

Comportamientos &ue presenta un objeto

2ericios &ue puede presentar un objeto a otros objetos


CMO SE M!"EME#TA $# M%TODO A #&E" DE CD'O(
,unciones
Actiidades
Algoritmo
Pasos
0alores de entrada 0alores de salida
.ombre de la funcin
tipoDe0uelto NombreFuncin( [argumentos] )
{
//Definicin o implementacin del mtodo
}
Mtodos:
Dato de salida Datos de entrada
Al)orit*o
#o*bre de la funci+n
Eje*plo:
Modelos mediante una clase los objetos reloj
C33
4aa
class Reloj5
priate/
int 66# mm# ss7
public/
oid presentar8ora!%7
oid establecer8ora!%7
97
public class Reloj5
priate int 66# mm# ss7
public oid presentar8ora!%7
public oid establecer8ora!%7
9
Creando instancias de la clase ,elojes
C33
4aa
Reloj r:7
Reloj r: ; ne< Reloj!%7
Estructura de Datos en ,AM
Encapsulaci+n
Mecanismo por el cual una clase
oculta sus elementos a otras clases'
66 / entero
mm / entero
ss / entero
establecer8ora!%
presentar8ora!%7
nterfa-
Abstracci+n
Es la capacidad del ser 6umano
de simplificar la complejidad a las
entidades &ue obsera de su entorno'
Entidades
Proceso de abstraccin

Objeto Computacional

2olucin Computacional
,elaciones
Afinidad# trato# parentesco &ue e=isten entre uno o m"s objetos
Dependencia > relaciones de uso
Generalizacin > 8erencia
Asociacin > estructurales entre objetos
Realizacin

Composicin

Agregacin
,elaciones
Dependencia/ relacin m"s d-bil &ue puede e=istir
entre dos clases' *na clase utiliza o tiene conocimiento
de otra clase'
ClaseA Clase?
@$sa unA un elemento utiliza a otro en un instante de tiempo determinado
,elaciones
Asociaci+n/ relacin m"s fuerte &ue la dependencia'
*na clase trabaja con un objeto de otra clase'
@Maestro . esclavoA# @Todo . parte deA o @Co*puesto . co*ponentesA
Bodo Parte
A)re)aci+n : Relaciones bidireccionales ( asim-tricas
A)re)aci+n
,elaciones
Asociaci+n/ relacin m"s fuerte &ue la dependencia'
*na clase trabaja con un objeto de otra clase'
@Todo / parteA !<6oleCpart%# Des parte deD
Bodo Parte
Co*posici+n : Bipo especial de agregacin' 2i el objeto completo
se copia o se borra !elimina%# sus partes se copian o se eliminan con -l'
Cada componente de una agregacin puede pertenecer tan solo a un
todo'
Co*posici+n
0erar1u2a de clases: 'enerali-aci+n . especiali-aci+n
*M)CGeneralizacin/ relacin entre un elemento general
!superclase o padre% ( un caso mas concreto de ese
elemento !subclase o 6ija%' Relacin @es unA
!OO/E3tensi+n45erencia:
Relacin entre clases# cu(o objetio es &ue una de ellas pueda
ad&uirir# utilizar los elementos !atributos# m-todos% definidos en
otra clase'
Clase 8ija
Clase Padre
G
E
.
E
R
A
)
E
F
A
C
E
O
.
E
2
P
E
C
E
A
)
E
F
A
C
E
O
.
5erencia:
2imple
MGltiple
Clase 8ija
Clase Padre
class Padre5
97
class 8ija / Padre5
9
public class Padre5
9
public class 8ija e=tends
Padre5
9
Clase 8ija
Clase Padre: Clase PadreH
class Padre:5
97
Class PadreH5
9
class 8ija / Padre:# PadreH5
9
Ejercicio 67489/
En un modelo de una empresa 6a( definida una clase
empleado &ue tienen los siguientes atributos/ nombre#
edad# departamento' 2e necesita e=tender el concepto
empleado para abarcar nueos tipos de empleados# a
saber/

Empleado temporal# del &ue nos interesa saber la fec6a
de alta ( de baja en la empresa'
Empleado por 6oras' .os interesa el precio de la 6ora
trabajada# ( el nGmero de 6oras &ue 6a trabajado este mes'
El primero es un dato fijo# mientras el segundo ar+a todos
los meses'
Empleado fijo' Debemos a$adir a la informacin &ue
almacenamos sobre el a$o de alta en la empresa'

Ejercicio 6:489/
Adem"s debemos a$adir a todos los empleados
la funcionalidad de c"lculo del sueldo con las
siguientes consideraciones/

En los empleados temporales el sueldo mensual
es fijo'
En los empleados fijos el sueldo es el resultado
de sumarle a la base un complemento anual fijo
multiplicado por el nGmero de a$os en la
empresa'
Ejercicio 68489/
En los empleados por 6oras el sueldo se calcula
multiplicando su sueldo por 6ora por el nGmero de
6oras de este mes'
Dise$e las clases necesarias ( sus relaciones
para solucionar las nueas necesidades
detectadas'

Ejercicio6Modelo9

!oli*orfis*o
Es la capacidad &ue tienen los objetos de una
clase de responder al mismo mensaje o eento
en funcin de los par"metros utilizados
durante su inocacin'
6ttp/II<<<'slides6are'netIe&uipoHIpooC6erenciaCabstraccionC(Cpolimorfismo
!oli*orfis*o
Din"mico/ es el &ue el cdigo no
inclu(e ningGn tipo de especificacin
sobre el tipo de datos'
Est"tico/ es el &ue los tipos a los &ue
se aplica el polimorfismo deben ser
e=plicitados ( declarados uno por uno
antes de ser utilizados'
!oli*orfis*o
se puede establecer mediante

2obrecarga

2obreCescritura

)igadura din"mica'
!oli*orfis*o
Sobrecar)a;
*so del mismo identificador u operador en
distintos contextos con distintos significados!
"#stem!out!print()$ o "#stem!out!println()$
podemos escribir cual&uier mensaje en pantalla'
2e aplica a m-todos ( constructores'
!oli*orfis*o
Sobre/escritura/
2e aplica a los m-todos ( est"
directamente relacionada a la 6erencia
( se refiere a la reCdefinicin de los
m-todos de la clase base en las
subclases'
,igura > calculaArea!%# calculaPer+metro!%
!oli*orfis*o
"i)adura din<*ica:
Pueden inocarse operaciones en
objetos obiando el tipo actual de
-stos 6asta el momento de la
ejecucin del cdigo# es decir &ue me
permite definir elementos como un tipo
e instanciarlos como un tipo 6eredado'
!oli*orfis*o
"i)adura din<*ica:
Cual puede ser la utilidad de este
concepto# para &ue sire obiar el tipo
de un objeto para luego tomar esta
decisinJ'
!oli*orfis*o
Gracias a &ue en jaa la definicin de
los tipos de objetos se puede producir
por atado posterior !late binding%# no
nos debe preocupar a &ue tipo de
elemento le paso un mensaje (a &ue
el compilador tomara la decisin de
&ue objeto ejecutar" &ue m-todo de
acuerdo a la forma de crear la
instancia'
,eali-aci+n: Relacin entre una clase ( una interfaz'
*na interfaz define las capacidades o 6abilidades de un
objeto
6ttp/IIblog'undermedia'com'ecIinde='p6pIrelacionesCentreCclasesCconCumlI
clase en la &ue se
declaran m-todos (
alores constantes
nterfa-
Declara los m-todos pero no los
implementa'
*na clase puede implementar
arias interfaces'
.o se pueden instanciar objetos
a partir de una interfaz'
nterfa-
Bodos los m-todos de una
interfaz son de forma impl+cita
pGblicos ( abstractos'
Bodas las ariables de una
interfaz son de forma impl+cita
pGblicas# est"ticas ( finales'
nterfa-
Cuando una clase implementa
una interfaz# debe implementar
todos ( cada uno de sus
m-todos# siempre ( cuando# la
clase no sea abstracta'
*na interfaz no tiene una clase
padre antecesora'
nterfa-
*na interfaz no tiene una clase padre antecesora'
!como en el caso de las clases &ue por omisin
tienen a la clase Object%'
nterfa-
)as 6erencias de clases definen el %&ue son% ( las
interfaces agrupan clases &ue definen el %&ue
'acen%'
)as interfaces permiten pasar del estilo de dise$o
Korientado a la implementacinK a uno Korientado a
la interfazK# donde todas las clases acceden a
sericios a tra-s de interfaces &ue son
implementadas por clases concretas' L al no
depender de clases concretas !solo de entidades
abstractas% nuestro dise$o ser" m"s reutilizable'
5erencia *=ltiple a travs de nterfaces
)os problemas m"s comunes &ue puede dar la
implementacin de 6erencias mGltiples son las
"colisiones de nombres" ( la "herencia repetida"'
)as colisiones se pueden dar cuando las clases
empiezan a tener los mismos nombres en los
m-todos generando la duda de cual m-todo debo
usar de las dos clases ( la >erencia repetida es
cuando nuestra clase 6ereda de dos clases &ue a
sus ez son 6ijas del mismo padre# por lo cual
estemos posiblemente 6eredando caracter+sticas
repetidas'
5erencia *=ltiple e interfaces
?ue su)ieren las @'u2as de DiseAo OO@(
para una buena jerar&u+a de 6erencia/
C 2e deben tener no m"s de M !3CH% nieles
C )as jerar&u+as Kgordas ( bajasK son s+ntoma de
Kpoca especializacinA'
C )as jerar&u+as Kaltas ( flacasK son s+ntoma de
Ke=cesia especializacinK'
5erencia *=ltiple e interfaces
Ejercicios resueltos del Cap2tulo de
nterfaces
:% Construir una clase Arra(Reales &ue
declare un atributo de tipo doubleNO ( &ue
implemente una interfaz llamada
Estadisticas' El contenido de esta
interfaz es el siguiente/
public interface Estadisticas 5
double minimo!%7
double ma=imo!%7
double sumatorio!%7
9
H% Construir una clase final Mat6P &ue
ampl+e las declaraciones de m-todos
est"ticos de la clase Mat6 ( &ue
implemente una interfaz llamada
E=tremos compilada con el siguiente
cdigo fuente/
public interface E3tre*os 5
int min!int NO a%7
int ma=!int NO a%7
double min!double NO a%7
double ma=!double NO a%7
9
P% Construir una interfaz Relaciones !(
posteriormente una clase &ue la
implemente% &ue inclu(a los siguientes
m-todos/
IIDeuele erdadero si a es ma(or &ue b
boolean esMa.or!Object b% 7
IIDeuele erdadero si a es menor &ue b
boolean esMenor!Object b% 7
II Deuele erdadero si a es igual &ue b
boolean es)ual!Object b% 7

Vous aimerez peut-être aussi