Tema 3. Test Driven Development

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

Download "Tema 3. Test Driven Development"

Transcripción

1 Tema 3. Test Driven Development Ejercicios Resueltos Ejercicio 01. Desarrolle mediante TDD una implementación del algoritmo de la Criba de Eratóstenes para calcular la lista de los números primos desde 2 hasta un número n indicado. Si no existiera ningún primo, el algoritmo devolverá una lista vacía. El algoritmo de la criba de Eratóstenes se muestra a continuación. 1. Se crea una lista con los números desde 2 hasta n. 2. Se elige el siguiente número x no marcado (inicialmente el 2). 3. Se marcan todos los múltiplos de dicho número (x*2, x*3, etc.). 4. Se repite desde el paso 2. Cuando se ha terminado con todos los números aquellos que queden sin marcar son primos. Más información sobre la criba de Eratóstenes en la Wikipedia: Solución Antes de comenzar con la implementación es interesante pararse un momento a estudiar los posibles casos de prueba de este algoritmo. El único valor de entrada de las pruebas es el número n límite para calcular los números primos. Los casos de prueba se pueden dividir en varias particiones equivalentes en función de dicho n. Vamos a describir estas particiones a continuación. La primera partición engloba a todos los números menores de 2. Para cualquier valor de dicha partición el resultado de esta implementación será siempre el mismo: una lista vacía de números. Después, podemos definir tantas particiones como valores son necesarios para incluir a un nuevo número primo. También podemos jugar con particiones que terminan justo en un valor primo o justo después (por ejemplo, calcular todos los primos hasta 11 o hasta 12). Todos son equivalentes a la hora de generar ya que el proceso para calcularlo son los mismos, pero alguna prueba adicional puede ayudarnos a detectar errores ocultos. Veamos las primeras evoluciones aplicando TDD. public void testcalculaconvalorinicialuno() { List<Integer> l = CrivaDeEratosthenes.Calcula(1); asserttrue(l.isempty()); static class CrivaDeEratosthenes { 1

2 public static List<Integer> Calcula(int i) { return new ArrayList<Integer>(); // public void testcalculaconvalorinicialdos() { List<Integer> l = CrivaDeEratosthenes.Calcula(2); // (*) assertequals(1, l.size()); assertequals(new Integer(2), l.get(0)); public static List<Integer> Calcula(int i) { List<Integer> l = new ArrayList<Integer>(); if (i >= 2) l.add(2); return l; (*) Aunque los dos asserts verifican lo mismo, con el primer assert evitamos que la prueba falle por una excepción si no hay ningún elemento en la lista. Hacer este cambio hace más legible la traza de la prueba cuando no hay ningún elemento en la lista. Al final de la traza veremos una manera más cómoda de escribir este tipo de asserts utilizando la librería de Java. Continuamos aplicando TDD. public void testcalculaconvalorinicialuno() { List<Integer> l = CrivaDeEratosthenes.Calcula(1); asserttrue(l.isempty()); public void testcalculaconvalorinicialdos() { List<Integer> l = CrivaDeEratosthenes.Calcula(2); assertequals(new Integer(2), l.get(0)); public void testcalculaconvalorinicialtres() { List<Integer> l = CrivaDeEratosthenes.Calcula(3); assertequals(2, l.size()); assertequals(new Integer(2), l.get(0)); assertequals(new Integer(3), l.get(1)); public static List<Integer> Calcula(int i) { List<Integer> l = new ArrayList<Integer>(); if (i >= 2) { l.add(2); l.add(3); return l; 2

3 En este nuevo paso vemos dos detalles interesantes. La primera es que ha sido necesario quitar el assert que pusimos para evitar un error por excepción. La segunda es que introducir una nueva prueba no ha hecho avanzar. Es necesario cambiar de enfoque. Llegados a este punto ya nos damos cuenta de que los casos de prueba no ayudan a evolucionar el código. Tendríamos que dar un paso muy grande con muchos cambios que pueden salir mal para implementar el código del algoritmo. Este es el momento de buscar alternativas para hacer pruebas más pequeñas y avanzar pasos más diminutos. Para ello cada paso del algoritmo será un método y cada uno de los métodos irá creciendo guiado por pruebas. Aunque dichos métodos deberían ser privados, los pondremos con el ámbito de visibilidad necesario para poder probarlos. En el próximo módulo veremos las técnicas y herramientas para poder probar métodos privados. Empezamos con una primera prueba que nos haga avanzar en este paso. El primer paso que vamos a abordar es crear una matriz de booleanos para indicar qué números están marcados y cuáles no. public void testcrealistadenumerossinmarcar() { int tope = 4; List<Boolean> l = CrivaDeEratosthenes.CreaListaDeNumerosSinMarcar(tope); assertequals((tope+1), l.size()); for (Boolean b:l) { assertfalse(b); public static List<Boolean> CreaListaDeNumerosSinMarcar(int i) { List<Boolean> lb = new ArrayList<Boolean>(); for (int c=0; c<=i; c++) lb.add(false); return lb; Necesitamos incrementar el tope en 1 ya que para que el número 4 aparezca en la lista de marcados, es necesario que la lista tenga 5 elementos (del 0 al 5). Como trabajamos con listas, ignoraremos las posiciones 0 y 1 que siempre serán false ya que no intervienen. Continuamos. public void testmarcarmultiplos() { int tope = 2; List<Boolean> l = CrivaDeEratosthenes.CreaListaDeNumerosSinMarcar(2); CrivaDeEratosthenes.MarcarMultiplos(l); assertfalse(l.get(2)); public static void MarcarMultiplos(List<Boolean> l) { Cuidado! Hemos descubierto un mal caso de prueba, el nombre es poco descriptivo y no le estamos pidiendo a nuestro sistema que haga nada por eso un método vacío lo pasa. Vamos a cambiar este caso de prueba. Vamos a utilizar como valor de prueba 4 porque es el primer valor que introduce un cambio. Continuamos. 3

4 public void testmarcarmultiploshasta4() { List<Boolean> l = CrivaDeEratosthenes.CreaListaDeNumerosSinMarcar(4); CrivaDeEratosthenes.MarcarMultiplos(l); assertfalse(l.get(2)); assertfalse(l.get(3)); asserttrue(l.get(4)); public static void MarcarMultiplos(List<Boolean> l) { for (int num = 2; num < l.size(); num++) { for (int mul = (num*2); mul < l.size(); mul += num) { l.set(mul, true); // public void testcrearlistadeprimoshasta4() { List<Boolean> l = CrivaDeEratosthenes.CreaListaDeNumerosSinMarcar(4); CrivaDeEratosthenes.MarcarMultiplos(l); List<Integer> primos = CrivaDeEratosthenes.CreaListaDePrimos(l); assertequals(2, primos.size()); assertequals(new Integer(2), primos.get(0)); assertequals(new Integer(3), primos.get(1)); public static List<Integer> CreaListaDePrimos(List<Boolean> l) { List<Integer> lb = new ArrayList<Integer>(); for (int c = 2; c < l.size();c++) { if (!l.get(c)) { lb.add(c); return lb; Ya tenemos implementados y probados todos los pasos. Ahora es el momento de refactorizar el método que calcula la criba de Eratóstenes y comprobar que las primeras pruebas que escribimos siguen funcionando. Veamos la refactorización. public static List<Integer> Calcula(int i) { List<Boolean> lb = CreaListaDeNumerosSinMarcar(i); MarcarMultiplos(lb); return CreaListaDePrimos(lb); Las pruebas siguen funcionando por lo que ya podemos dar por terminada la implementación. Si embargo podemos añadir algunas pruebas más jugando con las particiones que comentamos al principio. Por ejemplo: 4

5 public void testgeneraprimoshastadoce() { List<Integer> l = CrivaDeEratosthenes.Calcula(12); Assert.assertEquals(l, Arrays.asList(2, 3, 5, 7, 11)); Consideraciones finales Este desarrollo ha tenido una carencia. No se ha podido hacer TDD para definir que el método principal llame a los demás métodos ni verifica si el orden en que los llama es el correcto, con lo que hemos diseñado esa parte sin el soporte de pruebas. Este tipo de TDD lo realizaremos mediante mocks los cuáles estudiaremos en el siguiente módulo. Ejercicio 02. Se desea crear una clase que funcione como un contador. Se cuenta con los siguientes requisitos. Al crear el contador indicamos el valor inicial del mismo, el incremento y el valor límite. El valor inicial y el incremento tomarán un valor de 0 y 1 respectivamente si no se indica nada. El límite es necesario indicarlo siempre. Ninguno de los tres valores (valor inicial, incremento y límite) pueden cambiarse una vez creado el contador Al incrementar el contador se suma al valor actual el incremento y nos indican si se superó el límite. Cuando se supere el límite, el valor actual del contador vuelve a ser el valor inicial. En cualquier momento se puede conocer el valor actual del contador y E cualquier momento se puede establecer el contador a su valor inicial. Implemente los requisitos anteriores utilizando TDD. Solución Esta solución muestra la línea temporal del trabajo hecho. Cada boque de código (entre dos comentarios con guiones) es la implementación de una característica en el código. Primero se muestra el código de prueba y, después, la implementación. También se indican las refactorizaciones realizadas. 5

6 Esta misma traza y el código Java obtenido pueden descargarse en la sección de materiales del curso. En el boletín de ejercicios de este tema se plantean cuestiones adicionales a partir de esta solución. public void testvervalordelcontadorpordefecto() { ContadorCircular cc = new ContadorCircular(); assertequals(0, cc.getvalor()); public class ContadorCircular { public int getvalor() { return 0; // public void testvervalordelcontadorconvalorinicial5() { ContadorCircular cc = new ContadorCircular(5); assertequals(5, cc.getvalor()); public class ContadorCircular { int valor; public ContadorCircular(int i) { this.valor = i; public ContadorCircular() { this(0); public int getvalor() { return this.valor; // public void testincrementarcontadorpordefecto() { ContadorCircular cc = new ContadorCircular(); cc.incrementa(); assertequals(1, cc.getvalor()); public void incrementa() { this.valor++; //

7 public void testincrementarcontadorde5a10() { ContadorCircular cc = new ContadorCircular(5, 5); cc.incrementa(); assertequals(10, cc.getvalor()); public class ContadorCircular { int valor; int incremento; public ContadorCircular(int i) { this.valor = i; this.incremento = 1; public ContadorCircular() { this(0); public ContadorCircular(int i, int j) { this(i); this.incremento = j; public int getvalor() { return this.valor; public void incrementa() { // /* Refactorizamos - Nombres de parámetros de constructores más descriptivos - Quitamos un constructor. - Creamos los contadores en el setup - nombres más descriptivos para los contadores de pruebas */ public class TestContadorCircular { ContadorCircular ccpordefecto; ContadorCircular public void setup() throws Exception { ccpordefecto = new ContadorCircular(); cccincoencinco = new ContadorCircular(5, 5); public void testvervalordelcontadorpordefecto() { assertequals(0, ccpordefecto.getvalor()); public void testvervalordelcontadorconvalorinicial5() { assertequals(5, cccincoencinco.getvalor()); 7

8 public void testincrementarcontadorpordefecto() { ccpordefecto.incrementa(); assertequals(1, ccpordefecto.getvalor()); public void testincrementarcontadorde5a10() { cccincoencinco.incrementa(); assertequals(10, cccincoencinco.getvalor()); public class ContadorCircular { int valor; int incremento; public ContadorCircular(int valor, int incremento) { this.valor =valor; this.incremento = incremento; public ContadorCircular() { this(0, 1); public int getvalor() { return this.valor; public void incrementa() public void setup() throws Exception { ccpordefecto = new ContadorCircular(1); cccincoencinco = new ContadorCircular(5, 5); public void testlimitenosuperadocontadorpordefecto() { boolean b = this.ccpordefecto.incrementa(); assertfalse(b); int limite; public ContadorCircular(int limite) { this(0, 1); this.limite = limite; public boolean incrementa() { return false; 8

9 public void testlimitesuperadocontadorpordefecto() { this.ccpordefecto.incrementa(); boolean b = this.ccpordefecto.incrementa(); asserttrue(b); public boolean incrementa() { return this.valor > this.limite; public void testlimitesuperadocontadorde5en5() { this.cccincoencinco.incrementa(); boolean b = this.cccincoencinco.incrementa(); asserttrue(b); public ContadorCircular(int valor, int incremento, int limite) { this.valor =valor; this.incremento = incremento; this.limite = limite; public ContadorCircular(int limite) { this(0, 1, limite); { public void testcontadorpordefectovuelvealvalorinicialasuperarellimite() this.ccpordefecto.incrementa(); this.ccpordefecto.incrementa(); assertequals(0, this.ccpordefecto.getvalor()); int inicial; public ContadorCircular(int valor, int incremento, int limite) { this.inicial = valor; this.valor =valor; this.incremento = incremento; this.limite = limite; public boolean incrementa() { boolean b = this.valor > this.limite; if (b) { this.valor = this.inicial; return b; public void testresetearcontadorpordefecto() { 9

10 this.ccpordefecto.incrementa(); this.ccpordefecto.resetea(); assertequals(0, this.ccpordefecto.getvalor()); public void resetea() { this.valor = this.inicial; /* Refactorizamos - Evitamos código repetido */ public boolean incrementa() { boolean b = this.valor > this.limite; if (b) { this.resetea(); return b; 10

Refactorizar (v) Reestructurar el software aplicando una secuencia de refactorizaciones.

Refactorizar (v) Reestructurar el software aplicando una secuencia de refactorizaciones. Refactorización Definición Refactorización (n) Cambio realizado a la estructura interna del software para hacerlo más fácil de comprender y más fácil de modificar sin cambiar su comportamiento observable.

Más detalles

Pruebas de unidad con JUnit

Pruebas de unidad con JUnit Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro

Más detalles

INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL. Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones

INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL. Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL BLACKJACK Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones 1. Explicación del juego de cartas del Blackjack El Blackjack

Más detalles

SCR6150c Versión 2.0(12/01/05)

SCR6150c Versión 2.0(12/01/05) SCR6150c Versión 2.0(12/01/05) JUnit: Manual de usuario Fecha: Referencia: EJIE S.A. Mediterráneo, 3 Tel. 945 01 73 00* Fax. 945 01 73 01 01010 Vitoria-Gasteiz Posta-kutxatila / Apartado: 809 01080 Vitoria-Gasteiz

Más detalles

Ejercicio 1 (3 puntos).-

Ejercicio 1 (3 puntos).- URJC Ingeniería Técnica de Gestión Abril 2011 Asignatura: SOFTWARE AVANZADO Normas: La prueba consta de 2 ejercicios. La máxima nota del examen es un 8. Siendo la práctica la que añade los 2 puntos que

Más detalles

Técnicas Avanzadas de Testing Automatizado

Técnicas Avanzadas de Testing Automatizado Técnicas Avanzadas de Testing Automatizado Introducción: Testing ad hoc Testing sistemático Testing unitario Unidad y Suite de tests Frameworks xunit Fixtures compartidos e independecia Tests parametrizados

Más detalles

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante) 1. : La clase Cuenta. Uso de la clase Cuenta 3. Métodos y objetos receptores de mensajes (Importante) 1 Una clase para cuentas de un banco Vamos a modelar con una clase, un nuevo tipo de datos, donde los

Más detalles

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) APRENDERAPROGRAMAR.COM GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I

Más detalles

Tema 1. Introducción a los TAD

Tema 1. Introducción a los TAD Tema 1. Introducción a los TAD Objetivos En este tema nos ocupamos inicialmente del concepto de abstracción, dedicando la mayor atención a la abstracción de datos, estudiando aspectos relacionados con

Más detalles

Curso PUDE. Desarrollo de Aplicaciones Móviles en Android

Curso PUDE. Desarrollo de Aplicaciones Móviles en Android Curso PUDE Ejercicio Avanzado A: Bases de Datos y conexión con un ListView utilizando vistas A. Descripción Con este ejercicio, veremos cómo funcionan las bases de datos SQLite en Android, crearemos una,

Más detalles

Capitulo 3. Test Driven Development

Capitulo 3. Test Driven Development Capitulo 3. Test Driven Development 3.1 Uso de JUnit como framework para realizar pruebas unitarias Como ya se mencionó en el marco teórico Test Driven Development es una técnica de programación extrema

Más detalles

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK. Introducción Java surgió en 1991 dentro de la empresa Sun Microsystems como un lenguaje de programación sencillo y universal destinado a electrodomésticos. La reducida potencia de cálculo y memoria de

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

Primer Parcial Septiembre 5 de 2009

Primer Parcial Septiembre 5 de 2009 Primer Parcial Septiembre 5 de 2009 Algoritmos y Lenguajes II Reglas del juego Tal como se le dijo antes, durante este examen usted no puede pedir ABSOLUTAMENTE nada prestado a sus compañeros, ni hablar

Más detalles

Lenguaje Java Avanzado

Lenguaje Java Avanzado Lenguaje Java Avanzado Sesión 4: Pruebas con JUnit 2012-2013 Depto. Ciencia de la Computación e IA Índice Introducción a JUnit Implementación de las pruebas Ejecución de pruebas Pruebas con excepciones

Más detalles

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Solución al Examen de Prácticas de Programación (Ingeniería Informática) Solución al Examen de Prácticas de Programación (Ingeniería Informática) Junio 2006 Parte I. Cuestiones (3 puntos=50% nota del examen) 1) Se desea crear un conjunto de clases para representar en un programa

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Dpto. de Ingeniería de Sistemas Telemáticos E.T.S.I. Telecomunicación Universidad Politécnica de Madrid FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Normas de examen: Con libros y apuntes Duración: 2 horas

Más detalles

Ahorcado online multijugador

Ahorcado online multijugador Ahorcado online multijugador Objetivo Que el alumno ponga en práctica los conocimientos teóricos y prácticos adquiridos en la Parte II de la asignatura de Programación Concurrente. La práctica podrá realizarse

Más detalles

Ingeniería Software. Verificación y Validación

Ingeniería Software. Verificación y Validación Ingeniería Software Ingeniería software 4º 4º de Físicas Verificación y Validación José M. Drake y Patricia López Computadores y Tiempo Real Ingeniería de Programación 2009 1 Ingeniería de Programación

Más detalles

Programación Orientada a Objetos. Java: Excepciones

Programación Orientada a Objetos. Java: Excepciones Programación Orientada a Objetos Java: Excepciones Eduardo Mosqueira Rey Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

Grados Ing. Inf. y Mat. Inf. Julio 2014 Algoritmos y Estructura de Datos Página 1 de 6

Grados Ing. Inf. y Mat. Inf. Julio 2014 Algoritmos y Estructura de Datos Página 1 de 6 Grados Ing. Inf. y Mat. Inf. Julio 201 Algoritmos y Estructura de Datos Página 1 de 6 Algoritmos y Estructura de Datos: Examen Julio (Solución) Grados Ing. Inf. y Mat. Inf. Julio 201 Departamento de Lenguajes,

Más detalles

CONCEPTOS BASICOS DEL LENGUAJE JAVA

CONCEPTOS BASICOS DEL LENGUAJE JAVA CONCEPTOS BASICOS DEL LENGUAJE JAVA NOMENCLATURA GENERAL En Java se distinguen las letras mayúsculas y minúsculas. Las reglas del lenguaje respecto a los nombres de variables son muy amplias y permiten

Más detalles

Programación Orientada a Objetos. Java: Excepciones

Programación Orientada a Objetos. Java: Excepciones Programación Orientada a Objetos Java: Excepciones Eduardo Mosqueira Rey LIDIA Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

Tema 2. El lenguaje de programación Java (Parte 1)

Tema 2. El lenguaje de programación Java (Parte 1) Programación en Java Tema 2. El lenguaje de programación Java (Parte 1) Luis Rodríguez Baena Facultad de Informática Elementos del lenguaje (I) El juego de caracteres. No utiliza ASCII, sino Unicode de

Más detalles

Elementos léxicos del lenguaje de programación Java

Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices Operadores

Más detalles

Comencemos a programar con. Entrega 10. Estructuras de Control II

Comencemos a programar con. Entrega 10. Estructuras de Control II Comencemos a programar con VBA - Access Entrega 10 Estructuras de Control II Eduardo Olaz 10-2 Estructuras de Control, segunda parte Las Instrucciones While - - - Wend La estructura de bucle For Contador

Más detalles

Pruebas de unidad utilizando JUnit Juan Manuel Fernández Peña, 2005

Pruebas de unidad utilizando JUnit Juan Manuel Fernández Peña, 2005 Pruebas de unidad utilizando JUnit Juan Manuel Fernández Peña, 2005 JUnit es una herramienta para la realización de pruebas de unidad de software desarrollado con Java, que es una herramienta de software

Más detalles

Universidad Nacional del Santa F A C U L T A D D E I N G E N I E R I A E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0

Universidad Nacional del Santa F A C U L T A D D E I N G E N I E R I A E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 Universidad Nacional del Santa F A C U L T A D D E I N G E N I E R I A E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 PROYECTO DE ESTRUCTURA REPETITIVA DO WHILE A c o n t i n u a c i ó n r e

Más detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

Más detalles

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015 Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015 1. Introducción Este documento

Más detalles

Pruebas unitarias en profundidad

Pruebas unitarias en profundidad Pruebas unitarias en profundidad Luis Alfonso Rey 9º Encuentro Danysoft en Microsoft Agenda Lo que ya sabemos Algunas cosas nuevas Despacito y buena letra Herencia de familia Lo que ya sabemos Qué es

Más detalles

FACULTAD DE INGENIERÍA

FACULTAD DE INGENIERÍA NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Variables y Tipos de Datos PRÁCTICA NÚM. [ 1 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería Computacional Lenguaje

Más detalles

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases Programación Avanzada para Sistemas de Telecomunicación Objetos y clases Juan Carlos Cruellas cruellas@ac.upc.es Objetos y clases Concepto de objeto. Concepto de clase. Clases, objetos y programas. Clases

Más detalles

15. Parámetros o argumentos

15. Parámetros o argumentos Programación orientada a objetos con Java 161 15. Parámetros o argumentos Objetivos: a) Profundizar en el concepto de parámetro de una clase e indicar su mecanismo de funcionamiento. b) Interpretar el

Más detalles

Nombran variables, funciones, clases y objetos

Nombran variables, funciones, clases y objetos 3.El lenguaje Java 3.1 Identificadores - sintaxis - tipos primitivos 3.2 Operadores 3.3 Control de flujo 3.4 Clase Array El lenguaje de programación Java 1 3.1 Identificadores Nombran variables, funciones,

Más detalles

Fundamentos de Programación: Prácticas de Java. 1 o Ingeniería Técnica de Telecomunicación. Universidad del País Vasco. Euskal Herriko Unibertsitatea

Fundamentos de Programación: Prácticas de Java. 1 o Ingeniería Técnica de Telecomunicación. Universidad del País Vasco. Euskal Herriko Unibertsitatea eman ta zabal zazu Universidad del País Vasco Euskal Herriko Unibertsitatea Fundamentos de Programación: Prácticas de Java 1 o Ingeniería Técnica de Telecomunicación Bilbao, febrero de 2009 ii Fundamentos

Más detalles

De los casos de uso a los casos de prueba. Caso práctico. Aplicación web Javier Gutiérrez / javierj@us.es

De los casos de uso a los casos de prueba. Caso práctico. Aplicación web Javier Gutiérrez / javierj@us.es De los casos de uso a los casos de prueba Caso práctico. Aplicación web Javier Gutiérrez / javierj@us.es Objetivo Objetivo: Mostrar cómo aplicar el proceso ETUC para la generación de casos de prueba a

Más detalles

www.aprendoencasa.com Curso Introducción JAVA Pág.: 1

www.aprendoencasa.com Curso Introducción JAVA Pág.: 1 www.aprendoencasa.com Curso Introducción JAVA Pág.: 1 Introducción Java es un lenguaje basado en la programación orientada a objetos (POO), este tipo de programación va más allá del tipo de programación

Más detalles

BETA. Sacándole Partido a JUnit. Mocking. www.iwt2.org formacion@iwt2.org

BETA. Sacándole Partido a JUnit. Mocking. www.iwt2.org formacion@iwt2.org BETA Sacándole Partido a JUnit Mocking www.iwt2.org formacion@iwt2.org 03. Mocking Aprender qué es el mocking y para qué sirve. Desarrollar el tipo de pruebas en las que es necesario un mock. Conocer librerías

Más detalles

Examen Septiembre Curso 2001-2002 -- Programación en C++ Pág. 1

Examen Septiembre Curso 2001-2002 -- Programación en C++ Pág. 1 Examen Septiembre Curso 2001-2002 -- Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Convertidor Dec->Hex y Hex->Dec (5.0 ptos.)... 1 1.1.1 Apartado A (4.0 ptos.)... 1 1.1.2 Apartado B (1.0

Más detalles

RESPUESTA Sí, una clase puede manejar objetos. Aunque esta frase es bastante ambigua, apréndetela de memoria para el examen y no le des más vueltas.

RESPUESTA Sí, una clase puede manejar objetos. Aunque esta frase es bastante ambigua, apréndetela de memoria para el examen y no le des más vueltas. 1. PREGUNTA: Una clase puede manejar objetos? RESPUESTA Sí, una clase puede manejar objetos. Aunque esta frase es bastante ambigua, apréndetela de memoria para el examen y no le des más vueltas. 2. PREGUNTA:

Más detalles

Resumen de clase Ejemplos creacionales. Ideas de Diseño sobre ejercicios anteriores

Resumen de clase Ejemplos creacionales. Ideas de Diseño sobre ejercicios anteriores Resumen de clase Ejemplos creacionales Ideas de Diseño sobre ejercicios anteriores 1 cuatrimestre 2009 Contenido EJEMPLO CLIENTES DE UNA TARJETA DE CRÉDITO: ENUNCIADO...3 SOBRE EL DOMINIO...3 SOLUCIÓN

Más detalles

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida } REUTILIZACIÓN DE CLASES:MODELO DE HERENCIA EN JAVA Java soporta herencia simple pero no múltiple. Lo hace mediante el mecanismo de extensión de clase. A partir de él, una subclase se extiende (hereda)

Más detalles

Resumen de clase Ejercicio Firewall. Ideas de Diseño y Command Pattern

Resumen de clase Ejercicio Firewall. Ideas de Diseño y Command Pattern Resumen de clase Ejercicio Firewall Ideas de Diseño y Command Pattern 2 cuatrimestre 2008 Contenido RESUMEN DE CLASE EJERCICIO FIREWALL...3 ENUNCIADO...3 EXPLICACIÓN DEL DOMINIO...4 PRIMERAS IDEAS...4

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez Encapsulamiento: Control de Acceso Clases en Java (1) UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO En Java se organizan las clases en paquetes

Más detalles

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009 Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier

Más detalles

Manejo de Errores Ejercicio Facturas

Manejo de Errores Ejercicio Facturas Manejo de Errores Ejercicio Facturas Resumen de clase Indice ENUNCIADO... 2 ENCARANDO LA SOLUCIÓN... 3 PRIMERO, LAS RESPONSABILIDADES DE LOS OBJETOS... 3 AHORA VAMOS A RESOLVERLO EN LA MÁQUINA: POR DÓNDE

Más detalles

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2 Objetivos Herencia. Utilización de interfaces y clases abstractas. Índice 1. Interfaces 1 2. Clases abstractas 2 3. Collections Framework 3 3.1. Collection........................................... 3

Más detalles

1.1 Criba de Eratóstenes: Cómo colar números primos.

1.1 Criba de Eratóstenes: Cómo colar números primos. Sección Tecnologías de Internet Revista digital Matemática, Educación e Internet (www.cidse.itcr.ac.cr/revistamate/). Vol. 9, N o 2. 2009 Criba de Eratóstenes: Cómo colar números primos. Implementación

Más detalles

Prácticas de Programación

Prácticas de Programación Prácticas de Programación Tema 1. Introducción al análisis y diseño de programas Tema 2. Clases y objetos Tema 4. Tratamiento de errores Tema 5. Aspectos avanzados de los tipos de datos Tema 6. Modularidad

Más detalles

Repaso de las características más importantes de la programación Java y su adaptación a Android

Repaso de las características más importantes de la programación Java y su adaptación a Android Repaso de las características más importantes de la programación Java y su adaptación a Android 1. Entorno de programación en java 2. Variables y tipos de datos 3. Operaciones y operadores 4. Clases y

Más detalles

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º 1. Ejercicio (1 punto) Dado el array A={8, 3, 7, 1, 4, 9, 5, 2, 6 Describir cual es el estado del array A después de cada paso principal del algoritmo: InsertionSort. {8, 3, 7, 1, 4, 9, 5, 2, 6 {3, 8,

Más detalles

Android avanzado. Sesión 6: Depuración y pruebas. Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Android avanzado. Sesión 6: Depuración y pruebas. Experto en Desarrollo de Aplicaciones para Dispositivos Móviles Android avanzado Sesión 6: Depuración y pruebas 2012-2013 Depto. Ciencia de la Computación e IA Puntos a tratar Conectar un dispositivo Hardware Depuración con Eclipse Log y LogCat Dalvik Debug Monitor

Más detalles

Apéndices técnicos. Método de representación: forma en que serán representados internamente los documentos.

Apéndices técnicos. Método de representación: forma en que serán representados internamente los documentos. APÉNDICE A: INDEXACIÓN DE INFORMACIÓN. LUCENE 1. INTRODUCCIÓN: INDEXACIÓN DE INFORMACIÓN El desarrollo y crecimiento masivo de las redes de computadoras y medios de almacenamiento a lo largo de los últimos

Más detalles

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores Las variables se utilizan en programación para almacenar temporalmente

Más detalles

IIC1103 Introducción a la Programación

IIC1103 Introducción a la Programación Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación IIC1103 Introducción a la Programación Capítulo 6: Arreglos Resumen teórico Arreglos Hasta ahora

Más detalles

Programación estructurada

Programación estructurada 3. Funciones Programación estructurada Cuando un programa crece: Es importante mantenerlo ordenado No repetir código Agrupar el código según su función Dar nombre a las operaciones comunes var cantidad

Más detalles

Para esto, he desarrollado una aplicación en Visual Studio con tres proyectos, como se presenta en la siguiente ilustración:

Para esto, he desarrollado una aplicación en Visual Studio con tres proyectos, como se presenta en la siguiente ilustración: Caso Práctico: Diffie-Hellman sobre socket de C# Este caso práctico se abordará en el ámbito de aplicaciones cliente/servidor; programación con Socket. Se aplicará el lenguaje C#, el.net Framework 3.5

Más detalles

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones Contenidos 1. Justificación del uso de funciones. 2. Declaración de funciones: prototipos. 3. Prototipos y ficheros de cabecera. 4. Polimorfismo (sobrecarga de funciones). 5. Argumentos formales y actuales.

Más detalles

Tema Evaluación / Pruebas del Software

Tema Evaluación / Pruebas del Software 1 DISEÑO DE SISTEMAS DE INFORMACIÓN Tema Evaluación / Pruebas del Software 2 Tema 3. Evaluación / Pruebas del Software 3 Índice Introducción Objetivos y principios de las pruebas Diseño de casos de prueba

Más detalles

Experto Universitario Java Enterprise Spring

Experto Universitario Java Enterprise Spring Spring Sesión 6: Acceso remoto. Pruebas Indice Spring para acceso remoto Spring vs. EJB Comparación de los protocolos disponibles Acceso remoto con HttpInvoker Pruebas Acceso remoto. Pruebas 2012-2013

Más detalles

Automatización Industrial

Automatización Industrial ESCUELA SUPERIOR DE INFORMÁTICA UNIVERSIDAD DE CASILLA-LA MANCHA Automatización Industrial Programación de la Interfaz FTI con C# Tercera práctica Jose Domingo López López josed.lopez1@alu.uclm.es Raúl

Más detalles

Trabajo Práctico N 4: Diseño por Contratos

Trabajo Práctico N 4: Diseño por Contratos 1. Defina los contratos de las siguientes clases: Trabajo Práctico N 4: Diseño por Contratos a. La clase Fecha representa una fecha en el formato dia, mes y año. Especificar los contratos para asegurar

Más detalles

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión

Más detalles

Refactoring: otra práctica de la Programación extrema

Refactoring: otra práctica de la Programación extrema Hackers & Developers Magazine Año 0, Número 6 31 Refactoring: otra práctica de la Programación extrema EXTREME PROGRAMMING En ediciones anteriores estuvimos hablando de TDD, sus beneficios y forma de implementarlo.

Más detalles

Introducción al lenguaje Java

Introducción al lenguaje Java Tipo de entrega: Fecha límite: Lugar: Introducción al lenguaje Java por grupos de prácticas sesión de laboratorio Atenea Objetivos de la práctica: Escribir aplicaciones simples en Java Utilizar el entorno

Más detalles

CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA 2014

CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA 2014 CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA 2014 Ings. Mario Bressano & Miguel Iwanow ENVÍO 01/2014 Introducción al Lenguaje Java Paquetes Un Paquete en Java es un contenedor de clases que permite agrupar

Más detalles

También añado a la clase Libro los siguientes métodos: (que programaré más adelante)

También añado a la clase Libro los siguientes métodos: (que programaré más adelante) 1.Creación de la capa de negocios La capa del Dominio de Negocios consta de una clase creada a partir de la tabla Libro a la que le he añadido los atributos no persistentes: CodPais, artic y digcontrol.

Más detalles

JUNIT MATERIAL ELABORADO POR: RUBBY CASALLAS/JUAN PABLO QUIROGA/GLORIA CORTÉS DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DE LOS ANDES

JUNIT MATERIAL ELABORADO POR: RUBBY CASALLAS/JUAN PABLO QUIROGA/GLORIA CORTÉS DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DE LOS ANDES JUNIT MATERIAL ELABORADO POR: RUBBY CASALLAS/JUAN PABLO QUIROGA/GLORIA CORTÉS DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DE LOS ANDES 1 Objetivo del caso JUnit 2 Poder utilizar JUnit para realizar

Más detalles

Tutorial Enterprise Architect 7.5 Versión en español

Tutorial Enterprise Architect 7.5 Versión en español Página 1 de Tutorial Enterprise Architect 7.5 Versión en español Página 2 de Índice Aspectos básicos Vistazo general. 3 Diagrama de Clases.. 4 Atributos 6 Métodos. 10 Relaciones.. 11 Configuración de Opciones

Más detalles

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1 Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Máquina Expendedora (3.5 ptos.)... 1 1.2 Ejercicio 2: Clase Circulo (1.0 pto.)... 3 1.3 Ejercicio

Más detalles

Caso práctico Alquiler de películas en un vídeo-club

Caso práctico Alquiler de películas en un vídeo-club Caso práctico Alquiler de películas en un vídeo-club Adaptado de Refactoring Martin Fowler, 2000 Supongamos que tenemos que desarrollar una aplicación que gestione los alquileres de DVDs en un vídeo-club.

Más detalles

ESTRUCTURAS DE DATOS ÁRBOLES 143

ESTRUCTURAS DE DATOS ÁRBOLES 143 ESTRUCTURAS DE DATOS ÁRBOLES 143 TEMA 4. ÁRBOLES 4.1. CONCEPTOS GENERALES. Un árbol es una estructura de datos ramificada (no lineal) que puede representarse como un conjunto de nodos enlazados entre sí

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 smuelas@fi.upm.es! Clase! Objeto! Atributo o variable de instancia! Método! Instanciar/crear un objeto!

Más detalles

Programación Orientada a Objetos en Java

Programación Orientada a Objetos en Java Programación Orientada a Objetos en Java Curso 2006-2007 Tema 3 Clases y Objetos Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Clases y

Más detalles

Práctica 1 El juego de los chinos

Práctica 1 El juego de los chinos Práctica 1 El juego de los chinos Fecha de entrega: 6 de diciembre Según una teoría, el conocido como juego de los chinos nació en el año 1787 en un pequeño pueblo de León. Felipe Valdeón Triguero, un

Más detalles

Indicadores conceptos base EA constitución base Introducción a la programación de MT METATRADER, CONCEPTOS BÁSICOS DE PROGRAMACIÓN I

Indicadores conceptos base EA constitución base Introducción a la programación de MT METATRADER, CONCEPTOS BÁSICOS DE PROGRAMACIÓN I Indicadores conceptos base EA constitución base Introducción a la programación de MT METATRADER, CONCEPTOS BÁSICOS DE PROGRAMACIÓN I Introduccion Parte básica de la programación. Introducción Sintaxisi

Más detalles

Multitarea en Java. Rafa Caballero - UCM

Multitarea en Java. Rafa Caballero - UCM Multitarea en Java Rafa Caballero - UCM Programa Monoproceso (monotarea) En cada momento hay una única instrucción ejecutándose Se dice que el programa es monotarea, o monoproceso o monohebra (o single

Más detalles

SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS

SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º, Año 2004/2005 SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS Contenidos: 1. Descripción general de Maude 2. Comandos básicos 3. Formato

Más detalles

2. Estructura de un programa en Java

2. Estructura de un programa en Java 24 A. García-Beltrán y J.M. Arranz 2. Estructura de un programa en Java Objetivos: a) Describir la estructura del código fuente de una aplicación Java b) Presentar los conceptos de comentario y de identificador

Más detalles

1 Agencia de viajes: enunciado

1 Agencia de viajes: enunciado 1 AGENCIA DE VIAJES: ENUNCIADO 1 1 Agencia de viajes: enunciado Una agencia de viajes mantiene una base de datos con exactamente N clientes y M destinos turísticos. En una situación real, estos valores

Más detalles

Desarrollo de Servicios Web con JBuilder

Desarrollo de Servicios Web con JBuilder Artículos técnicos Grupo Danysoft: Desarrollo de Servicios Web con JBuilder Segunda parte Oscar Cristobal Ruiz Departamento Java Equipo Grupo Danysoft Enero 2003 - (902) 123146 www.danysoft.com Desarrollo

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN: TRABAJO PRÁCTICO OBLIGATORIO (EVALUACIÓN ORDINARIA) Curso: 2013/14

FUNDAMENTOS DE PROGRAMACIÓN: TRABAJO PRÁCTICO OBLIGATORIO (EVALUACIÓN ORDINARIA) Curso: 2013/14 CONTEXTO FUNDAMENTOS DE PROGRAMACIÓN: TRABAJO PRÁCTICO OBLIGATORIO (EVALUACIÓN ORDINARIA) Curso: 2013/14 CASO DE APLICACIÓN: GESTIÓN DE APPS Versión: 2.0.6 El trabajo práctico se enmarca en el desarrollo

Más detalles

Proyecto de ISIII. Pruebas Extra. Pruebas de Caja Blanca

Proyecto de ISIII. Pruebas Extra. Pruebas de Caja Blanca Proyecto de ISIII. Pruebas Extra Pruebas de Caja Blanca InfoMedia 27 de mayo de 2009 Índice Historial... 3 División del método en nodos... 4 Diagrama de Flujo de Control del método... 6 Diseño y realización

Más detalles

1. Aplicaciones del J2SE SDK1.4.2 de Sun.

1. Aplicaciones del J2SE SDK1.4.2 de Sun. Dept Informatica Índice 1 Aplicaciones del J2SE SDK142 de Sun 1 11 javac 1 12 java 1 13 javadoc 2 14 Las que no se explican 3 2 Guía de estilo de Java 3 21 Clases 3 211 Nombres para las clases 3 212 Estructura

Más detalles

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 3: Controles de formulario

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 3: Controles de formulario Ministerio de Educación Base de datos en la Enseñanza. Open Office Módulo 3: Controles de formulario Instituto de Tecnologías Educativas 2011 Controles de formulario El control más habitual de un formulario

Más detalles

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS 1 NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Árboles Binarios y Árboles Binarios Ordenados 2 Contenido Árboles binarios Iteradores Árboles binarios ordenados 3 Árboles binarios Algunas definiciones para

Más detalles

TEMA 5. EXCEPCIONES EN JAVA... 1 5.1 DEFINICIÓN DE EXCEPCIONES EN PROGRAMACIÓN... 2 5.2 TIPOS DE EXCEPCIONES / ERRORES Y CÓMO TRATARLOS... 10 5.

TEMA 5. EXCEPCIONES EN JAVA... 1 5.1 DEFINICIÓN DE EXCEPCIONES EN PROGRAMACIÓN... 2 5.2 TIPOS DE EXCEPCIONES / ERRORES Y CÓMO TRATARLOS... 10 5. TEMA 5. EXCEPCIONES EN JAVA... 1 5.1 DEFINICIÓN DE EXCEPCIONES EN PROGRAMACIÓN... 2 5.2 TIPOS DE EXCEPCIONES / ERRORES Y CÓMO TRATARLOS... 10 5.3 TRABAJANDO CON EXCEPCIONES: DECLARACIÓN, CONSTRUCCIÓN,

Más detalles

Programas. Los programas más simples escritos en lenguajes imperativos suelen realizar tres tareas de forma secuencial:

Programas. Los programas más simples escritos en lenguajes imperativos suelen realizar tres tareas de forma secuencial: Programas Estructura de un programa simple Los programas más simples escritos en lenguajes imperativos suelen realizar tres tareas de forma secuencial: Entrada de datos Procesamiento de los datos Salida

Más detalles

Introducción a la programación orientada a objetos

Introducción a la programación orientada a objetos Introducción a la programación orientada a objetos Albert Gavarró Rodríguez PID_00174495 FUOC PID_00174495 2 Introducción a la programación orientada a objetos FUOC PID_00174495 Introducción a la programación

Más detalles

Introducción a la calidad de código

Introducción a la calidad de código Universidad de Buenos Aires Facultad De Ingeniería Introducción a la calidad de código [75.40] Algoritmos y Programación I 2do Cuatrimestre 2010 Cátedra: Ing. Pablo Guarna Autor: Bernardo Ortega Moncada

Más detalles

Hilos en Java. Crear un Hilo. Detener un hilo. Fuente: http://www.chuidiang.com/java/hilos/hilos_java.php

Hilos en Java. Crear un Hilo. Detener un hilo. Fuente: http://www.chuidiang.com/java/hilos/hilos_java.php Fuente: http://www.chuidiang.com/java/hilos/hilos_java.php Hilos en Java A veces necesitamos que nuestro programa Java realice varias cosas simultáneamente. Otras veces tiene que realizar una tarea muy

Más detalles

Euclides extendido y Test de primalidad probabiĺıstico

Euclides extendido y Test de primalidad probabiĺıstico Euclides extendido y Test de primalidad probabiĺıstico Taller de Álgebra I Verano de 2014 Lema de Bézout Recordemos este lema: Lema (Étienne Bézout) Sean a, b Z, alguno distinto de 0. Entonces existen

Más detalles

Los caracteres de Java pueden agruparse en letras, dígitos, espacios en blanco, caracteres especiales, signos de puntuación y secuencias de escape.

Los caracteres de Java pueden agruparse en letras, dígitos, espacios en blanco, caracteres especiales, signos de puntuación y secuencias de escape. CARACTERES EN JAVA Los caracteres de Java pueden agruparse en letras, dígitos, espacios en blanco, caracteres especiales, signos de puntuación y secuencias de escape. Letra, Dígitos y Otros Estos caracteres

Más detalles

Aquí se declaran los. Aquí se declaran los métodos de la clase. *Atributos de la clase

Aquí se declaran los. Aquí se declaran los métodos de la clase. *Atributos de la clase Programación Orientada a Objetos Implementación en Java Angela C. Carrillo Ramos Agenda Implementación y uso de clases en Java Ejemplo clase CuentaBancaria 1 Ejemplo Diseño Cuenta Bancaria (1) Diseñar

Más detalles

Práctica 4: Herencia. Objetivos:

Práctica 4: Herencia. Objetivos: Práctica 4: Herencia Objetivos: Como se implementa la herencia en Java (superclase - clase descendiente). Utilizar super. Redefinición de métodos Clase Object Clase System Clases abstractas 1. Herencia.

Más detalles

Clase 11. Análisis dinámico, 2ª parte.

Clase 11. Análisis dinámico, 2ª parte. Clase 11. Análisis dinámico, 2ª parte. Continuamos con el mismo tema de la clase anterior, pero esta vez nos ocuparemos principalmente de la fase de prueba. Nos detendremos brevemente en algunas de las

Más detalles

Testing Unitario. Laboratorio de Testing y Aseguramiento de la Calidad del Software

Testing Unitario. Laboratorio de Testing y Aseguramiento de la Calidad del Software Testing Unitario Laboratorio de Testing y Aseguramiento de la Calidad del Software Introducción Testing ad hoc Automatización de testing Testing unitario Unidad y Suite de test GoogleTest Fixture e independencia

Más detalles

RUEDA TORRES DULCE CAROLINA 3CM2 JAX-WS WEB SERVICES WEB APPLICATION DEVELOPMENT

RUEDA TORRES DULCE CAROLINA 3CM2 JAX-WS WEB SERVICES WEB APPLICATION DEVELOPMENT 3CM2 JAX-WS WEB SERVICES WEB APPLICATION DEVELOPMENT 1. INTRODUCCIÓN En esta práctica se mostraran los fundamentos del uso de la IDE para desarrollar un servicio web JAX-WS. Después de crear el servicio

Más detalles

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java.

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java. Práctica 3 mtp metodoloxía e tecnoloxía da programación Objetivos: Duración: Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java. 1 semana 1.- Identificadores Los identificadores

Más detalles