paradigma orientado a objetos - cs.uns.edu.arsg/lp/downloads/clases practica/poo y...
TRANSCRIPT
![Page 1: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/1.jpg)
Paradigma Orientado a ObjetosCaso de estudio: Squeak Smalltalk
Lenguajes de Programación 2019
![Page 2: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/2.jpg)
Paradigma Orientado a Objetos
Abstracción de datos
• Reusabilidad y mantenimiento
• Extensibilidad
Polimorfismo
• Flexibilidad
• Técnicas de clasificación para capturar y factorizar aspectos comunes de las entidades
OBJETOS
Nuevas abstracciones como
extensiones o refinamientos de
abstracciones existentes
En este paradigma promueve una disciplina
donde es clave identificar
![Page 3: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/3.jpg)
Paradigma Orientado a Objetos
Entidades con identidadOBJETOS
ATRIBUTOS
determinan su estado interno
OPERACIONES
especifican su comportamiento
Una clase caracteriza objetos que compartenatributos y operaciones
en común
• Una clase determina el
patrón de los objetos
que caracteriza
• Un objeto es una
instancia de una clase
![Page 4: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/4.jpg)
Paradigma Orientado a Objetos
• Comunicación entre los OBJETOS
• envían y reciben mensajes
Los manejan de acuerdo a las
habilidades nativas de su clase
También hacen uso de las habilidades de las clases
antecesoras a su clase
![Page 5: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/5.jpg)
Paradigma Orientado a Objetos
En un sistema Orientado a Objetos
Los objetos procesan los mensajes escondiendo el
conocimiento y la forma en que realizan ese procesamiento
Los objetos pueden enviar y recibir mensajes dinámicamente
Los objetos están clasificados de alguna manera.
Los objetos están caracterizados por atributos y tienen un comportamiento
de acuerdo al cuál responden a los mensajes
![Page 6: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/6.jpg)
Lenguajes Orientado a Objetos
REQUERIMIENTOS MÍNIMOS
• Oscurecimiento de la información
• Abstracción de datos
• Clasificación (Herencia - Relación)
• Polimorfismo
![Page 7: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/7.jpg)
Lenguajes Orientado a Objetos
REQUERIMIENTOS MÍNIMOS
• Oscurecimiento de la información
• Abstracción de datos
• Clasificación (Herencia - Relación)
• Polimorfismo
Algunos autores exigen también:
Ligadura dinámica
Concurrencia
• El estado interno de un objeto solo puede ser accedido y modificado como respuesta a un mensaje.
• La representación física de cada clase y la implementación de las operaciones, no es visible desde el exterior y por lo tanto puede ser modificada sin alterar el resto de las clases.
![Page 8: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/8.jpg)
Lenguajes Orientado a Objetos
REQUERIMIENTOS MÍNIMOS
• Oscurecimiento de la información
• Abstracción de datos
• Clasificación (Herencia - Relación)
• PolimorfismoUna clase define un patrón de comportamiento a partir del cual es posible crear varias instancias
![Page 9: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/9.jpg)
Lenguajes Orientado a Objetos
REQUERIMIENTOS MÍNIMOS
• Oscurecimiento de la información
• Abstracción de datos
• Clasificación (Herencia - Relación)
• Polimorfismo
• Algunos autores exigen también:
• Ligadura dinámica
• Concurrencia
Las propiedades de las clases pueden ser factorizadaspara definir otras más generales - generalización - o a la inversa, que a partir de una clase es posible definir otras más específicas - especialización. La herenciareduce la redundancia en un sistema.
![Page 10: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/10.jpg)
Lenguajes Orientado a Objetos
REQUERIMIENTOS MÍNIMOS
• Oscurecimiento de la información
• Abstracción de datos
• Clasificación (Herencia - Relación)
• Polimorfismo
Se refiere a la capacidad de que objetos de diferentes clases respondan al mismo mensaje
![Page 11: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/11.jpg)
SQUEAK SMALLTALK
![Page 12: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/12.jpg)
SQUEAK SMALLTALK
• No hay restricciones para ligar variables a objetos ni para redefinir métodos (si se redefine con la misma signatura esconde al anterior) o definir nuevos.
• Ligadura dinámica del mensaje con el método.
• Las variables tienen tipado dinámico.
• Herencia simple
• Paradigma puro: Toda entidad es un objeto
Bloque son objetos, control se maneja mediante métodos (Iftrue, while, etc.)
![Page 13: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/13.jpg)
SQUEAK SMALLTALK
Identificadores
• Nombre de clase
• Variables de clase
• Variables globales
• variables de instancia
• variables temporales
• mensajes
Todos los identificadores de las variables cuyo alcance es mayor al de un método u objeto, empiezan con mayúsculas;y los de las variables cuyo alcance es el método (variable local o temporal) o el objeto (variable de instancia), comienzan con minúsculas
![Page 14: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/14.jpg)
SQUEAK SMALLTALK
Variables de clase
Guardan atributos comunes a todos los objetos que son instancias de una misma clase
Variables de instancia
Tienen valores asociados únicamente con cada instancia u objeto creado a partir de una clase
La única manera de acceder y modificar dichos valores es a través de los métodos
pertenecientes al protocolo del objeto.
![Page 15: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/15.jpg)
Computación
•Resultado de enviar
mensajes a los objetos
SQUEAK SMALLTALK
Unarios: pilaUno cantElems
Binarios: 5 > 2
Palabra clave: pilaUno apilar: 80
Pre
ced
enci
a
1
2
3
No alfabético
Receptor Selector
Argumento
![Page 16: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/16.jpg)
Computación
•Resultado de enviar
mensajes a los objetos
SQUEAK SMALLTALK
Unarios: pilaUno cantElems
Binarios: 5 > 2
Palabra clave: pilaUno apilar: 80
Pre
ced
enci
a
1
2
3
No alfabético
Receptor Selector
Argumento
2 < pilaUno cantElems and: True
pilaUno
![Page 17: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/17.jpg)
Computación
•Resultado de enviar
mensajes a los objetos
SQUEAK SMALLTALK
Unarios: pilaUno cantElems
Binarios: 5 > 2
Palabra clave: pilaUno apilar: 80
Pre
ced
enci
a
1
2
3
No alfabético
Receptor Selector
Argumento
2 < pilaUno cantElems and: True
pilaUno
4
![Page 18: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/18.jpg)
2 < pilaUno cantElems and: True4
Computación
•Resultado de enviar
mensajes a los objetos
SQUEAK SMALLTALK
Unarios: pilaUno cantElems
Binarios: 5 > 2
Palabra clave: pilaUno apilar: 80
Pre
ced
enci
a
1
2
3
No alfabético
Receptor Selector
Argumento
pilaUno
True
![Page 19: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/19.jpg)
Computación
•Resultado de enviar
mensajes a los objetos
SQUEAK SMALLTALK
Unarios: pilaUno cantElems
Binarios: 5 > 2
Palabra clave: pilaUno apilar: 80
Pre
ced
enci
a
1
2
3
No alfabético
Receptor Selector
Argumento
True
pilaUno
True
![Page 20: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/20.jpg)
SQUEAK SMALLTALK
• Un objeto se puede enviar un mensaje a sí mismo mediante el uso de la pseudo variable self.
apilar: unElem(self estaLlena)
ifTrue: [self error: ‘pila llena’]ifFalse: [tope := tope + 1.
elementos at: tope put: unElem]
pilaUno apilar: 80
self hace referencia al objeto receptor del mensaje
![Page 21: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/21.jpg)
SQUEAK SMALLTALK
• Métodos
Los objetos responden a los mensajes mediante la ejecución de métodos.
• El método de instancia en la clase de la cual un objeto es instancia, sólo se interesa por el estado interno de dicho objeto.
• Un método no puede afectar directamente las variables de instancia de otro objeto.
Ligadura entre la invocación (envío del mensaje) con la implementación de la operación (método)
en tiempo de ejecución.
El retorno de un metodo se especifica mediante el simbolo: ^
![Page 22: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/22.jpg)
SQUEAK SMALLTALK
apilar: unElem(self estaLlena)
ifTrue: [self error: ‘pila llena’]ifFalse: [tope := tope + 1.
elementos at: tope put: unElem]
Clase Boolean
(<expr. de prueba>) ifTrue: <Block> ifFalse: <Block>
Control
![Page 23: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/23.jpg)
Control
do: select : collect : reject : Clase Collection
ITERADORES
Clase Boolean
(<expr. de prueba>) ifTrue: <Block> ifFalse: <Block>
Clase BlockContext
• [<sec. de expr.] whileTrue: <Block> • [<sec. de expr.] whileFalse: <Block>
Clase Integer • x timesRepeat: <Block>
SQUEAK SMALLTALK
![Page 24: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/24.jpg)
SQUEAK SMALLTALK
Control
Pasaje de mensajes + clase BlockContext
El Objeto Bloque
• Permite encapsular una secuencia de expresiones
• Puede tener parámetros
• Puede ser pasado como parámetro o asignado
• Se evalúa (value) en el contexto en que fue definido
[:char | char isVowel].
| I J |
[ I := 3. J := 8.]
| I J |
[ I := 3. J := 8.] value
b:=[:char | char isVowel].b:=[:char | char isVowel].b value: $a.
apilar: unElem(self estaLlena)ifTrue: [self error: ‘pila llena’]ifFalse: [tope := tope + 1.
elementos at: tope put: unElem]
![Page 25: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/25.jpg)
Objeto:Instancia de
la clase:
3, 10, 12403 Integer
3.25, 500.5 Float
2/10, 58/2 Fraction
Expresiones
Los NUMEROS son OBJETOS
La evaluación de las expresiones se realiza de izquierda a derecha
Todos los operadores binarios aritméticos y lógicos tienen la misma precedencia y su argumento se evalúa con “evaluación ansiosa”
SQUEAK SMALLTALK
![Page 26: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/26.jpg)
Expresiones lógicas
Clases True y False
&, |, and:, or:, not
and: y or: son mensajes de palabra clave:
evaluación no estricta
|a b|
a:=true.
b:=false.
a or: [b:=true].
b
false
|a b|a:=true.b:=false.a | [b:=true].b
true
SQUEAK SMALLTALK
Clase True:and: bloque or: bloque
^bloque value ^self& objeto | objeto
^objeto ^selfnot
^false
![Page 27: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/27.jpg)
factorial
self > 1ifTrue: [ ^(self - 1) factorial * self ].
self < 0ifTrue: [ ^self error: ‘negative factorial’ ].
^1
Control, recursividad
En que clase deberíamos
definir este método?
SQUEAK SMALLTALK
![Page 28: Paradigma Orientado a Objetos - cs.uns.edu.arsg/lp/downloads/Clases Practica/POO y Smalltalk-2019.pdf · 3, 10, 12403 Integer 3.25, 500.5 Float 2/10, 58/2 Fraction Expresiones Los](https://reader031.vdocumento.com/reader031/viewer/2022013008/5e13dd515d28642b1004b148/html5/thumbnails/28.jpg)
HERENCIA
Cada clase tiene solo una única superclase (excepto la clase Objeto, que no tiene ninguna) y una clase puede tener cualquier cantidad de subclases.
Los métodos de una clase pueden acceder, además de a sus propias variables, a todas las variables de todas sus superclases; y pueden invocar a todos los métodos definidos en todas sus superclases.
Cuando se le envía un mensaje a un objeto, se ejecutará el método
que este definido en la clase ubicada en el menor nivel en la jerarquía a partir
de la clase de la cual el objeto receptor del mensaje es instancia.
Cuando se define un método que ya esta definido con igual signatura en
alguna clase superior en la jerarquía de clases se dice que el método esta
redefinido.
Sim
ple
De
Imp
lem
enta
ció
n
SQUEAK SMALLTALK