• No se han encontrado resultados

Paradigmas de Lenguajes de Programación

N/A
N/A
Protected

Academic year: 2021

Share "Paradigmas de Lenguajes de Programación"

Copied!
28
0
0

Texto completo

(1)

Paradigmas de Lenguajes de Programaci´

on

Paradigma de Objetos: Taller con smalltalk

Departamento de Computaci´on, FCEyN, UBA

(2)

Objetivos del d´ıa

1 Conocer el entorno Pharo

2 Reforzar lo que sabemos de objetos

I env´ıo de mensajes

I mensajes de instancia vs. mensajes de clase

I polimorfismo

3 Metodolog´ıa para progamar usando tests 4 Algunas sugerencias de dise˜no

(3)

Machete

Sintaxis

”Comentarios” | var1 var2 ...|

[:arg1 :arg2 | | var1 var2 | expresi´on] expresi´on1. expresi´on2. expresi´on3

objeto mensaje objeto msg1; msg2 var := expresi´on ˆ expresi´on Literales 123 123.4 $c ’palabra’ #simbolo #(123 123.3 $a ’abc’ #abc) Palabras Reservadas self super nil true false thisContext

(4)

Conociendo Pharo

Algunas herramientas b´asicas:

Playground/Workspace para interactuar con el sistema Transcript para registrar lo que pasa

System browser para navegar las clases definidas Inspector para inspeccionar un objeto

Debugger para ver en qu´e le pifiamos

(5)

Conociendo Pharo

Algunas herramientas b´asicas:

Playground/Workspace para interactuar con el sistema Transcript para registrar lo que pasa

System browser para navegar las clases definidas Inspector para inspeccionar un objeto

Debugger para ver en qu´e le pifiamos

(6)

Precalentando...

1 Definir (en el playground) un closure que reciba un par´ametro n y nos

diga la fecha dentro de n d´ıas.

2 Implementar una forma sencilla de verificar si un d´ıa cualquiera es fin

de semana. Para ello, un objeto de la clase Date deber´a responder al mensaje ”esFinde” que devuelve true o false.

(7)

Precalentando...

1 Definir (en el playground) un closure que reciba un par´ametro n y nos

diga la fecha dentro de n d´ıas.

2 Implementar una forma sencilla de verificar si un d´ıa cualquiera es fin

de semana. Para ello, un objeto de la clase Date deber´a responder al mensaje ”esFinde” que devuelve true o false.

(8)

Cada loco con su Pharo

Pharo es un sistema base que nosotros modificamos No hay diferencia entre el lenguaje y nuestro c´odigo Podemos modificar cualquier clase del sistema

La imagen contiene el estado completo del sistema en un instante

Este estado incluye todos los objetos existentes, incluyendo clases y m´etodos que hayamos definido... ¡guarden la imagen!

(9)

Cada loco con su Pharo

Pharo es un sistema base que nosotros modificamos No hay diferencia entre el lenguaje y nuestro c´odigo Podemos modificar cualquier clase del sistema

La imagen contiene el estado completo del sistema en un instante

Este estado incluye todos los objetos existentes, incluyendo clases y m´etodos que hayamos definido... ¡guarden la imagen!

(10)

Ejercicio: Polinomios

Modelar polinomios de una variable en Pharo.

Para atacar la hoja en blanco vamos a hacer una versi´on light de TDD. Las ideas principales:

1 Pensar una funcionalidad chica que nos est´e faltando 2 Escribir un test que describa la funcionalidad

3 Hacer pasar el test 4 Refactorizar si hace falta 5 Volver al paso 1

¿C´omo llamo a los Test?

(11)

Ejercicio: Polinomios

Modelar polinomios de una variable en Pharo.

Para atacar la hoja en blanco vamos a hacer una versi´on light de TDD.

Las ideas principales:

1 Pensar una funcionalidad chica que nos est´e faltando 2 Escribir un test que describa la funcionalidad

3 Hacer pasar el test 4 Refactorizar si hace falta 5 Volver al paso 1

¿C´omo llamo a los Test?

(12)

Ejercicio: Polinomios

Modelar polinomios de una variable en Pharo.

Para atacar la hoja en blanco vamos a hacer una versi´on light de TDD. Las ideas principales:

1 Pensar una funcionalidad chica que nos est´e faltando 2 Escribir un test que describa la funcionalidad

3 Hacer pasar el test 4 Refactorizar si hace falta 5 Volver al paso 1

¿C´omo llamo a los Test?

(13)

Ejercicio: Polinomios

Modelar polinomios de una variable en Pharo.

Para atacar la hoja en blanco vamos a hacer una versi´on light de TDD. Las ideas principales:

1 Pensar una funcionalidad chica que nos est´e faltando 2 Escribir un test que describa la funcionalidad

3 Hacer pasar el test 4 Refactorizar si hace falta 5 Volver al paso 1

¿C´omo llamo a los Test?

(14)

Ejercicio: Polinomios

Modelar polinomios de una variable en Pharo.

Para atacar la hoja en blanco vamos a hacer una versi´on light de TDD. Las ideas principales:

1 Pensar una funcionalidad chica que nos est´e faltando 2 Escribir un test que describa la funcionalidad

3 Hacer pasar el test 4 Refactorizar si hace falta 5 Volver al paso 1

¿C´omo llamo a los Test?

(15)

Subclasificaci´

on

Variable, Constante, Suma y Producto tienen pinta parecida... ¿tiene sentido que tengan una superclase en com´un?

Hacerse las siguientes preguntas puede ayudar a decidir:

¿En mi cabeza representan formas m´as concretas de un concepto m´as general?

¿Se los usa de forma intercambiable en alguna situaci´on? ¿Me restringe mucho hacerlo?

(16)

Subclasificaci´

on

Variable, Constante, Suma y Producto tienen pinta parecida... ¿tiene sentido que tengan una superclase en com´un?

Hacerse las siguientes preguntas puede ayudar a decidir:

¿En mi cabeza representan formas m´as concretas de un concepto m´as general?

¿Se los usa de forma intercambiable en alguna situaci´on? ¿Me restringe mucho hacerlo?

(17)

Subclasificaci´

on

Variable, Constante, Suma y Producto tienen pinta parecida... ¿tiene sentido que tengan una superclase en com´un?

Hacerse las siguientes preguntas puede ayudar a decidir:

¿En mi cabeza representan formas m´as concretas de un concepto m´as general?

¿Se los usa de forma intercambiable en alguna situaci´on? ¿Me restringe mucho hacerlo?

(18)

Subclasificaci´

on

Variable, Constante, Suma y Producto tienen pinta parecida... ¿tiene sentido que tengan una superclase en com´un?

Hacerse las siguientes preguntas puede ayudar a decidir:

¿En mi cabeza representan formas m´as concretas de un concepto m´as general?

¿Se los usa de forma intercambiable en alguna situaci´on?

¿Me restringe mucho hacerlo? ¿Es necesario?

(19)

Subclasificaci´

on

Variable, Constante, Suma y Producto tienen pinta parecida... ¿tiene sentido que tengan una superclase en com´un?

Hacerse las siguientes preguntas puede ayudar a decidir:

¿En mi cabeza representan formas m´as concretas de un concepto m´as general?

¿Se los usa de forma intercambiable en alguna situaci´on? ¿Me restringe mucho hacerlo?

(20)

Subclasificaci´

on

Variable, Constante, Suma y Producto tienen pinta parecida... ¿tiene sentido que tengan una superclase en com´un?

Hacerse las siguientes preguntas puede ayudar a decidir:

¿En mi cabeza representan formas m´as concretas de un concepto m´as general?

¿Se los usa de forma intercambiable en alguna situaci´on? ¿Me restringe mucho hacerlo?

(21)

Versionado

¡Funciona! ¿C´omo compartimos esta maravilla?

Hay varias formas:

Exportar el c´odigo y mandar el .st por mail

Commitear los .st en un SCM tradicional (git, svn, etc.) Control de versiones objetoso: Monticello

(22)

Versionado

¡Funciona! ¿C´omo compartimos esta maravilla?

Hay varias formas:

Exportar el c´odigo y mandar el .st por mail

Commitear los .st en un SCM tradicional (git, svn, etc.) Control de versiones objetoso: Monticello

(23)

Versionado

¡Funciona! ¿C´omo compartimos esta maravilla?

Hay varias formas:

Exportar el c´odigo y mandar el .st por mail

Commitear los .st en un SCM tradicional (git, svn, etc.)

(24)

Versionado

¡Funciona! ¿C´omo compartimos esta maravilla?

Hay varias formas:

Exportar el c´odigo y mandar el .st por mail

Commitear los .st en un SCM tradicional (git, svn, etc.) Control de versiones objetoso: Monticello

(25)

¿C´

omo seguimos?

Nos gustar´ıa que se puedan mostrar los polinomios

Pensar... ¿Hay algo repetido entre la implementaci´on de evaluarCon: y mostrar?

¡La forma de recorrer la estructura!

Desacoplar estas responsabilidades es un t´ıpico problema de dise˜no. Muestra gratis de c´omo se tratan estas cosas en Ingenier´ıa 2 Si quieren la posta, cursen las optativas de objetos.

(26)

¿C´

omo seguimos?

Nos gustar´ıa que se puedan mostrar los polinomios

Pensar... ¿Hay algo repetido entre la implementaci´on de evaluarCon: y mostrar?

¡La forma de recorrer la estructura!

Desacoplar estas responsabilidades es un t´ıpico problema de dise˜no. Muestra gratis de c´omo se tratan estas cosas en Ingenier´ıa 2 Si quieren la posta, cursen las optativas de objetos.

(27)

¿C´

omo seguimos?

Nos gustar´ıa que se puedan mostrar los polinomios

Pensar... ¿Hay algo repetido entre la implementaci´on de evaluarCon: y mostrar?

¡La forma de recorrer la estructura!

Desacoplar estas responsabilidades es un t´ıpico problema de dise˜no. Muestra gratis de c´omo se tratan estas cosas en Ingenier´ıa 2 Si quieren la posta, cursen las optativas de objetos.

(28)

Referencias

Documento similar

Una vez llevado a cabo este análisis podemos decir que existen en la actualidad muy pocos estudios que utilicen el test de sentadilla overhead como medio para evaluar la

If you are covered by a reciprocal agreement for health and social security (citizens of Denmark, Finland, France, Luxembourg, Norway, Portugal and Sweden), you may be eligible

• Greenwashing Si algunas empresas saltaron a este paso sin pasar por el anterior volver al punto

DECORA SOLO LAS IMÁGENES QUE NECESITES PARA LLEGAR AL NÚMERO CORRESPONDIENTE... CEIP Sansueña/CEIP Juan XXIII Infantil

Las personas solicitantes deberán incluir en la solicitud a un investigador tutor, que deberá formar parte de un grupo de investigación. Se entiende por investigador tutor la

La solución que se ha planteado, es que el paso o bien se hiciese exclusivamente por el adarve de la muralla, o que una escalera diese acceso por la RM evitando la estancia (De

Imparte docencia en el Grado en Historia del Arte (Universidad de Málaga) en las asignaturas: Poéticas del arte español de los siglos XX y XXI, Picasso y el arte español del

La clase ProblemCursorWrapper extiende de la clase CursorWrapper; se ha diseñado para obtener los ejercicios que se pueden resolver de la base de datos por parte del Alumno.