Вы находитесь на странице: 1из 9

Introduccin al lenguaje Java

Tipo de entrega: Fecha lmite: Lugar: por grupos de prcticas sesin de laboratorio Atenea

Objetivos de la prctica: Escribir aplicaciones simples en Java Utilizar el entorno de desarrollo de Java (Eclipse) Utilizar los conceptos de Clase, Atributo, Constructor y Mtodo en el cdigo de una aplicacin Java Generar el programa principal en el cdigo de una aplicacin Java Identificar mbito de una variables Utilizar conceptos de herencia. Utilizar conceptos de sobre escritura.

Estudio previo
Realiza el planteamiento de los ejercicios (como mnimo de los ejercicios obligatorios). El planteamiento del problema significa describir y razonar clases (nombre), atributos (nombre y tipo), mtodos (nombre, parmetros que aceptan y resultado que devuelve). Trelo a la sesin de laboratorio en papel.

Resultados
Los resultados esperados de esta prctica es la carpeta del Workspace del Eclipse que contiene los cdigos de las aplicaciones.

Coleccin de problemas
Ejercicio 1 (constructores) a) Crea una clase Libro que pueda ser utilizada para representar los libros que hay en una biblioteca. Supn que cada libro tiene los siguientes atributos: ttulo autor ao de publicacin editorial

b) Escribe un mtodo main que cree dos objetos de la clase Libro y que muestre el valor de los atributos de cada uno de ellos. Ejercicio 2 (paso de parmetros) Realiza un programa Java que reciba como argumento un valor de temperatura en grados Celsius e imprima por pantalla su valor en grados Fahrenheit. La frmula de conversin de grados Celsius a grados Fahrenheit es: F = 9/5 * C + 32. Ejercicio 3 (mtodos, paso de parmetros) Realiza un programa Java que calcule el cuadrado de una suma, el de una diferencia y que muestre el mensaje siguiente exactamente: El cuadrado de la suma de primerValor y segundoValor vale cuadradoSuma. El cuadrado de la diferencia de primerValor y segundoValor vale cuadradoResta.

Eres un mossstruo". Utiliza los nmeros 3 y 2 para los clculos. Ejercicio 4 (mbito variables) a) Seala cual es el mbito de las variables x y q { int x = 15; { int q = 34; } } b) Crea una clase para probar el mbito del cdigo del apartado anterior y prueba a printar por pantalla el valor de q desde su mbito y fuera de ste. Haz lo mismo con la variable q. Ejercicio 5 (constructores) Queremos que la salida por consola de un programa en Java sea: Un Un Un Un rbol de 4 metros rbol tipo Roble rbol genrico Pino de 5 metros

Escribe el cdigo en JAVA que falta para que la salida por consola del programa sea: public class PruebaArboles {

public static void main(String args[]) { Arbol arbol1 = new Arbol(4); Arbol arbol2 = new Arbol("Roble"); Arbol arbol3 = new Arbol(); Arbol arbol4 = new Arbol(5,"Pino"); } } Ejercicio 6 (mtodos) Cul es el resultado del siguiente programa Ejercicio6.java? public class Ejercicio6 { public static void main(String [ ] args){ Clase1 obj1=new Clase1(); obj1.imprimir(24.3,5); } } class Clase1 { private double valor=9.8; private int x=7; public void imprimir(double valor, int x) { System.out.print(valor+" "+this.x); } } Ejercicio 7 (Strings) Realiza este ejercicio primero sin ayuda del Eclipse y despus comprueba tus resultados con el Eclipse. a) Cul es el valor de saluda_pepe ? String saludo = "hola"; String nombre = "Pepe";

String saluda_pepe = ""; saluda_pepe = saludo + nombre; b) Cul es el valor de saludo? Es de tipo String o de tipo int? String saludo = "hola"; int n = 5; saludo = saludo + " " + n; c) Cul es el valor de subsaludo? String saludo = "hola"; String subsaludo = ""; subsaludo = saludo.substring(0,2);

d) Cul es la salida por consola de este programa? Razona la respuesta


public class Ejemplo5 { public static void main(String[] args) { String saludo = "Hola"; String saludo2 ="hola"; int n = 5; System.out.println(saludo.substring(0,2)); System.out.println(saludo +" " + n); System.out.println("saludo == saludo2 saludo.equals(saludo2)); } } Ejercicio 8 (mtodos) Cul es la salida de este programa? Por qu? (Nota: Busca overflow en Java) public class Overflow { public static void main(String[] args) { int gran = 0x7fffffff; System.out.println("gran = " + gran); int mas_grande = gran * 4; System.out.println("mas_grande = " + mas_grande); } } Ejercicio 9 (mtodos) Escribe un programa que disponga de una clase para representar las asignaturas del cuatrimestre que ests cursando. Una asignatura tiene un nombre, un cdigo numrico y el cuatrimestre del que forma parte. Los valores iniciales han de proporcionarse en el constructor. La clase ha de tener mtodos para obtener los valores de los atributos. El programa ha de construir un objeto con los siguientes valores: nombre FSD, cdigo 2022, cuatrimestre 2B. A continuacin el programa ha de imprimir los valores del objeto por pantalla. Ejercicio 10 (mtodos y constructores) Define una clase que represente un punto en un espacio bidimensional. La clase debe disponer de un constructor con las coordenadas del punto y mtodos que devuelvan las coordenadas. Ejercicio 11 (mtodos) Escribe un programa que instancia (crea) cuatro puntos (objetos): el primero situado en el origen, el segundo situado en (2,3), el tercero en (2, -1) y el cuarto como punto medio entre el segundo y el tercero.

"+

Ejercicio 12 (constructores) Aade a la clase anterior un constructor sin parmetros que permita construir puntos en el origen de coordenadas. Ejercicio 13 (mtodos) Aade un mtodo a la clase anterior que calcule la distancia a otro punto. Ejercicio 14 (mtodos) Escribe un programa que cree un punto (5,3) e imprima la distancia del punto al origen de coordenadas. Ejercicio 15 (mtodos) Se desea calcular la distancia recorrida por un mvil. Se sabe que el mvil sigue movimientos rectilneos entre una serie de puntos. Se pide escribir un mtodo que reciba una serie de puntos y determine la distancia recorrida por el mvil. Para probar el mtodo, escribe un programa que calcule la distancia recorrida entre los puntos (0,0), (2,4), (4,5), (4,6), (3,4) y (0,0) (vuelta al origen). Prueba tambin qu ocurre cuando se llama al mtodo con un solo punto. Ejercicio 16 (mtodos) a) Explique todos los errores de las clases C.java y DemoC.java. Corrgelos. public class C { private int dato1 = 0; private int dato2 = 0; public int dato3 = 0; public C(){ } public void setDato1(int n){ dato1 = n; } public void getDato2(){ return dato2; } public void getDato3(){ return dato3; } private void setDato3(int n){ dato3=n; } } public class DemoC { public static void main(String[] args){ C c1 = new C(); C c2 = new C(1,2,3); c1.setDato1(4); c1.setDato3(5); int n1 = c1.getDato2(); int n2 = c1.getDato3(); int n3 = c1.dato1; int n3 = c1.dato2; int n4 = c1.dato3; } }

Ejercicio 17 (objetos) Qu imprime el siguiente programa? class Ejercicio17 { public static void main (String [] args) { Clase1 obj1= new Clase1(5,4); System.out.print(obj1.modificar(4)+" "); Clase1 obj2= new Clase1(5,4); System.out.print(obj2.modificar(5)+" "); obj2=obj1; System.out.println(obj2.modificar(5)+" "); }//fin main } class Clase1{ int p1,p2; public Clase1 (int i, int j){ p1=i; p2=j; } public int Modificar(int i){ p1=p1+i; p2=p2+i; System.out.print(p2+" "); return p1; } } Ejercicio 18 (objetos) Implementa un programa que calcule los n primeros trminos de la sucesin de Fibonacci, donde n es un valor entero especificado por el usuario. La secuencia con los siguientes nmeros: 1, 1, 2, 3, 5, 8, 13, 21. Despus de los dos primeros unos, cada nmero de la secuencia es la suma de los dos anteriores. Por ejemplo, 1 + 1=2, 1+2=3, 2+3=5, 3+5=8, y as sucesivamente. Ejercicio 19 (herencia) Programa el siguiente diagrama de clases:

a) Razona el por qu de este diagrama

b) Cul es el significado de la flecha? Qu beneficios comporta? Ejercicio 20 (herencia)

Disea dibujndola (no programndola) el diagrama de clases de una jerarqua de clases que permita representar los distintos tipos de viviendas que ofrece una inmobiliaria a sus clientes: estudios, pisos, ticos, dplex y chalets. Algunos datos a tener en cuenta pueden ser: la localizacin del inmueble, el nmero de metros cuadrados que tiene, la planta del edificio en la que se sita, la superficie de la terraza, el nmero de plantas, el nmero de dormitorios y baos, el estado en el que se encuentra (para entrar a vivir, para reformar), si dispone de ascensor, portero, piscina, garaje, zonas comunes, dimensiones del jardn o parcela, etc.
Ejercicio 21 (herencia)

Disea dibujndola (no programndola) el diagrama de clases de una jerarqua de clases que permita almacenar datos sobre los planetas y satlites que forman parte del sistema solar (junto con el sol). Algunos atributos que puede ser interesante recoger son: la masa del cuerpo, su dimetro medio, el perodo de rotacin sobre el propio eje, perodo de traslacin alrededor del cuerpo que orbitan, distancia media a ese cuerpo, excentricidad de la rbita, ...
Ejercicio 22 (herencia) Define una clase padre llamada Animal con 4 atributos y dos mtodos. Posteriormente define dos posibles clases (que se te ocurran) hijas de Animal, con un atributo ms y un mtodo ms que la clase padre. Realiza una ltima clase que se llame MiZoologico que cree objetos animales y muestre sus caractersticas (atributos) por pantalla. Nota: Cuando se dice un mtodo ms NO significa que las clases hijas deban tener tres mtodos. Ejercicio 23 (herencia) Explica el siguiente ejemplo lnea por lnea. public class Mamifero { private int patas; private int colorPelo; private String nombre; public void imprimirPatas() { System.out.println(nombre + patas\n"); } " tiene " + patas + "

public Mamifero(String nombre, int patas) { this.nombre = nombre; this.patas = patas; } } class Perro extends Mamifero { private int ladridos; public Perro(String nombre) { super(nombre, 4); ladridos = 0; } }

class Gato extends Mamifero { private int maullidos; public Gato(String nombre) { super(nombre, 4); maullidos = 0; } } class ChitePerro { public static void main(String [] args) { Perro bobi = new Perro("Bobi"); bobi.imprimirPatas(); /*Est en la clase mamfero*/ } } Cul es el resultado de este programa? Qu significa que patas, colorPelo y nombre tengan el modificador private? Podemos acceder a ellas desde las otras clases? Si no podemos acceder a ellas en el resultado del programa saldrn el nmero de patas? Para qu nos ha servido la herencia en este ejemplo?

a) b) c) d) e)

Ejercicio 24 (herencia) class Figura { protected String color; public Figura(String color ) { this.color=color; } } class Rectangulo extends Figura{ int largo,ancho; public Rectangulo(String color,int largo,int ancho) { super(color); this.largo=largo; this.ancho=ancho; } public double area(){ return (double)largo*ancho; } } class Triangulo extends Figura { int base,altura; public Triangulo(String color,int base,int altura) { super(color); this.base=base; this.altura=altura; } public double area(){ return (double)base*altura/2; } } class TrianguloRectangulo extends Triangulo { public TrianguloRectangulo(String color,int base,int altura){ super(color,base,altura); } } class TrianguloIsosceles extends Triangulo { public TrianguloIsosceles(String color, int base,int altura){ super(color,base,altura); } public double area(){ double calculoArea= super.area(); return calculoArea*2; } } public class Principal { public static void main(String[] args) { double s;

Rectangulo r=new Rectangulo("verde",2,3); s=r.area(); System.out.println("Este rectngulo es de color "+r.color+"\nEl rea es: "+s); TrianguloIsosceles ti=new TrianguloIsosceles("amarillo",5,7); s=ti.area(); System.out.println("Este triangulo issceles es de color "+ti.color+"\nEl rea es: "+s); TrianguloRectangulo tr=new TrianguloRectangulo("rojo",5,3); s=tr.area(); System.out.println("Este triangulo issceles es de color "+tr.color+"\nEl rea es: "+s); } } a) Realiza un diagrama de clases como el del ejercicio 1. Razona el por qu de esta estructura de clases. b) Qu ventaja presenta dicha estructura? c) Programa el ejemplo con el Eclipse. d) Podramos obtener el mismo resultado del programa principal, programando con alguna clase menos. Crees que realizar el mismo programa con menos clases es ms eficiente? ofrecera una mayor claridad? e) Para qu se sobreescriben mtodos? f) Explica para cada clase del cdigo: Visibilidad de los atributos y de los mtodos. El uso de la palabra clave super. Que hace cada uno de los constructores y mtodos de cada clase; as como cual ser la salida del programa principal. Ejercicio 25 (herencia) class C1 { int i; C1() {i = 1;} void m1() { void m2() { }

System.out.println( i ); m1(); m1(); }

class C2 extends C1 { C2() { i = 2; } void m1() { System.out.println( -i ); } class C3 extends C2 { C3() { i++; } void m2() { m1(); }

public class HerenciaYSobreescritura { public static void main( String args[] ) { C1 a = new C1(); a.m2(); C1 b = new C2(); b.m2(); C2 c = new C3(); c.m2(); } } a) Cul es el resultado de la ejecucin de este programa?

Ejercicio 26 (herencia) Supongamos que existe la clase F con la siguiente definicin. public class F { private int valor; public F(int x){ valor=x; System.out.println("F fabricado: " + valor); } } a) Cul es la salida del siguiente programa? Explica el por qu. public class G extends F{ private F valor; public G(int x,int y){ super(x); valor=new F(y); } public static void main(String []args){ G g=new G(11,28); } } Ejercicio 27 (herencia) Decir cul sera el resultado de la ejecucin de este programa suponiendo que se han eliminado previamente todas las sentencias errneas. Identificar dichas sentencias errneas. class A { void m1() { void m2() { } System.out.println("Clase A - m1"); System.out.println("Clase A - m2"); } }

class B extends A { void m2() { System.out.println("Clase B - m2"); void m3() { System.out.println("Clase B - m3"); } class EjercicioHerencia { public static void main( String args[] ) { A ob1 = new A(); A ob2 = new B(); B ob3 = new A(); B ob4 = new B(); ob1.m2(); ob2.m2(); ob2.m1(); ob2.m3(); ((B)ob2).m3(); ob4.m1(); ((B)ob1).m2(); } }

} }

Вам также может понравиться