Articulo de referencia

Punto de corte

En la programación orientada a aspectos , un punto de corte es un conjunto de puntos de unión . El punto de corte especifica dónde aplicar exactamente el consejo , lo que permit...

En la programación orientada a aspectos , un punto de corte es un conjunto de puntos de unión . El punto de corte especifica dónde aplicar exactamente el consejo , lo que permite la separación de preocupaciones y ayuda a modularizar la lógica empresarial. [1] Los puntos de corte a menudo se especifican utilizando nombres de clase o nombres de método, en algunos casos utilizando expresiones regulares que coinciden con el nombre de clase o método. Diferentes marcos admiten diferentes expresiones de punto de corte; la sintaxis de AspectJ se considera un estándar de facto. Hay marcos disponibles para varios lenguajes de programación como Java , Perl , Ruby y muchos más que admiten puntos de corte.

Fondo

Debido a las limitaciones de varios lenguajes de programación, la preocupación transversal no se ha modularizado. La preocupación transversal se refiere a partes del software que pertenecen lógicamente a un módulo y afectan a todo el sistema: esto podría ser la seguridad o el registro, por ejemplo. [2] La programación orientada a aspectos intenta resolver estas preocupaciones transversales al permitir que los programadores escriban módulos llamados aspectos, que contienen fragmentos de código que se ejecutan en un punto particular. Las expresiones necesarias para seleccionar un punto particular llevaron a la creación de expresiones de punto de corte.

Ejecución

Cada vez que la ejecución del programa alcanza uno de los puntos de unión descritos en el punto de corte, se ejecuta un fragmento de código asociado con el punto de corte (llamado consejo). Esto permite a un programador describir dónde y cuándo se debe ejecutar código adicional además del comportamiento ya definido. Pointcut permite la adición de aspectos al software existente, así como el diseño de software con una clara separación de preocupaciones , en donde el programador entrelaza (fusiona) diferentes aspectos en una aplicación completa.

Ejemplo

Supongamos que tenemos una aplicación en la que podemos modificar registros de una base de datos . Siempre que los usuarios modifican la base de datos, queremos tener un registro de información sobre quién está modificando los registros. La forma tradicional de registrar es llamar a un método log justo antes de modificar la base de datos. Con la programación orientada a aspectos, podemos aplicar pointcut al método Modify Database y tener un consejo que se llama para registrar la información requerida. [3]

Expresiones

A continuación se presentan algunas expresiones de punto de corte importantes admitidas por AspectJ . Estas expresiones se pueden combinar mediante operadores lógicos. [4]

ejecución ( void Usuario . setPassword ( contraseña )) 

Este punto de corte coincide con la ejecución del método User.setPassword.

llamar ( void Usuario . getPassword ()) 

Cuando se llama a User.getPassword, se coincide con este punto de corte.

manejador ( ArrayIndexOutOfBounds )

Pointcut coincidirá cuando haya una excepción ArrayIndexOutOfBounds

este ( TipoUsuario )

El punto de corte coincidirá cuando el objeto que se está ejecutando actualmente sea de tipo UserType.

objetivo ( TipoUsuario )

El punto de corte coincidirá cuando el objeto de destino sea de tipo UserType.

dentro de ( TipoUsuario )

El punto de corte coincidirá cuando el código que se ejecuta pertenezca a UserType.

Críticas

Los lenguajes pointcut afectan de forma negativa a propiedades importantes del software, como la capacidad de evolución y la comprensión. Puede darse la posibilidad de que sea necesario realizar una refactorización para definir un aspecto correcto, lo que en general no debería ocurrir, ya que la refactorización sirve para hacer que el código sea más limpio. Tampoco es escalable cuando hay varios aspectos que se deben aplicar al mismo código y cada aspecto requiere una refactorización diferente. [5] En general, cada aspecto estará estrechamente vinculado a la estructura de una aplicación, ya que los pointcuts contienen explícitamente la firma de un método, por lo que cuando una aplicación cambia, el pointcut también debe cambiarse. Esto puede ser bastante problemático para un desarrollador. [5]

Referencias

  1. ^ "Una clasificación de construcciones lingüísticas de punto de corte" (PDF) . Consultado el 29 de diciembre de 2019 .
  2. ^ "Introducción a AspectJ" . Consultado el 14 de septiembre de 2016 .
  3. ^ "JBoss AOP - Guía del usuario". docs.jboss.org . Consultado el 14 de septiembre de 2016 .
  4. ^ "Unión de puntos y cortes de puntos" . Consultado el 14 de septiembre de 2016 .
  5. ^ ab "PointCuts generados inductivamente para soportar la refactorización de Aspectos". 2004. CiteSeerX 10.1.1.2.594 . 
  • Artículo "Regreso al futuro: puntos de corte como predicados sobre trazos" de Karl Klose y Klaus Ostermann
  • Artículo "Punto de corte remoto: una construcción de lenguaje para AOP distribuido" de Muga Nishizawa, Shigeru Chiba y Michiaki Tatsubori
  • Artículo "Datalog como lenguaje de puntos de corte en la programación orientada a aspectos"
  • Artículo "Expresividad y complejidad de los lenguajes transversales" de Karl J. Lieberherr, Jeffrey Palm y Ravi Sundaram
Obtenido de "https://es.wikipedia.org/w/index.php?title=Corte de puntos&oldid=1167030978"