Programación Orientada a Aspectos

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Programación Orientada a Aspectos"

Transcripción

1 Programación Orientada a Aspectos La definición de "Programación Orientada a Aspectos" (AOP) es similar a cualquier otra que se pueda leer acerca de una nueva tecnología que pretenda solventar los problemas recurrentes de la construcción de software. Separar, encapsular, modularizar, facilitar,... Pero qué tiene entonces de especial este paradigma? No tenemos ya la ubicua programación orientada a objetos para eso? Pues la verdad es que a lo que estamos acostumbrados está bien (OOP), pero la AOP aporta un puntito interesante al asunto. La gracia del tema está en que parece haber sido ideada más por programadores que por arquitectos. Su índole es de carácter práctico, y va más allá del trazado de subdivisones, diagramas de abstracciones, o esquemas de muy alto nivel de más que cuestionable utilidad en el día a día. Para entender que es lo que aporta la AOP frente a otras tecnologías, lo mejor es utilizar un ejemplo. Esto es lo que hacen prácticamente todos los artículos que pueden leerse por Internet, y resulta comprensible, los objetivos que persigue este paradigma son tan génericos que resulta complicado entender la filosofía de su enfoque si no se ve su aplicación sobre casos concretos. El ejemplo "paradigmático" de esta tecnología consiste en imaginar un paquete de clases cualquiera, escrito en cualquier lenguaje de programación disponible, al que se quiere añadir una nueva responsabilidad. Por ejemplo, imaginemos que se trata de un paquete de clases que se utiliza para gestionar las cuentas de usuarios de un sistema online. Por política de la empresa propietaria del sistema, se decide que cada vez que se ejecute un método de estas clases, se debe escribir en un fichero de texto de trazas (log) un mensaje con el nombre del método ejecutado para hacer un seguimiento exhaustivo del uso de este paquete. Siguiendo un procedimiento bastante habitual, se abriría el IDE, y se empezaría a cambiar uno a uno los métodos de las clases, añadiendo las líneas de código oportunas para escribir al log. Aunque es posible también que se creara un paquete nuevo de clases por encima, a modo de proxy, que se dedicase solamente a escribir al log y pasar la llamada al paquete original. Con este último enfoque incluso se podría utilizar un patrón Factory, e instanciar clases de un paquete u otro a conveniencia, para su uso por ejemplo en los entornos de desarrollo donde el seguimiento exhaustivo no es preciso. No obstante, aún quedarían bastantes detalles por afinar, como qué

2 sistema de logger utilizar, y sobre todo, qué ocurrirá si en un futuro se decide cambiar dicho sistema de, supongamos inicialmente uno inhouse, a un paquete comercial, o tal vez a uno libre y de código abierto. Aunque sobre este último punto se podría argumentar que lo correcto sería ceñirse a una interface bien definida, y posiblemente estándar, para que el cambio fuese lo menos dramático posible. Y aún asi, habría que seguir decidiendo que ocurre si se produce por ejemplo una excepción al escribir al log, y una de serie de cosas por el estilo. La clave del asunto está en observar dos puntos importantes. Primero, que las distintas soluciones implican modificar el código ya existente, y segundo, que el paquete afectado asume una nueva responsabilidad más allá de para la que fue creada originalmente, esto es, gestionar cuentas de usuario. La programación orientada a aspectos promete que es capaz de conseguir lo que se pide sin tener que modificar ni una sola línea de código ya existente, y manteniendo claramente separadas ambas funcionalidades, a pesar de que una utilice la otra. Y cómo obra esta magia? Pues viendo a los programas como lo que son en la práctica, cuando se encuentran en ejecución: flujos de instrucciones y datos. Considera los acontecimientos que suceden durante la ejecución de un programa (creación de una instancia de la clase C, ejecución del método M, lanzamiento de la excepción E,...), y se los ofrece al programador, para que pueda asociarles el código que quiera que se ejecute cuando ocurra alguno de esos acontecimientos. Es similar a la programación basada en eventos, donde se indica a que método se tiene que llamar cuando ocurre algo de particular interés, como la pulsación de un botón por ejemplo, pero llevada a otro ámbito, el de la ejecución del código. Similar a lo que se hace desde un depurador cuando se pone un punto de parada condicional. La AOP permite al programador escribir una regla del estilo "cuando se ejecute cualquier método del paquete [de cuentas], llama a mi función [que escribe un mensaje en el log]". Y lo más grande es que en la práctica (en la vida real, con un compilador real que soporte AOP) basta crear un fichero con apenas 10 líneas de código para escribir esa regla y conseguir el resultado deseado. Esta tecnología no espera que el programador se ciña a una interface, a un diseño por contrato, que utilice anotaciones, o cualquier otro tipo de meta-información embebida dentro de "su" código. El enfoque es radicalmente opuesto. La tecnología ofrece cosas al programador

3 en vez de exigirle. Permite inyectar "por fuera" la funcionalidad requerida en el momento deseado. Lo bueno de este enfoque, vuelvo a repetir, retornando al ejemplo, es que no hay que tocar el código fuente ya existente, las reglas se definen en otro fichero, y las funcionalidades quedan separadas completamente, es sólo en el fichero de reglas donde se encontrarán las referencias a los dos paquetes. Por un lado el sistema de gestión de cuentas, que se dedicará única y exclusivamente a gestionar cuentas, y por otro el sistema de logging, que se limitará a escribir al log. Pero cómo se consigue esto en la práctica? Pues gracias a una serie de proyectos que han incorporado la AOP a lenguajes de programación de uso habitual. Para probar esto de una forma rápida y cómoda recomiendo AspectJ, que es una implementación para Java, y AJDT, que es su correspondiente plugin para Eclipse. En este ambiente, la definición de la regla del ejemplo quedaría escrita en un fichero con extensión ".aj" de forma similar a como se muestra en el ejemplo siguiente: public aspect AspectLogging{ pointcut logging() : execution(* com.enterprise.product.accounts.*.*(..) ); before() : logging(){ System.out.println(thisJoinPoint); } } El código es bastante sencillo, es más, tiene el aspecto de código Java ordinario, pero utilizando algunas palabras reservadas propias. Por ejemplo, aspect sirve para encapsular las reglas, de igual forma que lo hace class con los métodos y atributos. De hecho, un aspect funciona por defecto como un Singleton, y admite métodos y atributos como si fuera una clase ordinaria. La diferencia es que permite además incluir puntos de corte (pointcut), que sirven para definir los momentos concretos durante la ejecución del programa en los que se tiene que activar. Con execution se indica que se active, como si fuera un evento, cuando se ejecute un método que cumpla con el patrón que se le pasa como parámetro. Otras posibilidades incluyen handler para que se active al saltar una interrupción de un tipo concreto, call para cuando se invoque a un método, get para cuando se acceda a un atributo, y así sucesivamente. Merece la pena echar un vistazo a la documentación para hacerse una idea mejor de la potencia disponible. El parámetro que admite un punto de corte es

4 una expresión regular que permite hacer referencia a una o más partes del código del programa. En el ejemplo la expresión tiene que leerse como "cualquier método, de cualquier tipo, de cualquier número de parámetros, de cualquier clase, del paquete com.enterprise.product.accounts". La escritura de expresiones regulares siempre suele resultar una actividad un tanto viciante. Las combinaciones son infinitas, e incluso se pueden concatenar con " " y "&&" como si fueran expresiones booleanas. Ahí van unas cuantas: //Ejecución de cualquier método execution( * *(..) ) //Ejecución de cualquier método público execution( public * *(..) ) //Ejecución de cualquier método no estático execution(! static * *(..) ) //Ejecución de cualquier método que admita un String execution( * *(String) ) //Ejecución de cualquier método "setnif" que admita un String y no devuelva nada execution( void setnif(string) ) //Ejecución de una excepción de la clase CustomException handler(customexception) //Cualquier lllamada a un método "set" realizada desde un objeto de la clase Account call( void set*(..) ) && target( Account ) Una vez definido un punto de corte se puede refinar un poco más el momento concreto en que se quiere activar, y asociarle el código que se quiere ejecutar. En el código de ejemplo se ha utilizado before para indicar que se quiere activar antes de que se produzca la ejecución de los métodos que cumplen con la expresión regular, pero también se podría haber utilizado after para indicar que se activara después de la ejecución, e incluso around para sustituir completamente el comportamiento del método original por otro. Esta última posibilidad es ciertamente deliciosa, por decirlo de una forma suave. Por último, queda el código que queremos que se ejecute. Código Java simple y llano, como una vulgar salida por la consola estándar, que redirigida a fichero podría hacer las veces de tosco sistema de logging. De esta forma, lo que ocurrirá, es que cuando se ejecute cualquier método del paquete cuentas se ejecutará también el código con la salida por consola. Objetivo cumplido! Y todo ello sin haber

5 tenido que tocar ni una sola línea de código original. Promesa cumplida! Y es más, si algún día la empresa decidiera cambiar el sistema de log por otro más elaborado, el cambio sería transparente, ya que bastaría con cambiar el código de la regla. E incluso si, en una última vuelta de tuerca, se decidiera cambiar el paquete de cuentas por otro, sería muy sencillo hacer que las nuevas clases escribiesen al log cambiado la expresión regular. El único problema extremadamente grave que se plantea es que ya no podremos facturar un número insano de horas a nuestros clientes por hacer estos cambios como veniamos haciendo hasta ahora. Maldita tecnología! Un último comentario acerca del ejemplo, sobre la palabra reservada thisjoinpoint. Almacena el punto de concreto dentro de la ejecución del código original en el que ha activado la regla. La he puesto a modo de referencia, para destacar el hecho de que dentro del código se puede hacer referencia a información de contexto. De hecho, se puede incluso referenciar al propio objeto dentro del que se ha producido el evento, y los argumentos que recibe o retorna el método. Recomiendo nuevamente mirar la documentación para ver las enormes posibilidades que ofrece AspectJ a este respecto.

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes Introducción Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual [email protected]! Qué es la POO?! Un paradigma de programación! Un paradigma es una forma de afrontar

Más detalles

Introducción. Curso de Middleware. Práctica 6. 1 de 9

Introducción. Curso de Middleware. Práctica 6. 1 de 9 Introducción Seguimos explorando aspectos del middleware y de la programación que resultarán relevantes a la hora de diseñar o construir middleware modernos. En esta práctica vamos a explorar el concepto

Más detalles

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4 Trabajo Práctico Nº 4 Ejercicios Teóricos 1. Indique si las siguientes afirmaciones son verdaderas o falsas a. La programación orientada a objetos hace uso de clases y envío de mensajes entre objetos..

Más detalles

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

Ingeniería del Software Separación entre Presentación y Lógica del Negocio Introducción En este laboratorio desarrollaremos una aplicación que verifica si una cuenta y un password son correctos. En dicha aplicación la presentación y la lógica del negocio se definirán en dos capas

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Ing. Ricardo Coppo [email protected] Qué es un Objeto? Un objeto es una instancia de una clase Las clases actuán como modelos que permiten la creación

Más detalles

! Fundamentos de la POO. ! Comportamiento y estado. ! Clases y objetos en Java

! Fundamentos de la POO. ! Comportamiento y estado. ! Clases y objetos en Java Introducción a la programación orientada a objetos Curso de Programación en Java! Fundamentos de la POO! Comportamiento y estado! Clases y objetos en Java Contenidos Luis Guerra [email protected] Enero 2012

Más detalles

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez Introducción a Java Dr. (c) Noé Alejandro Castro Sánchez Programas Java Applets Pueden correr en navegadores Web Agregan funcionalidad a páginas Web Se llega a restringir su funcionalidad (e. g., no pueden:

Más detalles

Programación Orientada a Objetos Curso 2014/2015. Práctica 11

Programación Orientada a Objetos Curso 2014/2015. Práctica 11 Objetivos formativos Previo Programación Orientada a Objetos Curso 2014/2015 Práctica 11 - Nuevas características de Java 8: expresiones lambda, interfaces funcionales, streams. - Crea el paquete practica11

Más detalles

Curso de Java Introducción a la Programación I

Curso de Java Introducción a la Programación I Curso de Java Introducción a la Programación I Jaime Fernández Martín Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Sintaxis Java 2 Salida de datos 3 Entrada de datos Índice 1 Sintaxis Java

Más detalles

12. Tipos de atributos

12. Tipos de atributos Programación orientada a objetos con Java 135 12. Tipos de atributos Objetivos: a) Profundizar en el concepto de atributo de una clase e indicar los tipos de atributos en Java b) Interpretar el código

Más detalles

Examen de Métodos de Programación Ingeniería Informática Primera Parte

Examen de Métodos de Programación Ingeniería Informática Primera Parte Examen de Métodos de Programación Ingeniería Informática Primera Parte Cuestión 1. (2 puntos) Se pretende guardar y recuperar matrices de números reales de cualquier dimensión en ficheros binarios de tipos

Más detalles

Programación orientada a objetos I

Programación orientada a objetos I Introducción Programación orientada a objetos I Curso INEM. Programación en C++ Santiago Muelas Pascual [email protected] Qué es la POO? Un paradigma de programación Un paradigma es una forma de afrontar

Más detalles

NETBEANS JAVA PROGRAMACIÓN ORIENTADA A OBJETOS

NETBEANS JAVA PROGRAMACIÓN ORIENTADA A OBJETOS NETBEANS JAVA PROGRAMACIÓN ORIENTADA A OBJETOS Como se vio en teoría, la definición de una clase consta de dos partes fundamentales: 1 - La declaración de la clase: Indica el nombre de la clase precedido

Más detalles

PROGRAMACIÓN EN JAVA

PROGRAMACIÓN EN JAVA 1. INTRODUCCIÓN A LA PROGRAMACIÓN 1.1. Datos, algoritmos y programas 1.1.1. Definición de algoritmo 1.1.2. Datos 1.1.3. Características de un programa 1.2. Paradigmas de programación 1.2.1. Programación

Más detalles

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

Unidad V. Ya veremos qué poner en algunas_palabras y algo_más, por ahora sigamos un poco más. Implementación Orientada a Objetos. Unidad V 5.1 Estructura de una clase. Una clase consiste en: algunas_palabras class nombre_de_la_clase [algo_más] { [lista_de_atributos] [lista_de_métodos] Lo que está

Más detalles

CONCEPTOS BÁSICOS PROGRAMACIÓN ORIENTADA A OBJETOS. Ing. Martha Tello

CONCEPTOS BÁSICOS PROGRAMACIÓN ORIENTADA A OBJETOS. Ing. Martha Tello CONCEPTOS BÁSICOS PROGRAMACIÓN ORIENTADA A OBJETOS Ing. Martha Tello Introducción Cuando hacemos referencia a la programación orientada a objetos estamos hablando de una nueva forma de pensar acerca del

Más detalles

Guía del Curso IFCD052PO PROGRAMACIÓN EN JAVA

Guía del Curso IFCD052PO PROGRAMACIÓN EN JAVA Guía del Curso IFCD052PO PROGRAMACIÓN EN JAVA Modalidad de realización del curso: Titulación: Online Diploma acreditativo con las horas del curso OBJETIVOS CONTENIDOS UNIDAD DIDÁCTICA 1. INTRODUCCIÓN A

Más detalles

Guía práctica de estudio 05: Diagramas de flujo

Guía práctica de estudio 05: Diagramas de flujo Guía práctica de estudio 05: Diagramas de flujo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Guía práctica de estudio 05: Diagramas de

Más detalles

Unidad Didáctica 1. Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos

Unidad Didáctica 1. Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Unidad Didáctica 1 Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Más detalles

Guía práctica de estudio 04: Clases y objetos

Guía práctica de estudio 04: Clases y objetos Guía práctica de estudio 04: Clases y objetos Elaborado por: M.C. M. Angélica Nakayama C. Ing. Jorge A. Solano Gálvez Autorizado por: M.C. Alejandro Velázquez Mena Guía práctica de estudio 04: Clases y

Más detalles

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +. APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje

Más detalles

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual. Manual de Dev-C++ 4.9.9.2 Página 1 de 11 Introducción Dev-C++ es un IDE (entorno de desarrollo integrado) que facilita herramientas para la creación y depuración de programas en C y en C++. Además, la

Más detalles

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad

Más detalles

LA CLASE VECTOR DEL API JAVA. MÉTODOS TRIMTOSIZE Y ENSURECAPACITY EJEMPLO Y EJERCICIOS RESUELTOS. (CU00922C)

LA CLASE VECTOR DEL API JAVA. MÉTODOS TRIMTOSIZE Y ENSURECAPACITY EJEMPLO Y EJERCICIOS RESUELTOS. (CU00922C) APRENDERAPROGRAMAR.COM LA CLASE VECTOR DEL API JAVA. MÉTODOS TRIMTOSIZE Y ENSURECAPACITY EJEMPLO Y EJERCICIOS RESUELTOS. (CU00922C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado

Más detalles

Arquitecturas cliente/servidor

Arquitecturas cliente/servidor Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?

Más detalles

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores. Unidad IV Métodos. 4.1 Definición de un método. El polimorfismo, en programación orientada a objetos, se refiere a la posibilidad de acceder a un variado rango de funciones distintas a través del mismo

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

05/23/2002 Programación Orientada a Objetos. Programación Orientada a Objetos. Iván Bernal, Ph.D. 4

05/23/2002 Programación Orientada a Objetos. Programación Orientada a Objetos. Iván Bernal, Ph.D. 4 Programación Orientada a Objetos Clase # 7 Polimorfismo Jueves, 23 de Mayo de 2002 Agenda Polimorfismo. Operadores new y delete Iván Bernal, Ph.D. Escuela Politécnica Nacional email: [email protected]

Más detalles

RMI. Aplicaciones Distribuidas

RMI. Aplicaciones Distribuidas RMI Aplicaciones Distribuidas Contenido Objetos Distribuidos y RMI. Interface Remota. Clase Implementación. Referencias Remotas. Registro RMI. Paso de parámetros. Descarga dinámica de código. Desarrollo

Más detalles

Introducción a la programación: Contenido. Introducción

Introducción a la programación: Contenido. Introducción Introducción a la programación: Contenido Introducción a la programación:... 1 Introducción... 1 1. Procesamiento automatizado de información... 1 2. Concepto de algoritmo.... 2 3. Lenguajes de programación....

Más detalles

Concurso: Cuánto sabes de JAVA?

Concurso: Cuánto sabes de JAVA? Concurso: Cuánto sabes de JAVA? Motivación: o Para cambiar el ritmo de las jornadas y que no todas las actividades sean charlas o Recordar conocimientos y aprender algo nuevo. o Las preguntas pueden ayudarnos

Más detalles

Programación orientada a objetos

Programación orientada a objetos Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual [email protected]! Herencia! Superclase/subclase! super! Modificador protected! Redefinicion de métodos!

Más detalles

Clases y Objetos en C++

Clases y Objetos en C++ Informática II Clases y Objetos en C++ Introducción Las variables de los tipos fundamentales de datos no son suficientes para modelar adecuadamente objetos del mundo real. alto, ancho y longitud para representar

Más detalles

PROCEDIMIENTOS ALMACENADOS

PROCEDIMIENTOS ALMACENADOS Modelado de Base de Datos PROCEDIMIENTOS ALMACENADOS Universidad Politecnica de los Llanos Procedimiento Almacenado Un Procedimiento almacenado es un Objeto de Base de Datos que puede encapsular logica

Más detalles

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Cualquier duda sobre el contenido de este tema se puede enviar al foro TEORIA2. 2.1.- El tipo de datos entero (byte,

Más detalles

Estructura de datos y Programación

Estructura de datos y Programación Estructura de datos y Programación Tema: Conceptos Básicos- Estructuras de control - Arreglos Ing. Analia Méndez Ing. Raquel Zarco Año: 2012 ELEMENTOS DE UN PROGRAMA EN JAVA El programa Java consta de

Más detalles

obtenidos a partir de los objetos que manipula. un nuevo paradigma de programación, La POO es Clases su forma de módulo.

obtenidos a partir de los objetos que manipula. un nuevo paradigma de programación, La POO es Clases su forma de módulo. (a) definición (b) elementos y notación (c) modelo de computación (d) ejecución de un sistema (e) exportación selectiva Clases Programación Orientada a Objetos DCIC UNS 2002 47 La POO es un nuevo paradigma

Más detalles

Programación Orientada a Objetos en C++

Programación Orientada a Objetos en C++ Unidad I Programación Orientada a Objetos en C++ Programación Orientada a Objetos en C++ Programación I - 0416202 Contenido Esta lección abarca los siguientes temas: Estructura y declaración de una clase

Más detalles

class identificador{ //Bloque de propiedades (datos miembro, atributos, propiedades) //Bloque de métodos (comportamientos) }

class identificador{ //Bloque de propiedades (datos miembro, atributos, propiedades) //Bloque de métodos (comportamientos) } Programación Basada en Objetos Lectura 2 Clases en Java Definición class identificador{ //Bloque de propiedades (datos miembro, atributos, propiedades) //Bloque de métodos (comportamientos) class Tiempo{

Más detalles

Pseudocódigo. La forma en que se escribe un pseudocódigo es la siguiente:

Pseudocódigo. La forma en que se escribe un pseudocódigo es la siguiente: Pseudocódigo El pseudocódigo o pseudolenguaje, son una serie de instrucciones en nuestro lenguaje natural (español, ingles, etc.) y expresiones que representan cada uno de los pasos que resuelven un problema

Más detalles

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C)

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C) APRENDERAPROGRAMAR.COM EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C) Sección: Cursos Categoría: Lenguaje de programación Java nivel

Más detalles

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos Lección 2: Creando una Aplicación en Java 1. Estructura del archivo de una clase 2. Usando una clase 3. Definiendo clases fundamentos Objetivos Conocer: La forma en la cual está se está estructurado el

Más detalles

Actividad de Evaluación Brandon Emmanuelle Cuevas Rangel GPO: 303 Carrera: Informática 3er Semestre Joel Rocha Barocio Cienega de Flores N.L.

Actividad de Evaluación Brandon Emmanuelle Cuevas Rangel GPO: 303 Carrera: Informática 3er Semestre Joel Rocha Barocio Cienega de Flores N.L. Actividad de Evaluación 2.4.1 Brandon Emmanuelle Cuevas Rangel GPO: 303 Carrera: Informática 3er Semestre Joel Rocha Barocio Cienega de Flores N.L. Las técnicas de programación constituyen parte fundamental

Más detalles

Programación Orientada A Aspectos:POA

Programación Orientada A Aspectos:POA Programación Orientada A Aspectos:POA Ejemplos con AspectJ con eclipse Carlos A. Escobar González. [email protected] CONTENIDO Introducción. Programación orientada a aspectos (POA). Conceptos

Más detalles

Taller de Videojuegos. Pedro J. Camacho

Taller de Videojuegos. Pedro J. Camacho Taller de Videojuegos Pedro J. Camacho CONTENIDOS Animando la escena Diseña tu guión (storyboard) Instrucciones Sentencias de control Condicionales Bucles Propiedades (Atributos) Funciones (Métodos) Eventos

Más detalles

Conceptos Básicos. Programación Orientada a Objetos 2

Conceptos Básicos. Programación Orientada a Objetos 2 Programación Orientada a Objetos Conceptos Básicos de Objetos Ing. Julio Ernesto Carreño Vargas MsC. Conceptos Básicos Las aproximaciones ADOO y POO, proveen a los objetos como el principal medio para

Más detalles

HOJA DE EJERCICIOS 3 HERENCIA ENTRE CLASES Y POLIMORFISMO DE MÉTODOS

HOJA DE EJERCICIOS 3 HERENCIA ENTRE CLASES Y POLIMORFISMO DE MÉTODOS Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2009/2010 Nombre:... Fecha: / 11 / 2009 HOJA DE EJERCICIOS 3 HERENCIA ENTRE CLASES Y POLIMORFISMO DE MÉTODOS Esta hoja de ejercicios

Más detalles

Programación en Lenguaje Java

Programación en Lenguaje Java Programación en Lenguaje Java Problema 3.1. Prac.car con strings e instrucciones condicionales Michael González Harbour Mario Aldea Rivas Departamento de Matemá.cas, Estadís.ca y Computación Este tema

Más detalles

Tema 3. Aplicaciones de Tipo Consola

Tema 3. Aplicaciones de Tipo Consola Tema 3. Aplicaciones de Tipo Consola Una aplicación de consola es aquella que se ejecuta dentro de una ventana de línea de comandos. Este tipo de ventana recibe diferentes denominaciones: Símbolo del sistema,

Más detalles

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 DELEGADOS. Ing. Bruno López Takeyas, M.C.

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 DELEGADOS. Ing. Bruno López Takeyas, M.C. CAPÍTULO 8 DELEGADOS 2 http://www.itnuevolaredo.edu.mx/takeyas 1 Preguntas detonadoras Qué es un delegado? Para qué sirve? En qué circunstancias se recomienda implementar delegados? Qué es un método anónimo?

Más detalles

Métodos CON valor de retorno

Métodos CON valor de retorno Métodos Estáticos C# Fundamentos de Programación. Objetivos del tema: Qué es un método? Qué métodos conoces? Métodos que NO devuelven valor. Métodos que SI devuelven un valor. Paso de parámetros. Variables

Más detalles

Programación páginas web con PHP

Programación páginas web con PHP Programación páginas web con PHP Duración: 65 horas Objetivos: Curso de desarrollo de aplicaciones web. Para ello se estudia la programación de la parte cliente con JavaScript y la programación de la parte

Más detalles

Tema 6: Clases. Índice

Tema 6: Clases. Índice Tema 6: Clases Antonio J. Sierra Índice 1. Fundamentos. 2. Declaración de objetos. 3. Asignación de objetos a variables referencia. 4. Métodos. 5. Constructores. 6. this. 7. Recogida de basura. 8. Modelado

Más detalles

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011 Tema 6 Patrones de Diseño Programación Orientada a Objetos Curso 2010/2011 Contenido Introducción a los patrones de diseño. Patrón del Método plantilla. Patrón Composición. Patrón Estrategia. Clases anónimas

Más detalles

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA Nombre del Módulo: PROGRAMACIÓN EN JAVASCRIPT Código: CSTI0087 total: 51 Horas Objetivo General: Crear contenido web basado en

Más detalles

Introducción a OOP. Programación Orientada a Objeto

Introducción a OOP. Programación Orientada a Objeto Introducción a OOP Programación Orientada a Objeto Evolución Programación no Estructurada, Programación procedimental, Programación modular y Programación orientada a objetos. Programación no Estructurada

Más detalles

6. Sentencias repetitivas o bucles

6. Sentencias repetitivas o bucles Programación orientada a objetos con Java 71 6. Sentencias repetitivas o bucles Objetivos: a) Describir el funcionamiento de las sentencias iterativas o bucles (for, while y dowhile) b) Interpretar el

Más detalles

Funciones Definición de función

Funciones Definición de función Funciones Definición de función Una función es un bloque de código que realiza una tarea específica. Una función es una porción de programa, identificable mediante un nombre, que realiza determinadas tareas

Más detalles

Capítulo 3. Subprogramas. 3.1 Subprogramas FUNCTION

Capítulo 3. Subprogramas. 3.1 Subprogramas FUNCTION Capítulo 3 Subprogramas Con lo explicado hasta aquí se pueden escribir programas sencillos y no demasiado largos. Pero varias razones justifican la necesidad de disponer de otro tipo de recursos. Por una

Más detalles

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C)

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C) APRENDERAPROGRAMAR.COM REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I Fecha revisión: 2039 Resumen:

Más detalles

Examen de Programación II (Ingeniería Informática)

Examen de Programación II (Ingeniería Informática) Examen de Programación II (Ingeniería Informática) Septiembre 2010 1) Lenguaje C (2 puntos) Escribir el módulo "elimina_substring" (ficheros elimina_substring.h y elimina_substring.c) que defina una única

Más detalles

Agosto de 2012 TUTORIAL PSEINT. Servicio Nacional de Aprendizaje SENA Jordan Angulo Canabal

Agosto de 2012 TUTORIAL PSEINT. Servicio Nacional de Aprendizaje SENA Jordan Angulo Canabal Agosto de 2012 PSEINT TUTORIAL Servicio Nacional de Aprendizaje SENA Jordan Angulo Canabal Pseint Acerca de Pseint PSeInt es principalmente un intérprete de pseudocódigo. El proyecto nació como trabajo

Más detalles

Parte I: Programación en Ada

Parte I: Programación en Ada Parte I: Programación en Ada 1. Introducción a los computadores y su programación 2. Elementos básicos del lenguaje 3. Modularidad y programación orientada a objetos 4. Estructuras de datos dinámicas 5.

Más detalles

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Java Avanzado Facultad de Ingeniería. Escuela de computación. 2 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 5 3 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo de sus prácticas

Más detalles

Algoritmos y Programación Orientada a Objetos I. Contenedoras de tamaño variable y uso de ciclos en otros contextos

Algoritmos y Programación Orientada a Objetos I. Contenedoras de tamaño variable y uso de ciclos en otros contextos Algoritmos y Programación Orientada a Objetos I y uso de ciclos en otros contextos Agenda Motivación Uso de ciclos en otros contextos Agenda Motivación Uso de ciclos en otros contextos Motivación En muchos

Más detalles

Estructuras de control selectivas

Estructuras de control selectivas Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos

Más detalles

Taller de Programación I. Tema 10: Herencia en Java

Taller de Programación I. Tema 10: Herencia en Java INACAP Universidad Tecnológica de Chile Sede Santiago Centro Taller de Programación I Curso Java J2SE Tema 10: Herencia en Java Ing. Manuel López Ramos (versión 1) Parte I Qué es la herencia entre clases?

Más detalles

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

Métodos que devuelven valor Dado el siguiente triángulo rectángulo: Métodos que devuelven valor Dado el siguiente triángulo rectángulo: hipotenusa altura base Para dibujar este triángulo necesitamos los siguientes datos: base y altura La base y la altura, se utilizarán

Más detalles

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Introducción a Java LSUB. 30 de enero de 2013 GSYC Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial

Más detalles

Programación Avanzada

Programación Avanzada Programación Avanzada Instructivo de Compilación 1 1 Índice 1 ÍNDICE... 2 2 INTRODUCCIÓN... 3 3 HERRAMIENTAS... 3 3.1 SINTAXIS DE LOS COMANDOS GCC Y G++... 3 3.2 OTRAS HERRAMIENTAS:... 4 3.3 EJEMPLOS:...

Más detalles

Tema 5 - Pruebas del software Ingeniería del Software de Gestión II

Tema 5 - Pruebas del software Ingeniería del Software de Gestión II escuela técnica superior de ingeniería informática Tema 5 - Pruebas del software Ingeniería del Software de Gestión II Objetivos Cuáles son las alternativas para verificar y validar software Qué son las

Más detalles

Programación Orientada a Objetos Clases, métodos, atributos. Concepto de herencia, clases derivadas, tipos de herencia.

Programación Orientada a Objetos Clases, métodos, atributos. Concepto de herencia, clases derivadas, tipos de herencia. C3 Programación Orientada a Objetos Clases, métodos, atributos. Concepto de herencia, clases derivadas, tipos de herencia. Encapsulamiento y propiedades. Temas Clases y Objetos Herencia Clases derivadas

Más detalles

Examen de Prácticas de Programación Ingeniería Informática

Examen de Prácticas de Programación Ingeniería Informática Examen de Prácticas de Programación Ingeniería Informática Junio 2007 1) (2 puntos) Escribir en Java la implementación de los métodos public void escribematrizenfichero(double[][] m, String nomfich)...

Más detalles

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende

Más detalles

PNFSI. Asignatura: Desarrollo de Software. Tema 1: Programación Orientada a Objetos

PNFSI. Asignatura: Desarrollo de Software. Tema 1: Programación Orientada a Objetos PNFSI Asignatura: Desarrollo de Software Tema 1: Programación Orientada a Objetos Ing. Zamantha González Abril, 2008 Contenido Conceptos básicos Clase Objeto o instancia Atributos Métodos Constructores

Más detalles

Universidad Autónoma del Estado de México Facultad de Medicina

Universidad Autónoma del Estado de México Facultad de Medicina Universidad Autónoma del Estado de México Facultad de Medicina Licenciatura en Bioingeniería Médica Unidad de Aprendizaje: Algoritmos y programación básica Unidad 3: Estructuras de control de flujo en

Más detalles

Parte I: Programación en un lenguaje orientado a objetos

Parte I: Programación en un lenguaje orientado a objetos Parte I: Programación en un lenguaje orientado a objetos 1. Introducción a los lenguajes de programación 2. Datos y expresiones 3. Estructuras algorítmicas 4. Datos compuestos 5. Modularidad 6. Tratamiento

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA Angel García Beltrán y José María Arranz Santamaría Sección de Publicaciones Escuela Técnica Superior de Ingenieros Industriales Universidad Politécnica de Madrid

Más detalles

FUNCIONES JAVASCRIPT. CONCEPTO. PARÁMETROS O ARGUMENTOS Y TIPOS. PASO POR VALOR. RETURN. EJEMPLOS. (CU01122E)

FUNCIONES JAVASCRIPT. CONCEPTO. PARÁMETROS O ARGUMENTOS Y TIPOS. PASO POR VALOR. RETURN. EJEMPLOS. (CU01122E) APRENDERAPROGRAMAR.COM FUNCIONES JAVASCRIPT. CONCEPTO. PARÁMETROS O ARGUMENTOS Y TIPOS. PASO POR VALOR. RETURN. EJEMPLOS. (CU01122E) Sección: Cursos Categoría: Tutorial básico del programador web: JavaScript

Más detalles

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Tema 2 Conceptos básicos de programación. Fundamentos de Informática Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice Metodología de la programación Programación estructurada 2 Pasos a seguir para el desarrollo de un programa (fases): Análisis

Más detalles

Tema: Clases y Objetos en C#. Parte II.

Tema: Clases y Objetos en C#. Parte II. Programación II. Guía No. 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Clases y Objetos en C#. Parte II. Objetivos Implementar clases, objetos, propiedades, métodos y

Más detalles

INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS

INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS Introducción La programación orientada a objetos es un enfoque de programación de los más populares y viene teniendo gran aceptación en el desarrollo

Más detalles

Programación Concurrente y Distribuida Ingeniería Informática Facultad de Ciencias Universidad de Cantabria.

Programación Concurrente y Distribuida Ingeniería Informática Facultad de Ciencias Universidad de Cantabria. Programación Concurrente y Distribuida Ingeniería Informática Facultad de Ciencias Universidad de Cantabria. Documento: Práctica 1 Sopa de Letras Autores: Fecha: Laura Barros J.M. Drake 5-6 Octubre Objetivo

Más detalles

o Una clase es un tipo al cual pertenecen objetos o instancias de la clase.

o Una clase es un tipo al cual pertenecen objetos o instancias de la clase. o Una clase es un tipo al cual pertenecen objetos o instancias de la clase. Introducción a la Programación Orientada a Objetos EII147-01-02 Introducción a las tecnologías de información Clase Persona:

Más detalles