Diseño y Programación Orientados a Objetos 29 de Abril de Primer Certamen

Documentos relacionados
APELLIDOS:... NOMBRE:... GRUPO:... NÚMERO DE EXPEDIENTE:...

Interfaces y Clases Internas. ELO329: Diseño y Programación Orientados a Objetos

Ejemplo de GUI con Swing

d) Mencione dos diferencias y dos semejanzas entre clases abstractas e interfaces.

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein --Javier Navarro

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

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN

Java en 2 horas. Rodrigo Santamaría

Manejo de eventos AWT

Introduciendo datos desde el

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

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

Estructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC)

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Agenda. Contenedores y componentes

Desarrollo de aplicaciones con JAVA, JCreator, JDeveloper NetBeans

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Construir una Interfaz Gráfica

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Laboratorio de Aplicaciones Telemáticas Ingeniería Técnica de Telecomunicación Especialidad en Telemática

ELO329: Diseño y Programación Orientados a Objetos 20 de Junio de Certamen Final

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Práctica 4: Java Remote Method Invocation (RMI)

Introducción al lenguaje Java

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

Tema: Introducción al IDE de Microsoft Visual C#.

Tema 4. Excepciones en Java

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)

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

INTERFAZ GRÁFICO DE USUARIO APLICACIONES DE EJEMPLO

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Programación interactiva. Oscar Bedoya

Uso de Java Swing. Noviembre de 2013

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

La Herencia: Teoría (1)

Aplicaciones de Escritorio

2. Estructura de un programa en Java

Tema: Introducción a Java y Netbeans

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

Por ejemplo, considerando la jerarquía de herencia de Figuras Geométricas de la siguiente figura, es posible hacer uso del concepto de polimorfismo.

Derechos de Acceso: COMPOSICION

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

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

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Programación de sistemas

ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO ESCUELA DE INGENIERIA EN SISTEMAS

Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java

CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA 2014

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

Programación Orientada a Objetos. Java: Excepciones

Elementos léxicos del lenguaje de programación Java

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

Modelo de Objetos Distribuidos

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Práctica 2: Java Remote Method Invocation (RMI)

Programación Orientada a Objetos. Java: Excepciones

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

Programación de Eventos

Introducción a la Programación Orientada a Objetos

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

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

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2007/08

Metodología y Tecnología de la Programación

Herencia e Interfaces

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

Interfaces gráficas I

Primer Parcial Septiembre 5 de 2009

En este método la implementación de la interface de usuario donde se produce el evento y la implementación del oyente están en clases separadas.

Objetivo de aprendizaje del tema

Introducción - por qué usarlas?(1)

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

Componentes Distribuidos EJBs. Ing. Cesar Julio Bustacara Medina

Uso de excepciones en Java

Manejo de Excepciones Para capturar y manejar las excepciones Java proporciona la sentencia try, catch y finalty. Entre un try y un catch se escribe

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07

16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz

Modulo 11. Clases y Objetos en Java

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

James Gosling, creador de Java

Componentes Swing. Las clases cuyo nombre comienza por J forman parte de Swing. Todas las demás están incluidas en AWT (Abstract Window Toolkit)

Introducción a los servicios web 2012 Marcelino Rodríguez Suárez Un servicio web publica su descripción en un documento XML en

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

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Programación de Interfaces Gráficas en Java. Agustín J. González ELO329

Java: control de excepciones

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Introducción a la Programación Orientada a Objetos

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

INGRESAR DATOS CON UN CONTROL VISUAL EN JAVA. CLASE JTEXTFIELD Y MÉTODO GETTEXT. EJEMPLOS (CU00928C)

NetC.Time. Historia. Tito Agudelo Pedro Fula Yesid Gutierrez Oscar Munevar

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

INSTALACION Y PRUEBA DEL PLUGIN WindowBuilder para trabajar Swing en Eclipse

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

El lenguaje de programación Java

Transcripción:

Primer Certamen Primera parte, sin apuntes (30 minutos; 1/3 de la nota): 1.- Responda brevemente y entregue en hoja con su nombre. a. Al redefinir un método en una subclase, es posible retornar un objeto de distinta clase al retornado en el método de la super clase? Explique. Sí es posible. Se debe cumplir que la clase del objeto retornado por la redefinición debe ser subclase de la clase del objeto retornado por el método redefinido. b. Cuándo se usa la sentencia import javax.swing.joptionpane;? Podríamos omitir este import? La sentencia import javax.swing.joptionpane; se usa cuando deseamos crear instancias de la clase JOptionPane, como en: JOptionPane obj=new JOptionPane(); Sí se puede omitir, pero cada vez que deseemos crear una instancia de esa clase debemos usar la especificación completa como en: javax.swing.joptionpane obj=new javax.swing.joptionpane(); c. Alguien dice: un cuadrado es un rectángulo de lados iguales. Al ver la forma es-un, piensa en herencia. Dé dos razones por las que no es bueno definir la clase Cuadrado como heredando de Rectángulo. i) Al hacerlo estaríamos usando más memoria de la necesaria para almacenar cuadrados. ii) Habría problemas al aplicar el principio de sustitución. Si un método espera un rectángulo para crear la portada de un libro, el método no podrá definir un alto distinto de un ancho si el objeto fuera instancia de cuadrado. d. La expresión hola == hola, es verdadera o falsa? Explique. Es verdadera. Los strings son objetos en Java, pero por tratarse de strings literales, es decir secuencia de caracteres entre, éstos quedan internos en la clase String y el compilador asocia una única referencia a iguales contenidos. Ver: http://profesores.elo.utfsm.cl/~agv/elo329/1s09/lectures/comparacionstrings.html e. Si las técnicas de orientación a objeto pueden dar solución a los mismos problemas que los lenguajes no orientados a objetos, Dé dos razones para su uso común en los lenguajes actuales? i) La orientación a objeto facilita la reutilización de código. ii) La orientación a objeto facilita el trabajo en equipo. f. Juan instaló el JDK de java, Pedro instaló JRE. Mencione dos cosas que puede hacer Juan pero no Pedro. i) Juan puede compilar programas con javac. ii) Juan puede extraer la documentación de un programa con javadoc. g. La clase B es derivada de A. En B redefinimos el método público getedad() de A. Cómo podemos invocar getedad() implementado por A desde otro método en B? Cómo desde este método en B podemos invocar getedad() implementado en B? i) Para invocar implementación de A, en el método de B pongo: super.getedad(); // con esto invocamos la implementación de A. ii) Para invocar implementación de B, pongo: getedad(); // Así invocamos la implementación en B desde un método de B. h. Es posible impedir que un método sea redefinido en una clase derivada? Justifique. Sí es posible, basta poner agregar el calificador final al método, como en: class A { public final int getedad() {......

Segunda Parte, con apuntes (60 minutos, 2/3 de la nota. 1/3 + 1/3): 2.a) En clase MiTarea implemente un método estático para calcular calcular n!/m!, suponga n m. b) Extienda su implementación previa para lanzar una excepción cuando el método sea invocado con n < m. c) Haga un programa Java que pida dos enteros n y m por consola y usando su implementación de b) retorne el valor de n!/m!. Si el usuario ingresa n<m, el programa imprime por pantalla Detecté un problema que impide hacer su cálculo. y termina. a) public class p2a { public static long nfacsobremfac(int n, int m){ b) public class p2b { public static long nfacsobremfac(int n, int m) throws Exception { if ( n < m ) throw new Exception ("n < m"); // podría ser más elaborado creando otra clase c) import java.util.scanner; class p2b { public static long nfacsobremfac(int n, int m) throws Exception { if ( n < m ) throw new Exception ("n < m"); public class p2c { public static void main (String[] argv) { Scanner in = new Scanner(System.in); System.out.print("n = "); int n = in.nextint(); System.out.print("m = "); int m = in.nextint();

try { System.out.println("n!/m! = "+p2b.nfacsobremfac(n,m)); catch(exception e){ System.out.println("Detecté un problema que impide hacer su cálculo."); System.exit(-1); 3. a) Para un juego se le pide crear dados de N caras. Estos dados pueden tomar valores dentro del conjunto {1,2,3,..., N. Cree la clase Dado. Ésta permite definir el número de caras en su constructor. Si no se señala, se asume 6 caras. Estos dados deben permitir ser lanzados y en cualquier momento se puede consultar el valor del último lanzamiento del dado. b) Desarrolle Juego, una aplicación Java que usa la clase definida en a) y muestra una interfaz gráfica con un botón, el cual lanza un dado al ser presionado, y un área para mostrar el resultado del lanzamiento. El número de caras es ingresado por consola vía un argumento en la línea de ejecución de esta aplicación. c) Señale qué cambio debe hacer a su clase Dado para implementar la interfaz Comparable basado en el último lanzamiento de los dados. a) public class Dado { private final int numcaras; private int valor; public Dado(){ this(6); public Dado(int caras){ numcaras=caras; lanzar(); public int lanzar(){ valor=(int)(math.random()*numcaras) +1; public int getvalor(){ b) import java.awt.event.*; import javax.swing.*; public class Juego { public static void main(string argv[]){ JFrame f= new JuegoFrame(Integer.parseInt(argv[0])); f.setvisible(true);

class JuegoFrame extends JFrame { public JuegoFrame(int caras){ addwindowlistener( new WindowAdapter() { /* Clase anonima */ public void windowclosing( WindowEvent e) { System. exit( 0); ); getcontentpane().add(new JuegoPanel(caras)); pack(); class JuegoPanel extends JPanel{ private Dado dado; private JLabel label; public JuegoPanel (int caras){ dado = new Dado(caras); JButton boton = new JButton("Lanzar Dado"); add(boton); label = new JLabel(" "+dado.getvalor()); add(label); boton.addactionlistener( new ActionListener (){ public void actionperformed(actionevent event) { dado.lanzar(); label.settext(integer.tostring(dado.getvalor())); ; ); c) public class DadoComparable implements Comparable { // cambia private final int numcaras; private int valor; public DadoComparable(){ this(6); public DadoComparable(int caras){ numcaras=caras; lanzar(); public int compareto(object obj){ DadoComparable d=(dadocomparable)obj; return (valor-d.valor); public int lanzar(){ valor=(int)(math.random()*numcaras) +1; public int getvalor(){ // debe ser agregado