Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas...

37
Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO DE ORIZABA

Transcript of Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas...

Page 1: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Objetos, aspectos y algo más: nuevas tendencias en programaciónULISES JUÁREZ MARTÍNEZ, PHD

TECNM / INSTITUTO TECNOLÓGICO DE ORIZABA

Page 2: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

AgendaMotivación

Objetos◦ Objetos funcionales

Aspectos◦ Relaciones referenciales

Programación naturalística◦ Tipos naturalísticos

Lenguajes naturalísticos◦ Pegasus

◦ Sicut Naturali (SN)

Conclusiones

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 2

Page 3: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Motivación

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 3

Page 4: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Ordenación de una lista1 void bubbleSort(int[] arr) {

2 int n = arr.length;

3 int temp = 0;

4 for(int i = 0; i < n; i++) {

5 for(int j = 1; j < (n-i); j++) {

6 if(arr[j-1] > arr[j]) {

7 temp = arr[j-1];

8 arr[j-1] = arr[j];

9 arr[j] = temp;

10 }}}}

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 4

Page 5: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Ordenación de una lista“Repeat the following, until the list is

sorted: Go through the list from the

beginning till the end. Whenever the

actual element is bigger than the

following exchange them. If during a pass

no exchange occurred, the list is

sorted.”

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 5

Page 6: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

ObjetosEL PROBLEMA SE MODELA CON ENTIDADES DEL MUNDO REAL

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 6

Page 7: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Ventajas de los objetosEncapsulación◦ Protección de datos

Herencia◦ Reutilización de clases

Polimorfismo◦ Diferente comportamiento con el mismo nombre

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 7

Page 8: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Desventajas de los objetosConcurrencia◦ Los objetos no son concurrentes

Herencia◦ No es posible limitarla o desactivarla

Composición◦ Asociada al acoplamiento

◦ Preferible la agregación – inyección de dependencias

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 8

Page 9: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Desventajas de los objetosRequerimientos no funcionales◦ No se cuenta con el soporte adecuado para su encapsulación y

reutilización

◦ Se dispersan entre los objetos

◦ Interfieren con la funcionalidad básica del sistema

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 9

Page 10: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Objetos funcionalesProgramación funcional◦ Técnica de programación donde los sistemas se construyen

utilizando funciones matemáticas

◦ Paradigma declarativo – enfoque en el “qué”

◦ Sistemas robustos con facilidad de prueba y mantenimiento

Objetos + funciones = objetos funcionales◦ Scala, Java, Javascript, Python, etc.

Presentan las mismas ventajas y desventajas

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 10

Page 11: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

AspectosREUTILIZACIÓN DE REQUERIMIENTOS NO FUNCIONALES

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 11

Page 12: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Aspectos en forma visual

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 12

Puntos de unión

Módulosreutilizables Cortes

(crosscutting)

Avisos

Page 13: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Evolución de sistemas

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 13

Entrelazado (weaving)= Sistema completo

Sustituir/agregar aspecto

Evolución del sistema (estática y/o dinámica)

Page 14: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Avisos en el lenguaje AspectJ

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 14

before

call

after

call

before

execution

after

execution

around

call

around

execution

Page 15: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Código de aspectos1 public aspect Cronometraje {

2 private long inicio, fin;

3 pointcut ataque():

4 execution(void Catapulta.lanzarRocas());

5 before(): ataque() {

6 inicio = System.nanoTime();

7 }

8 after(): ataque() {

9 fin = System.nanoTime();

10 System.out.println("Tiempo de ataque: " +

11 fin - inicio) + " nanosegundos");

12 }}

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 15

Page 16: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Ventajas de los aspectosReutilización de requerimientos no funcionales◦ Incremento en la modularidad de sistemas orientados a objetos

◦ Facilidad de razonamiento en cada parte del problema

Complementan el modelo de objetos◦ Se conoce como paradigma ortogonal

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 16

Page 17: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Desventajas de los aspectosNo es un paradigma independiente◦ Requiere de objetos para generar el comportamiento deseado

◦ Todo queda representado en clases (bytecode)

Problemas de fragilidad◦ El código de aspectos es dependiente del código de objetos

◦ Dependencia sintáctica

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 17

Page 18: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

(des)Ventajas sintácticas de los aspectos“Para todos los métodos que lanzan rocas registrar el tiempo de ejecución”

3 pointcut ataque():

4 execution(* *.lanzarRocas(..));

5 before(): ataque() {

6 inicio = System.nanoTime();

7 }

8 after(): ataque() {

9 fin = System.nanoTime();

“Registrar el tiempo de ejecución cuando se lancen rocas”

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 18

Referencia temporal

Referencia estructural

Referencia estructural

Page 19: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Relaciones referenciales de los aspectosRelación estructural◦ before

◦ after

◦ around

Relación temporal◦ Todos o algunos: *, lanzar*

◦ Argumentos: (..), (*,..), (int, *, ..)

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 19

Page 20: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Relaciones referenciales de los aspectosRelación temporal – primitivas de corte en AspectJ◦ execution, call

◦ get, set

◦ initialization, staticinitialization, preinitialization

◦ handler

◦ args, this, target

◦ within, withincode

◦ if, cflow, cflowbelow

◦ adviceexecution

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 20

• Esos mecanismos también están cercanos al lenguaje natural (naturalísticos)

• Usar ese tipo de relaciones referenciales al escribir en español, inglés, portugués o hebreo

Page 21: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Programación naturalísticaESCRIBIR PROGRAMAS CON AYUDA DEL LENGUAJE NATURAL

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 21

Page 22: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Tipos naturalísticosAntecedentes◦ Objetos, funciones, lógica y aspectos

◦ Reflejan una faceta de cómo piensan las personas

◦ Permiten comunicar información al igual que el lenguaje natural

◦ Programación lógica◦ Se basa en la lógica de primer orden

◦ Usa la lógica para el planteamiento de problemas y el control sobre las reglas de inferencia para alcanzar la solución automática

◦ Lenguaje Prolog

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 22

Page 23: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Tipos naturalísticosDefinición◦ Un tipo naturalístico es un conjunto de cualidades que todas las

instancias deben cumplir para pertenecer a ese tipo◦ Una instancia es “de un tipo” o no

◦ Conjunto de cualidades – representables por predicados lógicos

◦ Instancias – “del” tipo respectivo

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 23

Page 24: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Tipos naturalísticosUna instancia puede ser de cierto concepto◦ “una casa”

Propiedades◦ “grande” o “hermoso”

Restricciones adicionales◦ “Una casa con una puerta de madera marrón”

◦ “Una casa que se encuentra junto al río”

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 24

Page 25: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

EjemplosNATURALÍSTICO

Jerarquía◦ (a house) is (a building)

Propiedades/atributos◦ (the house) is red

◦ beautiful modern house

◦ not beautiful modern house

JAVA

◦ class House extends Building {}

◦ assert house.color == Color.RED;

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 25

Page 26: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

EjemplosNATURALÍSTICO

Cuantificación◦ three houses◦ two or more houses◦ (a house) has (residents and an owner)

Condiciones◦ a beautiful modern house (where (some window) is open)◦ two integers ((which) are divisible by (10))

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 26

Page 27: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Lenguajes naturalísticos

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 27

Page 28: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

PegasusEs un lenguaje de programación natural◦ La codificación es posible utilizando lenguaje natural en alemán,

inglés, chino, hindi, español, ruso y otros idiomas

Utiliza:◦ Concepto de idea

◦ Diccionario como elemento de memoria

◦ Biblioteca para el significado y conocimiento semántico

◦ Generador de código Java

◦ Base de datos grande para conocimiento léxico

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 28

Page 29: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

PegasusEjemplos◦ “Delete contact data of an employee five years after this employee

has left the university.

◦ “Take the row Σ(1/n2). Print “convergence”, if the row is convergent.”

◦ “In X, Y, and Z there are coal-fired power stations. In every city there is a transformer station. Connect the power stations with the nearest high voltage power line. Then start them running.”

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 29

Page 30: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Sicut Naturali (SN)Es un lenguaje de programación naturalístico de propósito general◦ Desarrollado en el I. T. Orizaba

◦ Tesis doctoral

◦ Basado en un modelo conceptual◦ Define los elementos mínimos para un paradigma naturalístico

◦ Permite el desarrollo de lenguajes naturalísticos de propósito general

◦ El compilador genera bytecode para la JVM◦ Utiliza Scala y AspectJ

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 30

Page 31: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Sicut Naturali (SN)Modelo conceptual◦ Elementos mínimos

◦ Substantivo (singular y plural), adjetivo, verbo y circunstancia (eventos)

◦ Sintagma (oraciones complejas)

◦ Anáfora (referencia a elementos descritos previamente)

◦ Elementos opcionales◦ Deixis completa (referencia a elementos descritos antes y después del texto)

◦ Indicadores (abstracciones)

◦ Tipificación basada en propiedades (agregar nuevas propiedades)

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 31

Page 32: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Sicut Naturali (SN) – Ejemplos◦main Sumatoria:

an Integer Number with 10 as value.

an Integer Number with 25 as value.

an Integer Number with 34 as value.

add the second Number to the first Number.

System prints it and newline.

add the first Number to the third Number.

System prints it.

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 32

35

69

Page 33: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Sicut Naturali (SN) – Ejemplos◦main Plurales:

number are Numbers.

plural add 5 to numbers.

plural add 6 to numbers.

plural add 9 to numbers.

plural add 1 to numbers.

plural add 0 to numbers.

plural add 3 to numbers.

repeat the next instruction for each

element of numbers as number.

System prints number and end.

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 33

5

6

9

1

0

3

Page 34: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Conclusiones

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 34

Page 35: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Los objetos tienen limitaciones

La programación orientada a aspectos ayuda y complementa a los objetos

La sintaxis derivada de programas de aspectos son la base para expresar ideas en forma cercana a un idioma

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 35

Page 36: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

Programación naturalística◦ Nuevo enfoque que permite programar utilizando formas

controladas de un lenguaje natural

◦ Pegasus es un lenguaje naturalístico que utiliza diversas tecnologías para lograr programar de forma natural

◦ SN es un lenguaje naturalístico de propósito general basado en un modelo naturalístico que no requiere de tecnologías adicionales

◦ Fuerte interés en especificación de requerimientos◦ La especificación es el programa a ejecutar

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 36

Page 37: Objetos, aspectos y algo más: nuevas tendencias en ... · Objetos, aspectos y algo más: nuevas tendencias en programación ULISES JUÁREZ MARTÍNEZ, PHD TECNM / INSTITUTO TECNOLÓGICO

¿Preguntas?

[email protected]

6/17/2019 TECNM/ITO - ULISES JUÁREZ MARTÍNEZ, PHD 37