Programación Orientada a Aspectos (POA)

Slides:



Advertisements
Presentaciones similares
2. Manejo de memoria Manejo de memoria estática
Advertisements

MODELOS ORIENTADOS A OBJETOS
Enfoques de desarrollo
PROGRAMACION ORIENTADA A OBJETOS
Fundamentos de la programación orientada a objetos
Lenguaje de programación Java
Arquitectura CLARO-TECNOTREE
Programación Orientada a Objetos
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
Abstracciones y Modelos
El proceso de desarrollo de software
La Programación Orientado a Objetos
Lección 1 Introducción a la POO
Tipos de Datos Abstractos Modularidad
Introducción a la programación orientada a aspectos.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Programación Orientada a Objetos Encapsulamiento.
GENERACIONES DE LENGUAJES DE PROGRAMACIÓN
Herencia y Polimorfismo
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
UNIVERSIDAD LATINA (UNILA)
Aplicación del paradigma orientado a objetos
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
PROGRAMACION ORIENTADA A OBJETOS
Encapsulamiento y Abstracción
Programación Orientada a Objetos en Java
HERENCIA.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
SISTEMAS DE LA INFORMACIÓN
Material de apoyo Unidad 2 Estructura de datos
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo.
Fundamentos de Programación
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
Laura Patricia Pinto Prieto Ingeniera de sistemas.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Patrón Observador Un patrón de diseño es una descripción de clases y objetos comunicándose entre si adaptada para resolver un problema de diseño general.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Diseño del Software Diseño de datos Diseño arquitectónico
Ingeniería de Software
Programación Orientada a Aspectos
Fundamentos de Programación
Bases de Datos Orientadas a Objetos (BDOO)
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Un programa no es nada mas que una serie de instrucciones dadas al ordenador en un lenguaje entendido por el, para decirle exactamente lo que queremos.
INSTITUTO TECNOLOGICO DE MINATITLAN ASIGNATURA: FUNDAMENTOS DE PROGRAMACION DOCENTE: JOSE ANGEL TOLEDO ALVAREZ ALUMNA: ALEJANDRA OSORIO ARVISU SEMESTRE:
Diseño de Software y su Proceso
Programación orientada a objetos Capítulo 6 Diseño de clases.
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Programación Orientada a Objeto
PROGRAMACION ORIENTADA A OBJETOS
Diseño de Sistemas.
Introducción a UML Departamento de Informática Universidad de Rancagua
Visual Basic FUNCIONES Y PROCEDIMIENTOS
Fundamentos de Sistemas Expertos
III. DESARROLLO DE SISTEMAS.. Podemos definir el desarrollo de sistemas informáticos como el proceso mediante el cual el conocimiento humano y el uso.
Programación orientada a objetos
FUNDAMENTOS DE PROGRAMACION
Programación Orientada a Objetos: CLASES Y OBJETOS
La Programación Orientado a Objetos
Encapsulamiento Miguel Ángel Rojas Aguilar Esthela Carmina Carranza Cabrera.
Herencias Conceptos básicos i
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Prof. Manuel B. Sánchez. Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Transcripción de la presentación:

Programación Orientada a Aspectos (POA) Universidad Simón Bolívar. Programación Orientada a Aspectos (POA) Paradigma de programación. Presentado por: Linda Arvelo Sistemas Distribuidos.

La POA es un modelo de programación cuyo propósito es permitir una adecuada modularización de las aplicaciones y posibilitar una mejor separación de los requerimientos. Con el desarrollo de los sistemas han surgido nuevos problemas a la hora de programar. Dos de los principales inconvenientes que se tienen usando POO: Concepto Código Disperso El código de un requerimiento no esta encapsulado en un único modulo, sino que esta disperso por el programa. Código Mezclado Dentro de un mismo modulo encontramos código correspondiente a distintos requerimientos.

Objetivos de la Programación Orientada a Aspectos La POA esta orientada a mejorar la calidad del software, a entender e implementar de una manera separada cada uno de los requerimientos, para poder reutilizar el código de una forma más efectiva. Entre los objetivos principales de la POA están: Objetivos Separar los requerimientos para que las decisiones se tomen en un lugar concreto y no sea diseminado por la aplicación. Minimizar las dependencias entre los requerimientos para así desacoplar los distintos elementos que intervienen en un programa.

Dentro de POA existen dos partes esenciales que son: Componente: Pueden encapsularse claramente dentro de un procedimiento. Un elemento es claramente encapsulado si está bien localizado e identificado, es fácilmente accesible y resulta sencillo componerlo. Aspecto: Tiende a ser propiedades que afectan el rendimiento o la semántica de los componentes en forma sistemática. Ejemplo: sincronización, logging, distribución, etc.) Características La diferencia entre un componente y un aspecto es que el primero se puede encapsular claramente en un procedimiento, mientras que un aspecto no se puede encapsular en un procedimiento con los lenguajes tradicionales.

Elementos básicos de la POA Aspecto: “Un aspecto es una unidad modular que se dispersa por la estructura de otras unidades funcionales. Los aspectos existen tanto en la etapa de diseño como en la de implementación. Un aspecto de diseño es una unidad modular del diseño que se entremezcla en la estructura de otras partes del diseño. Un aspecto de programa o de código es una unidad modular del programa que aparece en otras unidades modulares del programa”. Definiciones Algunos ejemplos de aspectos son, los patrones de acceso a memoria, la sincronización de procesos concurrentes, el manejo de errores, etc.

Definiciones Punto de Unión (joinpoint): …Continuación Punto de Unión (joinpoint): Están definidos como una clase especial de interfaz entre los aspectos y el código base, se podría decir que son puntos que representa un "momento" en la ejecución de un programa. Por ejemplo, una llamada a un método, o un constructor, o el acceso a un miembro de una clase en particular. Definiciones Intersección o Puntos de Corte (pointcut): Los puntos de corte en sí son una declaración de un conjunto de puntos de unión, los cuales son parte de los aspectos e indican en que puntos de unión se aplicará el aspecto. Consejo o Avisos (advice): Un aviso define el comportamiento que se quiere invocar cuando se alcance un determinado punto de intersección o de corte, es decir, son las acciones a tomar en esos puntos de unión.

Definiciones …Continuación Concern: Es una funcionalidad a implementar en el sistema. Cross-Cutting Concerns: Se refieren determinadas funcionalidades que afectan al conjunto de sistema, ejemplos: Trazas o logging. Política de seguridad. Transacciones. Definiciones Weaving o Tejedor: Permite tejer los aspectos en el código base. Se clasifican en dos tipos, definidos según el momento en el que introducen los mecanismos para decidir sobre la aplicación de dichos aspectos: Estáticos Dinámicos

Implementación Aspectos en interacción con el programa base Programa Modelo de objetos Aspecto de sincronización Aspecto de gestión de errores … Aspecto de distribución Aspecto de gestión de memoria Programa Implementación

Implementación Implementación de los lenguajes tradicionales Lenguaje Compilador Implementación Lenguaje Usuario Programa

Programa de componentes Estructura de una implementación en los lenguajes de aspectos Lenguaje base Compilador Usuario Programa de componentes Programa de Aspectos 1 Programa de Aspectos 2 Lenguaje de aspectos Weaving Implementación

Algunas de las ventajas que presenta la POA son: Un código menos enmarañado, más natural y más reducido. Mayor facilidad para razonar sobre los conceptos, ya que están separados y las dependencias entre ellos son mínimas. Un código más fácil de depurar y más fácil de mantener. Se consigue que un conjunto grande de modificaciones en la definición de una materia tenga un impacto mínimo en las otras. Se tiene un código más reusable y que se puede acoplar y desacoplar cuando sea necesario. Ventajas

También existen desventajas a la hora de utilizar POA, algunas de estas son: El diseño de los puntos de enlace entre los aspectos es más complejo. Se debe tener en cuenta el análisis de nuevas características dentro del desarrollo de sistemas. Surgen nuevos problemas de choque entre el lenguaje base y el lenguaje funcional. Pueden existir problemas de herencia de un aspecto a otro. Desventajas

Ejemplo package ejemplo; public class HelloWorld { public static void main(String[] args) { HW H; H= new HW(); H.showMensaje(); } package ejemplo; public class HW { private String mensaje; public HW() { this.mensaje = “Hello World"; } public void setMensaje(String M){ this.mensaje = M; public String getMensaje(){ return this.mensaje; public void showMensaje(){ System.out.println(this.mensaje); package ejemplo; public aspect Aspecto { pointcut mensajesAImprimir() : call (void HW.showMensaje()); before(): mensajesAImprimir(){ System.out.println(“Hola a todos"); } after(): mensajesAImprimir(){ System.out.println(“Chao a todos"); Ejemplo