Professional Documents
Culture Documents
Objetos
Necesidades
Abordar problemas ms complejos
Reducir la complejidad de mantenimiento
Anlisis
Modelo conceptual
Requerimientos
q
del
Diseo
Diseo
Diseo
sistema
Aplicacin
Codificacin
Prueba
(lenguajes O.O.)
Clases y objetos
Mtodos y mensajes
Herencia
Polimorfismo
Procedimientos
Mdulos
Tipos de datos abstractos
Programacin orientada a objetos
Abstraccin
Modularidad
Encapsulamiento
Independencia funcional
Reusabilidad
eusab dad
la
Naturalidad
pasaje
Clases y Objetos
Clases
Tipos abstractos de datos (TAD)
Representacin de la informacin
Operaciones asociadas
Plantillas
Objetos
Instancias
de clases
Encapsulamiento
Ocupan espacio en memoria
Reusabilidad
de
Orientados a objetos
Basados en objetos
Hbridos
Smalltalk (100% puro)
Xerox PARC 1970
Smalltalk-80
ANSI standard en 1998
Java
Sun 1991
versin 1.0a2
J2EE
Genealoga de lenguajes
Java
No puro
Tipos de aplicaciones
Consola
Basada en
Applets
cdigo fuente
GUI
compilador
S d
Seudocompilador
il d
VM
bytecode
ventajas
multiplataforma
desventajas
descompilado
cdigo byte
input
VM
output
Programacin O.O
Conceptos
class Complejo {
private float pr;
private float pi;
public void asignar(float r, float i) {
pr = r;
pi = i;
}
public void sumar(Complejo obj) {
pr += obj.pr;
pi += obj.pi;
}
}
clases y objetos
encapsulamiento
instancias de objetos
identidad de objetos
variables de instancia
mtodos de instancia
calificadores de acceso
mensajes
estado de un objeto
j
3.4, 2.3
asignar()
sumar()
0.4, 2.7
referencia: n
asignar()
sumar()
pr: 3.4
pi: 2.3
pr: 3.8
0.4
pi: 5.0
2.7
Reutilizacin de cdigo
Herencia
Construccin de objetos
Pueden
Polimorfismo
Composicin
Implementacin: Figuras
Conceptos
Elemento
simbolo : char
longitud : int
constructores
herencia
delegacin
atributos constantes
clases abstractas
mtodos abstractos
redefinicin de mtodos
Linea
orientacion : char
#en
dib...
Discontinua
puntos : boolean
de copia
Punto
x : int
y : int
polimorfismo
relacin
de asociacin
cardinalidad
relacin
de dependencia
Continua
1..1
Telon
region[][] : char
dibujarLinea(pi : Punto, pf : Punto, c : char) : void
mostrar() : void
10
Registro
provincia : String
m unicipio : String
tasa : float
idPadron : int
ubicacion : String
avaluoxmt : f loat
superficie : int
+inscripto
+inm ueble
1
n
valuar() : float
edificar (e : Edif icio) : void
tipoEdif icio() : Edificio
dem oler() : void
Conceptos
estereotipos
relacin de agregacin
mtodos set/get
mtodos inline
variables
-construccion
Edificio
Escritura
Departam ento
avaluoxm t : float
piso : byte
dpto : char
superficie : int
valuar() : float
+unidad
guardar() : boolean
recuperar (n : int) : Escritura
de clase
inicializador static
mtodos de clase
clases asociativas
objetos persistentes
calificador transient
relacin composicin
destructores
1..n
Casa
PH
plantaAlta : boolean
superficie : int
cantPisos : byte
calificador final
11
Packages
Conceptos
classpath
parte pblica
parte privada
exportacin
importacin
calificadores
Main
de acceso
public
private
protected
R
12
Conceptos
packages
contenedores
arreglos
reutilizacin
referencias a clases
clases Object y Class
mtodos privados
sobrecarga
13
Vector
#$tiposMonedas
(from util)
Moneda
mltiple
justificacin
desventajas
clases final
interfaces
(from monedas)
getValor() : int
getMonedas() : Object[]
clone()
() : Object
j
ctasDeVuelto(v : int) : int
MedioDePago
(f
(from
monedas)
d )
M10
M25
M50
(from monedas)
(from monedas)
(from monedas)
getValor() : int
getValor() : int
getValor() : int
Ficha
(from monedas)
valor : int
Ficha(v : int)
getValor() : int
14
Excepciones
Qu son?
Mecanismo
Ejemplos
no se puede abrir un archivo
un socket se cierra inesperadamente
divisin p
por cero
Para qu sirven?
Detectar
15
Excepciones
try {
...
}
catch (clase1 x){
...
}
catch (clase2 y){
...
}
catch (clase3 z){
...
}
finally {
...
}
Bloque try
Bloque catch1
Bloque
oque catc
catch2
Bloque catchn
Bloque finally
16
Excepciones
class EE extends Exception{
...
}
Throwable
Error
Exception
VirtualMachineError
...
IOException
EE
...
UTN - FRM: Paradigmas de Programacin - Programacin O.O
RuntimeException
...
17
Programacin concurrente
aficionados
programadores
expertos
Programacin C
concurrencia
Programacin C++
funcionales
de datos
de tiempo
Programacin Concurrente
deadlock
18
Programacin concurrente
Taxonoma de Flynn
ejecucin
Arquitecturas
bloqueado
listo
SISD
Conceptos
p
V N
Von
Newman
procesos
pre-emptive
non pre-emptive
semforos
monitores
regiones crticas
mensajes
procesos
MIMD
Paralelos
Memoria
compartida
Memoria
distribuida
de tareas
sincronizacin
Vectoriales
contexto
planificador
SIMD
vs. threads
subprocesos
Arquitectura de memoria
CPU
CPU
memoria
CPU
CPU
CPU memoria
CPU memoria
interconexin
CPU memoria
CPU memoria
19
Programacin concurrente
Conceptos
Creado
start
Dormido
Esperando
desalojjado
notify
despacchado
listo
expir intervalo
wait
sleep
Ejecucin
complet
I/O
interrupted
Interrumpido
interrupt
Bloqueado
clase Thread
interface Runnable
estados de un thread
prioridades
mtodos syncronized
Proceso A
Proceso B
Hilo
Hilo
solicitud
I/O
Memoria
Memoria
Proceso C
Hilo1
Hilon
Muerto
Memoria
20
calificador syncronized
calificador native
clases anidadas
clases annimas
threads
excepciones
Acondicionador
ErrorHardware
lecturaNula() : String
Conceptos
(from sistcontrol)
consumo : double = 0
regular(nivel : double) : void
getConsumo() : double
lanza
0..n
+equipoAA
UnidadDeControl
(from sistcontrol)
Censor
temperatura : double
humedad : double
resultados : String
(from sistcontrol)
tempActual
p
: double
hdadActual : double
inputTemperatura() : double
inputHumedad() : double
run() : void
getMedicion(c : char) : double
0..n
+censor
+ambientes 0..n
Local
(from sistcontrol)
volumen : double
Contenedor
(from sistcontrol)
listIterator() : ListIterator
UTN - FRM: Paradigmas de Programacin - Programacin O.O
21
Event-Driven
Evento
Manejo de eventos
Handlers
Fuentes
Fuentes de eventos
22
GUIs
Input controller
Listeners
(Java)
Message handlers (MFC)
Objeto evento
EventObject
AWTEvent
ActionEvent
ContainerEvent
AdjustmentEvent
FocusEvent
ComponentEvent
InputEvent
ItemEvent
PaintEvent
TextEvent
WindowEvent
cola
cola
Apl1
Apl2
cola
Apln
MouseEvent
KeyEvent
ListSelectionEvent
23
registro
obj.addXXListener(listener);
Listerner
addXXListener(listener : xxListener)
Accin
Fuente
Click en un botn
Click en un checkbox
Click en un radio button
Presionar return en un textfield
Seleccionar un item
Abrir, cerrar, etc. una ventana
Mouse pressed, released, etc.
Key released, pressed, etc.
JButton
JCheckBox
JRadioButton
JTextField
JComboBox
Window
Component
Component
ActionEvent
ItemEvent, ActionEvent
ItemEvent, ActionEvent
ActionEvent
ItemEvent, ActionEvent
WindowEvent
MouseEvent
KeyEvent
24
ErrorHardware
(from sistcontrol)
consumo : double = 0
lecturaNula() : String
Consola
0..n
+equipoAA
UnidadDeControl
(from sis tcontr ol)
Censor
te mperatura : double
humedad : double
resultados : String
(from sistcontrol)
te mpActual : double
hdadActual : double
inputT
p
empe
p ratura()
() : double
inputHumedad() : double
run() : void
getMedicion(c : char) : double
0..n
temp : JTextField
hdad : JTextField
parametros : JButton
crear : JButton
volum : JTextFie ld
visor : JList
mostrar : JButton
+censor
Local
+ambientes 0..n
volumen : double
Contenedor
(from s is tcontr ol)
listIterator() : ListIterator
25
Smalltalk
Java
Smalltalk
Referencias
null
nil
this
self
super
super
this.getClass()
self class
Variables de instancia
x
this.x
anObject.x
Clases e interfaces
class Foo {
interface Foo {
class Bar implements Foo {
UTN - FRM: Paradigmas de Programacin - Programacin O.O
26
Smalltalk
Conversiones de tipos
x instanceof Bar
x isKindOf: Bar
(Bar) x
x respondsTo: #messageForABar
Envo de mensajes
3 + 4 * 2 //da 11
3 + (4 * 2) //da 11
3 + 4 * 2 da 14
3 + (4 * 2) da 11
anObject.foo()
anObject foo
foo()
self foo
anObject.foo(a,b)
anObject.firstMessage().
secondMessage().lastMessage();
anObject firstMessage;
secondMessage; lastMessage.
Tipos y variables
int a, b;
a = b = 3 + 4;
| a b |
a := b := 3 + 4.
Object anObject;
| anObject |
int anInt;
Object foo()
UTN - FRM: Paradigmas de Programacin - Programacin O.O
foo
27
Smalltalk
Enunciados de control
if (isTrue) {}
(isTrue) ifTrue: []
if (...) {} else {}
switch (...)
while (...)
(...) whileTrue: []
do {} while ()
for (...;...;...)
aCollection do:,collect:,etc.
anInterval do: (number) timesRepeat:[]
Control de acceso
public int foo()
foo
protected foo()
public x
protected x
private x
28
Smalltalk
SmallTalk
BankAccount subclass: #SavingsAccount
instanceVariableNames: 'balance name'
initializeBalance: anInteger name: aString
balance := aninteger.
name := aString.
^self
balance
^balance
SavingsAccount new initializeBalance: 100 name: 'Dave'.
Java
class SavingsAccount extends BankAccoun {
private int balance;
private String name;
public Object initializeBalance(int anInteger, String aString) {
balance = aninteger;
name = aString;
return this;
}
public int balance() { return balance ; }
}
new SavingsAccount().initializeBalance(100, Dave);
UTN - FRM: Paradigmas de Programacin - Programacin O.O
29