lunes, 28 de abril de 2014

Ejercicios de Esquemas XML

1. Escribir un XML Schema para el siguiente documento XML, e incluir los cambios necesarios en el mismo para referenciar al esquema creado. Se sabe que todos los elementos hijos del elemento “nota” son obligatorios y deben aparecer sólo una vez. 

<?xml version="1.0" encoding="ISO-8859-1"?> 
<nota> 
<para>Pedro</para> <de>Laura</de> <titulo>Recordatorio</titulo> <contenido>A las 7:00 pm en la puerta del teatro</contenido> 
</nota> 



2. Escribir un XML Schema para el siguiente documento XML, e incluir los cambios necesarios en el mismo para referenciar al esquema creado. Se debe cumplir también lo siguiente: 
  • Los elementos “vehículo”, “nombre” y “modificacion” deben aparecer mínimo una vez, y el máximo no está limitado. El resto de los elementos deben aparecer 1 vez. 
  • Todos los elementos que aparecen en el documento instancia de abajo son obligatorios y deben aparecer siempre en el mismo orden. 
  • Los elementos que contienen información de fecha son todos de tipo cadena. 

<?xml version="1.0" encoding="ISO-8859-1"?> 
<vehiculos> 
<vehiculo> 
<nombre>Count Zero</nombre> 
<modelo>Series I, 80"</modelo> 
<fabricacion> 
<inicio> 
<dia>21</dia> 
<mes>July</mes> 
<anyo>1949</anyo> 
</inicio> 
<fin> 
<dia>9</dia> 
<mes>August</mes> 
<anyo>1949</anyo> 
</fin> 
</fabricacion> 
<modificaciones> 
<modificacion>Change Engine</modificacion> 
<modificacion>Change pedals</modificacion> 
<modificacion>Change gearbox</modificacion> 
<modificacion>Fit Rollcage</modificacion> 
</modificaciones> 
</vehiculo> 
</vehiculos>



3. Escribir un XML Schema para el siguiente documento XML, e incluir los cambios necesarios en el mismo para referenciar al esquema creado. Se debe cumplir también lo siguiente: 
  • Todos los elementos que aparecen en el documento instancia de abajo son obligatorios y deben aparecer siempre en el mismo orden. 
  • Se deben definir dos tipos de datos, “tipoPersona” (los elementos “persona” son de este tipo) “info” (los elementos “datos” son de este tipo). 
  • El atributo “nacimiento” es de tipo “date”. 
  • El elemento “comentario” no es obligatorio; si aparece lo hace sólo 1 vez. 

<?xml version="1.0" encoding="ISO-8859-1"?> 
<persona nacimiento="1999-10-20"> 
<datos> 
<nombre>Pepe</nombre> 
<apellidos>Garcia</apellidos> 
<dni>25390952</dni> 
</datos> <comentario>buena gente...</comentario> 
</persona> 


4. Escribir un XML Schema para el siguiente documento XML, e incluir los cambios necesarios en el mismo para referenciar al esquema creado. 

<?xml version="1.0" 
encoding="ISO-8859-1"?> 
<!DOCTYPE matricula SYSTEM "matricula.dtd"> 
<matricula> 
<personal> 
<dni>99223366M</dni> 
<nombre>Juan Pardo Martín</nombre> 
<titulacion>Ingeniería Informática</titulacion> 
<curso_academico>1997/1998</curso_academico> 
<domicilios> 
<domicilio tipo="familiar"> 
<nombre>C/ Principal nº1</nombre> 
</domicilio> <domicilio tipo="habitual"> 
<nombre>C/ Secundaria nº2</nombre> 
</domicilio> 
</domicilios> 
</personal> <pago>
<tipo_matricula>Matrícula Ordinaria</tipo_matricula>
</pago>
</matricula>

Ejercicios Listas

Ejercicio 1

Crear una lista de números decimales, la cantidad de elementos de la lista DEBE ser un número aleatorio dentro del intervalo [5; 10].
Los valores que se agregan a la lista DEBEN ser números decimales dentro del intervalo [45.0; 90.0]
Se pide una aplicación en Java que permita cumplir con los siguientes requerimientos
  • Imprimir la lista de números generados
  • Imprimir el promedio de los valores que fueron incorporados
  • Imprimir el número mayor que forma parte de la lista
  • Imprimir la diferencia entre el segundo número más grande y el segundo más pequeño

Ejercicio 2

Crear una lista de números enteros, la cantidad de elementos de la lista
DEBE ser un numero aleatorio dentro del intervalo [10; 20].
Los valores que se agregan a la lista DEBEN ser números enteros dentro del intervalo [10; 100]
Se pide una aplicación en Java que permita cumplir con los siguientes requerimientos:
  • Imprimir la lista de números generados
  • Imprimir  la suma de los números PARES que fueron generados
  • Imprimir la cantidad de números impares que fueron generados.

jueves, 24 de abril de 2014

Ejercicio para entregar. Excepciones

Un banco contiene las Cuentas de sus clientes. Las CuentasDeAhorro no pueden tener números rojos. Las CuentasCorrientes pueden tener una CuentaDeAhorro asociada, de forma que si se intenta retirar más dinero del saldo actual, se debe retirar el dinero que falte de la CuentaDeAhorro asociada. 
1) Define Cuenta de forma que no pueda instanciarse. De toda Cuenta se debe poder ingresar y  retirar dinero,  preguntar por el saldo, por el DNI del titular y debe tener un método toString de devuelva al menos el saldo y el DNI del titular. 
2) Implementa las clases CuentaCorriente y CuentaDeAhorro. 
3) Crea una especialización CuentaDeAhorroEsp de CuentaDeAhorro en la que se añade un entero penalización, de forma que se penaliza la retirada con un penalización % del dinero retirado. Sobrescribe sólo los métodos necesarios (incluyendo constructor y toString ). 
4) Si el saldo de CuentaDeAhorro fuese a quedar negativo, antes se debe lanzar una excepción SaldoNegativo (que hereda de Exception).
5) Implementa la clase Banco que contiene un array polimórfico de Cuentas, incluyendo el constructor que consideres más apropiado. 
6) Incluye el método totalSaldoMaxPenalización en la clase Banco que devuelva la suma de los saldos de todas las cuentas corrientes y la máxima penalización entre las CuentaDeAhorroEsp . Crea una clase con método main en la que instanciamos un Banco de 100 Cuentas, nos creamos una CuentaCorriente con 500 euros y  una cuenta de ahorrro especial con una penalización del 5%. Finalmente debe mostrar información de todas las Cuentas del Banco. En un bloque try & catch retirar dinero de una cuenta de Ahorro.

miércoles, 23 de abril de 2014

Ejercicios Excepciones

1. Implementar el siguiente ejemplo:

  • Probar la gestión de excepciones con diferentes parámetros
  • Quitar los manejadores de excepciones y comparar el funcionamiento
  • Consultar el JavaDoc de las clases NumberFormatException y ArithmeticException.
2. Implementar el siguiente ejemplo:



  • En el constructor de la clase SumaSucesiones comprobar que las dos sucesiones tienen el mismo número de elementos
  • Crear un código de prueba que capture la excepción IllegalArgumentException
3. Ejercicio 3
  • Crear una clase NumerosPescaderia que permita controlar un contador de numeros de una pescadería.
  • En el constructor se debe indicar un número máximo de números a distribuir
  • Debe tener un método getNumero() que devuelva "la vez" o eleve una excepción en caso de haber alcanzado el límite máximo
  • Hay que crear una clase para la excepción NoMoreNumbersException

lunes, 7 de abril de 2014

4. Lenguajes de Marcas. XML

Ejercicios XML



  1. Identificar entre los siguientes ejemplos cuáles son Nombres XML correctos y cuáles no. En el caso de los no válidos especificar por qué no lo son.
      • <Número_Seguridad_Social>50-12345678</Número_Seguridad_Social>
      • <O'Donnell>General<O'Donnell>
      • <día/mes/año></día/mes/año>
      • <primerApellido>Rodríguez</primerApellido>
      • <_cuenta_Tweeter>@follower</_cuenta_Tweeter>
      • fecha nacimiento>2011-02-02 </fecha nacimiento>
  2. Indica a qué espacio de nombre pertenece el elemento <info:venta> del siguiente documento XML y justifica la respuesta.

      • a) A empresa:espacios:info
      • b) A empresa:espacios:prod
      • c) A empresa:espacios:info y empresa:espacios:prod
      • d) A ningún espacio de nombres

  3. Buscar un documento XML que contenga:
      • Instrucciones de procesamiento
      • Inclusión de un DTD externo
      • Comentarios
      • Definición de espacios de nombres
    • Identificar cada uno de ellos
    • Identificar el elemento raíz
    • Indicar el ámbito de uso de los espacios de nombres declarados 

  4. Identifica cuáles de los siguientes documentos están bien formados y cuáles no. Cuando no lo estén, explica los motivos. Para comprobar el resultado se puede usar un editor XML, como por ejemplo, el XML Copy Editor, para que valide por nosotros los documentos.


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<documento>Texto de prueba</documento>

<?xml ?>
<documento>Texto de prueba</documento>

<?xml version="1.0"?>
<DOCUMENTO/>

<?xml version="1.0"?>
<Documento codigo="135">
    <nombre>Artículo</nombre>
    <amplitud>Media</amplitud>
</Documento>

<?xml version="1.0"?>
<El documento>
    <nombre>Artículo</nombre>
    <amplitud>Media</amplitud>
</El documento>


5. Se quiere que el elemento <grupoSanguineo> tenga como único elemento descendiente a uno solo de los cuatro siguientes A, B, AB ó O. Indica cuál de las siguientes es una declaración correcta del citado elemento:

  • <!ELEMENT grupoSanguineo (A ? B ? AB ? O) >
  • <!ELEMENT grupoSanguineo (A , B , AB , O) >
  • <!ELEMENT grupoSanguineo (A | B | AB | O) >
  • <!ELEMENT grupoSanguineo (A + B + AB + O) >
6. ¿Cuál de las siguientes afirmaciones es correcta respecto a la declaración del elemento?

a) <!ELEMENT contenido (alfa | beta*) >
Tanto el elemento alfa como el elemento beta pueden aparecer 0 o más veces como descendientes del elemento contenido.
b) <!ELEMENT contenido (alfa , beta) >
Tanto el elemento alfa como el elemento beta pueden aparecer una vez como descendientes del elemento contenido, sea cual sea su orden.

c) <!ELEMENT contenido (alfa | beta) >
El elemento alfa y el elemento beta deben aparecer una vez cada uno como descendientes del elemento contenido.
d) <!ELEMENT contenido (alfa , beta*) >
El elemento alfa debe aparecer una vez y a continuación el elemento beta debe aparecer 0 o más veces, ambos como descendientes del elemento contenido.

viernes, 4 de abril de 2014

Programación. UT 8. Clases Abstractas e Interfaces. Ejercicios.

Ejercicio 1

  • Crear la interfaz PuedeCantar (que es capaz de cantar), un interfaz muy simple que sólo posee un método cantar. 
  • Crear la clase Persona que implemente el interfaz PuedeCantar y que cuando cante lo haga con las notas musicales (muestre un string con las notas musicales). 
  • Crear la clase Canario y Gallo que implemente el interfaz PuedeCantar y que muestre como cantan (que muestre un string con los sonidos que hacen el canario y el gallo respectivamente)
  • Realice el programa que haga cantar a un canario y un tenor. 


Ejercicio 2: Implementar las clases e interfaces que se describen a continuación:

  • Algunos seres pueden caminar y puede nadar estas dos capacidades son interfaces (PuedeCaminar.java y PuedeNadar.java). 
  • Los mamiferos son animales que pueden moverse (Mamifero.java). El gato es un mamifero que puede nadar y moverse (Gato.java). 
  • Un Loro puede caminar pero no puede nadar. 
  • Agregue al ejercicio anterior la interface PuedeVolar.java 
  • Agregue la superclase Aves.java 
  • Herede la clase Avestruz.java (ave que solo camina) 
  • Herede la clase Loro.java (ave que camina y vuela) 
  • Herede la clase Murciélago.java (es un mamífero que vuela y camina) 
  • Cree la clase Felino.java (es un mamifero que camina y puede nadar). 
  • Modifique la clase Gato.java (es un Felino) 
  • Cree la clase Tigre.java
Ejercicio 3

Implementar una clase abstracta llamada Figura que contenga como atributo color y como métodos setColor, getColor, getArea y getPerimetro.
A continuación implementar las subclases de Figura Cuadrado, Rectangulo y Circulo.
Realizar un programa que muestre un menú con tres opciones (Cuadrado, Rectángulo y Círculo). 
  • Al seleccionar el cuadrado se le pedirá al usuario la longitud del lado y mostrará el área y el perímetro. 
  • Al seleccionar el rectángulo se le pedirá al usuario la base y la altura y mostrará el área y el perímetro. 
  • Al seleccionar el círculo se le pedirá al usuario la longitud del radio y mostrará el área y el perímetro.
Responder a las siguientes preguntas:
  • ¿Por qué se ha decidido declarar la clase Figura como abstracta en lugar de declarar una interfaz?
  • ¿Cuál es la diferencia entre clase abstracta e interfaz?
  • ¿Qué cambios harías para convertir la clase figura en interfaz?
Ejercicio 4: Inmobiliaria
Se quiere modelar una agencia inmobiliaria para lo cual se deben tener en cuenta las siguientes entidades e informaciones asociadas: 
  • Un inmueble viene dado por su ubicación y los metros cuadrados que ocupa. Hay dos tipos de inmuebles: superficies y construcciones. Los primeros tienen su precio por metro cuadrado. A su vez, hay dos tipos de superficies: solares y plazas de garaje. Los solares pueden estar en zona rústica o urbana. Las plazas de garaje pueden formar parte de un garaje público o de uno privado. Por su parte, las construcciones pueden ser nuevas o de segunda mano. Hay dos tipos de construcciones: viviendas y locales comerciales. Las viviendas tienen precio, número de habitaciones y piso. Los locales tienen precio por metro cuadrado. 
  •  La agencia que queremos modelar se dedica a la venta y alquiler de inmuebles. Ahora bien, solamente alquila plazas de garaje y locales comerciales, mientras que solo vende solares y viviendas.
  • La agencia inmobiliaria viene dada por sendas secuencias de alquileres y ventas.
Se pide:
  •  Definir la jerarquía de clases de forma que se cumplan los requisitos anteriores. 
  • Para cada una de las clases, definir su(s) constructora(s), métodos de acceso a cada uno de los atributos y un método muestra() que escriba, de la manera que consideres más conveniente, la información de la entidad de que se trate. 
  • Definir un método público precio() que calcula el precio que tiene una superficie.
  •  Definir un método añadeVentaInmueble(in) , que añade el inmueble dado por el parámetro a la secuencia de inmuebles en venta de la agencia, siempre que no estuviera ya antes en venta.
  • Definir un método añadeAlquilerInmueble(in) , que añade el inmueble dado por el parámetro a la secuencia de inmuebles en alquiler de la agencia, siempre que no estuviera ya antes en alquiler.
  • Definir métodos que respondan a los siguientes servicios: 
    • inmueblesVenta(p) , que muestra los inmuebles con un precio de venta inferior al parámetro. 
    • localesSegundaMano(m) , que muestra los locales comerciales de segunda mano con una superficie superior al parámetro. 
    • solaresRusticos() , que averigua cuántos solares no urbanos están en venta.
  • Define el método equals() y toString() para las clases AgenciaInmobiliaria, Inmueble, Superficie y Solar .
  •  Dos agencias inmobiliarias han decidido fusionarse. Define un método fusion(ag) dentro de la clase de las agencias inmobiliarias, que permita crear una agencia nueva a partir de la agencia que invoca el método y la del parámetro dado.