1. Cree una clase empleado y pruebe su funcionalidad. Las variables de ejemplar que debe considerar son nombre, apellido y salario anual. Adems de los mtodos de consulta y actualizacin de las variables, considere dos mtodos ms. Uno de ellos devolver el salario mensual. El otro mtodo devolver un extra calculado como un porcentaje del salario anual ms 1000. El porcentaje es un parmetro que se pasa al mtodo.
2. Escriba un programa que estime el beneficio obtenido por un producto particular en un mes. Se conoce el nombre del producto, el coste de la unidad, el precio de venta al pblico y el nmero medio de unidades del producto vendidas en un mes. Disee y use las clases apropiadas.
3. Construya un programa que use una clase denominada vehculo, que tenga como atributos las propiedades ms caractersticas de cada vehculo. El programa crear una matriz de objetos con vehculos diferentes y deber imprimir las caractersticas del vehculo ms barato. Los datos de cada vehculo se introducirn por teclado cuando el programa lo solicite.
4. El siguiente diagrama de clases, incompleto, representa la estructura bsica de un programa para recopilar los encargos de productos de una compaa. Encargo encargoID fecha valor Producto ID coste Cliente nombre direccin pago( ) Cliente corporativo cuenta pago( ) Cliente particular tarjetaNmr pago( ) 1 * * 1
Escriba una versin en Java de la clase Producto. Incluya mtodos que permitan acceder a la informacin del producto. Fundamentos de Programacin II
Ejercicios Tema 1 Pgina 2
5. Dada la siguiente relacin de asociacin entre las clases A y B. Indique como se implementara
a) Un objeto de A hereda de B b)Un mtodo de B tiene como parmetro un objeto A c) Un atributo de ejemplar de B es un objeto A d)Ninguna de las anteriores es cierta
6. Cul es el resultado del siguiente programa?
cl ass Ej er ci ci o { publ i c st at i c voi d mai n( St r i ng [ ] ar gs) { Cl ase1 obj 1=new Cl ase1( ) ; obj 1. i mpr i mi r ( 24. 3, 5) ; } } cl ass Cl ase1 { pr i vat e doubl e val or =9. 8; pr i vat e i nt x=7; publ i c voi d i mpr i mi r ( doubl e val or , i nt x) { Syst em. out . pr i nt ( val or + +t hi s. x) ; } }
7. Qu imprime el siguiente programa?
cl ass Ej er ci ci o { publ i c st at i c voi d mai n ( St r i ng [ ] ar gs) { Cl ase1 obj 1= new Cl ase1( 5, 4) ; Syst em. out . pr i nt ( obj 1. modi f i car ( 4) +" " ) ; Cl ase1 obj 2= new Cl ase1( 5, 4) ; Syst em. out . pr i nt ( obj 2. modi f i car ( 5) +" " ) ; obj 2=obj 1; Syst em. out . pr i nt l n( obj 2. modi f i car ( 5) +" " ) ; }/ / f i n mai n } cl ass Cl ase1{ i nt p1, p2; publ i c Cl ase1 ( i nt i , i nt j ) { p1=i ; p2=j ; } publ i c i nt modi f i car ( i nt i ) { p1=p1+i ; p2=p2+i ; Syst em. out . pr i nt ( p2+" " ) ; r et ur n p1; } }
8. Desarrolle un programa que sirva para evaluar el valor de un polinomio, cuyo grado y coeficientes se introducen por teclado, en un valor de abscisa determinado.
A B 1 1 Fundamentos de Programacin II
Ejercicios Tema 1 Pgina 3
9. Cul es el error del siguiente programa?
cl ass Cuent a {
pr ot ect ed i nt numer o_cuent a; pr ot ect ed doubl e sal do;
publ i c Cuent a( i nt cuent a, doubl e i ni ci al ) { numer o_cuent a=cuent a; sal do = i ni ci al ; } / / Fi n const r uct or cuent a
publ i c voi d deposi t ar ( doubl e cant i dad) { sal do = sal do + cant i dad; } / / Fi n mt odo deposi t o
publ i c doubl e sal do( ) { r et ur n sal do; } / / Fi n mt odo sal do }/ / f i n cl ase Cuent a
cl ass Banco {
publ i c st at i c voi d mai n( St r i ng [ ] ar gs) { / / Se cr ea l a cuent a Cuent a cuent a_1 = new Cuent a( 123456, 2505. 32) ; / / Se consul t a el sal do doubl e t ot al _cuent a=cuent a_1. sal do; Syst em. out . pr i nt l n( Tot al act ual en l a cuent a: +t ot al _cuent a + Eur os) ; }/ / del mai n }/ / de l a cl ase Banco
10. a) Disee e implemente en Java una clase para trabajar con tringulos issceles. Para ello, defina las variables de ejemplar mnimas que requiera, proporcione mtodos de consulta, un mtodo constructor e implemente otros mtodos para calcular el permetro y el rea de un tringulo. b) Implemente en Java un mtodo que a partir de una matriz de tringulos devuelva el rea del tringulo de mayor superficie
11. Un teatro se caracteriza por su nombre y su direccin y en l se realizan 4 funciones al da. Cada funcin tiene un nombre y un precio. Realice el diseo de clases e indique qu mtodos tendra cada clase, teniendo en cuenta que se pueda cambiar el nombre del teatro y el nombre y precio de la funcin. Implemente dichas clases.
Fundamentos de Programacin II
Ejercicios Tema 1 Pgina 4
12. a) Qu imprime el siguiente programa?
cl ass Ej er ci ci o { publ i c st at i c voi d mai n ( St r i ng [ ] ar gs) { Cl ase1 obj 1= new Cl ase1( 7) ; Cl ase1 obj 2= new Cl ase1( 9) ; obj 2=obj 1; Syst em. out . pr i nt ( obj 1. val or pr op( ) +" " ) ; Syst em. out . pr i nt ( obj 2. val or pr op( ) +" " ) ; }/ / f i n mai n }
cl ass Cl ase1{ st at i c i nt pr op=0; publ i c Cl ase1 ( i nt val or ) { pr op=val or ; } publ i c i nt val or pr op( ) { r et ur n pr op; } }
b) Y si prop en Clase1 no la declaramos como static?
13. Cul es el error de la siguiente clase? cl ass Ej empl o {
st at i c pr i vat e f i nal i nt a=10; st at i c pr i vat e f i nal i nt b=20; publ i c i nt get A( ) {r et ur n a; } publ i c i nt get B( ) {r et ur n b; }
} a) No se produce ningn error, la clase est bien implementada b) a y b son static por lo que no se pueden declarar en una clase c) Al ser a y b estticas no se pueden usar en los mtodos getA y getB que no son estticos d) a y b no pueden ser static y final a la vez
14. Dado el siguiente fragmento de cdigo:
Or denador sobr emesa; Or denador por t at i l ; sobr emesa = new Or denador ( ) ; sobr emesa. pr eci o( 900) ; por t at i l = new Or denador ( ) ; por t at i l . pr eci o( 1100) ; por t at i l = sobr emesa; sobr emesa = nul l ; Qu afirmacin es cierta? a) Al final tanto el objeto sobremesa como el objeto porttil apuntan a null b) Al final slo queda un objeto de tipo Ordenador con precio 1100 c) Al final slo queda un objeto de tipo Ordenador con precio 900 d) Al final hay dos objetos de tipo Ordenador, uno con precio 900 y otro con precio 1100 Fundamentos de Programacin II
Ejercicios Tema 1 Pgina 5
15. Dado el siguiente fragmento de cdigo que pertenece a un programa perfectamente definido:
Al umno a = new Al umno( El ena) ; Al umno b = a; Al umno c = new Al umno( Mar a) ; a = new Al umno( J ul i a) ; b = c; c = nul l ;
Qu alumnos son accesibles mediante las referencias del programa al finalizar el fragmento de cdigo?:
a) Julia b) Mara y Julia c) Elena, Julia y Mara d) Ninguna de las respuestas anteriores es correcta
16. Sean a y b dos nmeros reales*, el par (a, b) se llama nmero complejo si la igualdad, la adicin y la multiplicacin de pares se definen del modo siguiente:
a) Igualdad: , , a b c d a c b d b)Suma: , , , a b c d a c b d c) Producto: , , , a b c d ac bd ad bc
El nmero complejo (a, b) puede expresarse en la forma a+bi. Tambin se puede definir la operacin multiplicacin de un nmero complejo por un entero de la siguiente forma: Multiplicacin por un entero: ( , ) ( , ) a b a b Con esta definicin cree una clase nmero complejo.
Para ello: a) Dibuje el diagrama UML de dicha clase indicando todos sus miembros. b) Implemente el cdigo de la clase en Java.
Nota: Por simplicidad considere a y b como enteros.
17. Construya un programa que muestre por pantalla el resultado de la suma y el producto de dos nmeros complejos usando la clase complejo implementada en el ejercicio anterior. Adems, el programa deber comprobar si dos nmeros complejos dados son iguales y tambin deber multiplicar un nmero complejo por un entero. El programa debe mostrar por pantalla el nmero complejo (en la forma x+yi) resultante de la suma y el producto de dos nmeros complejos dados, as como el resultante de la multiplicacin de un nmero complejo por un entero. Adems, el programa deber imprimir un mensaje indicando si los dos nmeros complejos son iguales o no.
Fundamentos de Programacin II
Ejercicios Tema 1 Pgina 6
18. Qu imprime el siguiente programa?
cl ass Pr i nci pal {
publ i c st at i c voi d mai n( St r i ng[ ] ar gs) { Aut or aut or =new Aut or ( " Paul " , " Aust er " ) ; Li br o l i br o= new Li br o ( " La t r i l og a de Nueva Yor k" , aut or ) ; Syst em. out . pr i nt l n ( l i br o. get Ti t ul o( ) +" de " + ( l i br o. get Aut or ( ) ) . t oSt r i ng( ) ) ; } }
cl ass Li br o { pr i vat e St r i ng t i t ul o; pr i vat e Aut or aut or ;
publ i c Li br o( St r i ng t i t ul o, Aut or aut or ) { t hi s. t i t ul o = t i t ul o; t hi s. aut or = aut or ; }
publ i c Aut or get Aut or ( ) { r et ur n aut or ; }
publ i c St r i ng get Ti t ul o( ) { r et ur n t i t ul o; } }
cl ass Aut or {
pr i vat e St r i ng nombr e; pr i vat e St r i ng apel l i do;
publ i c Aut or ( St r i ng nombr e, St r i ng apel l i do) { t hi s. nombr e = nombr e; t hi s. apel l i do=apel l i do; }
publ i c St r i ng t oSt r i ng ( ) { r et ur n nombr e+ " " +apel l i do; } }
19. Entre dos clases existe la siguiente relacin de dependencia:
Peaje Cami n
Escriba el cdigo de ambas clases sabiendo que la clase camin se caracteriza por el nmero de ejes del camin y el nmero de toneladas que carga. La clase peaje debe calcular lo que debe pagar un camin (3 euros por eje y 10 euros por tonelada). Sus variables de ejemplar son nmero de camiones que han pasado por el peaje y dinero cobrado, que deben ser devueltas para su posterior consulta e impresin. Fundamentos de Programacin II
Ejercicios Tema 1 Pgina 7
20. Qu imprime el siguiente programa?
cl ass Al umno { St r i ng nombr e = " Al umno 1" ; char gr upo =' A' ;
char devol ver gr upo( ) { r et ur n gr upo; }
voi d cambi ar gr upo( char nuevogr upo) { gr upo = nuevogr upo; }
voi d i mpr i mi r ( ) { Syst em. out . pr i nt l n( " Nombr e: " + nombr e) ; Syst em. out . pr i nt l n( " Gr upo: " + devol ver gr upo( ) ) ; } }
cl ass Pr i nci pal { publ i c st at i c voi d mai n ( St r i ng[ ] ar gs) { Al umno a1 = new Al umno( ) ; Syst em. out . pr i nt l n( " Obj et o a1: \ n- - - - - - - - - - - \ n" ) ; a1. i mpr i mi r ( ) ; Syst em. out . pr i nt l n( " \ nLl amada al met odo pr ueba1( a1) . \ n" ) ; pr ueba1( a1) ; a1. i mpr i mi r ( ) ; Syst em. out . pr i nt l n( " " ) ; Al umno a2 = new Al umno( ) ; Syst em. out . pr i nt l n( " \ nObj et o a2: \ n- - - - - - - - - - - \ n" ) ; a2. i mpr i mi r ( ) ; Syst em. out . pr i nt l n( " \ nLl amada al met odo pr ueba2( a2) . \ n" ) ; pr ueba2( a2) ; Syst em. out . pr i nt l n( " \ nEn mai n: Fuer a ya del met odo pr ueba2. \ n" ) ; a2. i mpr i mi r ( ) ; } st at i c voi d pr ueba1( Al umno b) { b. cambi ar gr upo( ' B' ) ; }
st at i c voi d pr ueba2( Al umno b) { b = new Al umno( ) ; b. cambi ar gr upo( ' B' ) ; Syst em. out . pr i nt l n( " \ nDent r o del met odo pr ueba2. \ n" ) ; b. i mpr i mi r ( ) ; } }
Fundamentos de Programacin II
Ejercicios Tema 1 Pgina 8
21. En una tienda cada factura se representa por su nmero y una serie de productos. Cada producto se caracteriza por su cdigo alfanumrico y su precio. Se pide: a) Dibujar el diagrama de clases indicando las relaciones entre las mismas y los miembros que hay en cada una. Debe incluir mtodos para la consulta del nmero de factura y el/los productos de la factura y mtodos para actualizacin de los datos del/los productos. b) Implemente en Java dichas clases c) Implemente un programa principal donde se imprima una factura con los siguientes productos: (cdigo: C1, precio: 24 euros), (cdigo: H23, precio: 234 euros) y (cdigo: M30, precio: 109 euros). A continuacin debe cambiarse el segundo producto de la factura por el siguiente (cdigo: K123, precio:247 euros) y volver a imprimir la factura
22. Un avin se caracteriza por un nmero de identificacin y su tripulacin. La tripulacin est formada por 4 personas, caracterizada cada una por su puesto y el nmero de das que libra a la semana. Se pide:
a) Dibujar el diagrama de clases indicando las relaciones entre las mismas y los miembros que hay en cada una. Debe incluir mtodos para: i. la consulta del nmero de identificacin del avin ii. la consulta y actualizacin de los datos de los miembros de la tripulacin. b) Implemente en Java dichas clases c) Implemente un programa principal donde se impriman los datos del avin incluidos los datos de los 4 miembros de la tripulacin. Utilice el siguiente ejemplo: a. ID_avion: 234 b. Datos de los miembros de la tripulacin: i. piloto, das libres: 4 ii. copiloto, das libres: 3 iii. sobrecargo, das libres: 2 iv. azafato, das libres: 2
A continuacin debe cambiarse el nmero de das libres del piloto por 3 y volver a imprimir los datos actualizados de la tripulacin. No realizar lecturas por teclado, inicializar los datos dentro del mtodo main. Nota: Se han considerado el mnimo nmero de atributos para no aumentar la complejidad del ejercicio
23. Se pretende informatizar la informacin de un campeonato juvenil de tenis. La informacin que nos interesa sobre el campeonato es: parejas que van a competir (pueden competir un nmero elevado de parejas), ciudad donde se celebrar la competicin y calle. Cada pareja debe estar formada por 2 personas. Sobre cada pareja debemos controlar el identificador de la pareja, a qu ciudad representan y adems se debe comprobar con un mtodo si la pareja es vlida o no. Una pareja se considera vlida si la edad de cada persona est comprendida entre 18 y 25 aos, ambos inclusive. Las personas quedan caracterizadas por su nombre y edad y debe ser posible consultar ambos atributos. Por tanto, habr una clase persona con dichos atributos y mtodos de consulta. Se pide:
a) Dibujar en UML el diagrama de clases indicando las relaciones entre las mismas y los miembros que hay en cada una. Debe incluir mtodos para la consulta de todos los atributos de ejemplar, y todos los mtodos que sean necesarios para la resolucin del ejercicio. b) Implementar en Java dichas clases. c) Implementar un programa principal donde se introduzca la informacin de dos parejas que van a competir, sabiendo que el campeonato se celebrar en Ciudad Real en la calle Paseo de la Universidad. Como informacin de salida se debe mostrar toda la informacin relativa al juego: donde se celebra, parejas inscritas (suponer dos), e informacin personal de cada miembro de la pareja. Adems, se debe comprobar si las dos parejas involucradas son vlidas.
Fundamentos de Programacin II
Ejercicios Tema 1 Pgina 9
24. Escriba un programa que use una lista enlazada para gestionar una serie de libros identificados por su ttulo. El programa debe ser capaz de ir aadiendo libros a la serie mantenida y de poder imprimir los ttulos de toda la serie cuando se le indique. Como ejemplo use los siguientes libros: Niebla , La Metamorfosis y El callejn de los milagros
25. Qu imprime el siguiente programa?
cl ass Col or es { publ i c st at i c voi d mai n( St r i ng [ ] ar gs) { Li st a col or es =new Li st a( ) ; col or es. i ncl ui r ( r oj o) ; col or es. i ncl ui r ( azul ) ; col or es. i ncl ui r ( ver de) ; col or es. i mpr i mi r ( ) ; } } / / Fi n cl ase pr i nci pal
cl ass Nodo { pr i vat e St r i ng col or ; pr i vat e Nodo si gui ent e; publ i c Nodo( St r i ng col or ) { t hi s. col or =col or ; } publ i c voi d poner ( Nodo si gui ent e_nodo) { si gui ent e=si gui ent e_nodo; } publ i c Nodo coger ( ) { r et ur n si gui ent e; } publ i c St r i ng col or ( ) { r et ur n col or ; } } / / Fi n cl ase Nodo
cl ass Li st a { pr i vat e Nodo pr i mer o; publ i c Li st a( ) { pr i mer o=nul l ; } publ i c voi d i mpr i mi r ( ) { f or ( Nodo aux=pr i mer o; aux. coger ( ) ! = nul l ; aux = aux. coger ( ) ) { Syst em. out . pr i nt ( aux. col or ( ) + ) ; } } publ i c voi d i ncl ui r ( St r i ng cadena) { Nodo el ement o = new Nodo( cadena) ; i f ( pr i mer o==nul l ) { pr i mer o=el ement o; } el se { Nodo aux; f or ( aux=pr i mer o; aux. coger ( ) ! = nul l ; aux=aux. coger ( ) ) ; aux. poner ( el ement o) ; } } } / / Fi n cl ase Li st a
a) rojo azul verde b) null c) rojo azul d) azul verde Fundamentos de Programacin II
Ejercicios Tema 1 Pgina 10
26. Qu imprime el siguiente programa?
cl ass Pr emi os { publ i c st at i c voi d mai n( St r i ng [ ] ar gs) { Engi neer s pr emi os_Tur i ng =new Engi neer s( ) ; pr emi os_Tur i ng. i nser t ar ( " Fr ances Al l en" ) ; pr emi os_Tur i ng. i nser t ar ( " Edsger Di j kst r a" ) ; pr emi os_Tur i ng. i nser t ar ( " Denni s M. Ri t chi e" ) ; pr emi os_Tur i ng. pr i nt ( ) ; } } / / Fi n cl ase pr i nci pal
cl ass Nodo { pr i vat e St r i ng engi neer ; pr i vat e Nodo si gui ent e; publ i c Nodo( St r i ng eng) { engi neer =eng; } publ i c voi d poner ( Nodo si gui ent e_nodo) { si gui ent e=si gui ent e_nodo; } publ i c Nodo r ecuper ar ( ) { r et ur n si gui ent e; } publ i c St r i ng get _engi neer ( ) { r et ur n engi neer ; } } / / Fi n cl ase Nodo
cl ass Engi neer s { pr i vat e Nodo i ni ci al ; publ i c Engi neer s( ) { i ni ci al =nul l ; } publ i c voi d pr i nt ( ) { f or ( Nodo a=i ni ci al ; a! = nul l ; a = a. r ecuper ar ( ) ) { Syst em. out . pr i nt ( a. get _engi neer ( ) + " " ) ; } } publ i c voi d i nser t ar ( St r i ng cadena) { Nodo uni dad = new Nodo( cadena) ; i f ( i ni ci al ==nul l ) { i ni ci al =uni dad; } el se { Nodo b; f or ( b=i ni ci al ; b. r ecuper ar ( ) ! = nul l ; b=b. r ecuper ar ( ) ) ; b. poner ( uni dad) ; } } } / / Fi n cl ase Engi neer s
a) Frances Allen Edsger Dijkstra Dennis M. Ritchie b) Frances Allen Edsger Dijkstra c) Frances Allen d) null