apuntes:objetos
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
apuntes:objetos [2023/06/04 11:44] – [Ejercicios] Santiago Faci | apuntes:objetos [2023/06/04 21:03] (current) – [Ejercicios] Santiago Faci | ||
---|---|---|---|
Line 688: | Line 688: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | === Limitaciones y características de la herencia en java === | ||
En cualquier caso, existen una serie de limitaciones o características a tener en cuenta en cuanto al uso de la herencia en Java: | En cualquier caso, existen una serie de limitaciones o características a tener en cuenta en cuanto al uso de la herencia en Java: | ||
- | * Una clase sólo puede heredar de una clase | + | * Para heredar de una clase se utiliza la palabra reservada '' |
- | * No hay límite en el número de clases que pueden | + | * La clase que hereda se conoce como clase heredada o clase hija. La clase de la que se hereda se conoce como clase base o clase padre. |
+ | * Cuando una clase A hereda de una clase B, la clase A adquiere todos los atributos y comportamiento (atributos y métodos) de la clase B (aunque quizás no pueda acceder a algunos de ellos por los modificadores de accesibilidad) | ||
+ | * En Java, sólo se puede heredar de una clase (sin contar la clase '' | ||
+ | * No hay límite en cuanto al número de clases que pueden | ||
+ | * No hay límite en cuanto al nivel de profundidad en el árbol de herencias entre clases | ||
* No se puede heredar de una clase si ésta ha sido definida como '' | * No se puede heredar de una clase si ésta ha sido definida como '' | ||
- | * Cuando | + | * Cuando |
+ | * Cuando una clase hereda de otra está obligada a implementar constructores apropiados para invocar a los de la clase base | ||
===== super ===== | ===== super ===== | ||
Line 701: | Line 707: | ||
También puede emplearse para sobrescribir cualquier método en una clase derivada o bien para utilizar el valor de cualquier atributo que haya sido declarado en la clase base. | También puede emplearse para sobrescribir cualquier método en una clase derivada o bien para utilizar el valor de cualquier atributo que haya sido declarado en la clase base. | ||
+ | |||
===== Clases abstractas ===== | ===== Clases abstractas ===== | ||
Line 915: | Line 922: | ||
// Si hay que acceder a atributos/ | // Si hay que acceder a atributos/ | ||
- | if (vehiculoMotor instanceof Moto) { | + | if (vehiculoMotor instanceof Moto moto) { |
- | Moto moto = (Moto) vehiculoMotor; | + | |
// Se puede acceder a la implementación específica del objeto | // Se puede acceder a la implementación específica del objeto | ||
+ | moto . . . | ||
} | } | ||
- | else if (vehiculoMotor instanceof Lancha) { | + | else if (vehiculoMotor instanceof Lancha |
- | Lancha lancha = (Lancha) vehiculoMotor; | + | |
// Se puede acceder a la implementación específica del objeto | // Se puede acceder a la implementación específica del objeto | ||
+ | lancha . . . | ||
} | } | ||
. . . | . . . | ||
Line 1013: | Line 1020: | ||
====== Ejercicios ====== | ====== Ejercicios ====== | ||
- | | + | {{ ejercicio.png}} |
+ | |||
+ | | ||
- Saldo | - Saldo | ||
- Número de cuenta | - Número de cuenta | ||
Line 1025: | Line 1034: | ||
- Añade una clase principal desde la que puedas crear objetos y mostrar la información de los mismos. | - Añade una clase principal desde la que puedas crear objetos y mostrar la información de los mismos. | ||
- Invoca también a alguno de los métodos que realizan cambios sobre el estado del objeto para visualizar dichos cambios. | - Invoca también a alguno de los métodos que realizan cambios sobre el estado del objeto para visualizar dichos cambios. | ||
- | - Implementa una clase Java que permita definir la estructura para un eletrodoméstico. Elige hasta 5 atributos de diferentes tipos e implementa los atributos, al menos un constructor, | + | - Implementa una clase Java que permita definir la estructura para un **eletrodoméstico**. Elige hasta 5 atributos de diferentes tipos e implementa los atributos, al menos un constructor, |
- | - Implementa una clase CuentaBancaria para definir una clase que será usada para la nueva web de una entidad bancaria. | + | - Implementa una clase **CuentaBancaria** para definir una clase que será usada para la nueva web de una entidad bancaria. |
- Tendrá que tener los siguientes atributos: Número de cuenta, titular, saldo, interes. | - Tendrá que tener los siguientes atributos: Número de cuenta, titular, saldo, interes. | ||
- El número de cuenta no se podrá modificar | - El número de cuenta no se podrá modificar | ||
- Debe ser posible realizar las operaciones de ingresar, retirar dinero y otra operación para calcular los intereses generados en un mes determinado | - Debe ser posible realizar las operaciones de ingresar, retirar dinero y otra operación para calcular los intereses generados en un mes determinado | ||
- | - Implementa una clase Trabajador para definir a los trabajadores de una nueva aplicación que quiere desarrollar una empresa para gestionar a su plantilla: | + | - Implementa una clase **Trabajador** para definir a los trabajadores de una nueva aplicación que quiere desarrollar una empresa para gestionar a su plantilla: |
- De cada trabajador se almacenará el nombre, apellidos, dni, email, fecha de nacimiento, salario | - De cada trabajador se almacenará el nombre, apellidos, dni, email, fecha de nacimiento, salario | ||
- Se tiene que poder crear un trabajador inicializando todos los atributos y también indicando sólo nombre y apellidos, ya que habitualmente habrá quién visite la empresa días determinados y necesite una acreditación temporal | - Se tiene que poder crear un trabajador inicializando todos los atributos y también indicando sólo nombre y apellidos, ya que habitualmente habrá quién visite la empresa días determinados y necesite una acreditación temporal | ||
- Hay que tener en cuenta que nombre, apellidos y dni nunca se podrán modificar | - Hay que tener en cuenta que nombre, apellidos y dni nunca se podrán modificar | ||
- Realizar las operaciones necesarias para poder incrementar el salario de un trabajador incrementándolo en una cantidad determinada y también indicando el tanto por ciento de subida que se le aplicará | - Realizar las operaciones necesarias para poder incrementar el salario de un trabajador incrementándolo en una cantidad determinada y también indicando el tanto por ciento de subida que se le aplicará | ||
+ | - Se quieren diseñar ahora las clases para un videojuego de estrategia al estilo **Civilization**. En él los usuarios podrán crear sus propios personajes y construir una ciudad que irá evolucionando para ganar a las de los demás jugadores. De cada jugador se quiere almacenar su nick, nombre, apellidos, email y tiempo de juego (en segundos). De cada personaje se quiere almacenar su nombre, la época a la que pertenece, el nivel y el dinero conseguido hasta el momento. Hay queUna operación que permita añadir kilometros al coche tener en cuenta que cada usuario puede tener un personaje y debe quedar registrado cuál es. Como cada personaje puede crear una ciudad (y debe quedar asi registrado) se guardará, de cada una, el nombre, el nivel, número de habitantes y el tipo de ciudad (aldea, pueblo o ciudad). | ||
+ | - Se espera que los **jugadores** puedan realizar las siguientes operaciones: | ||
+ | - Una operación para añadir tiempo de juego (Se ejecutará cada vez que termine una partida para incrementar el tiempo empleado) | ||
+ | - De los **personajes** se espera que puedan realizar las siguientes operacones: | ||
+ | - Una operación que permita crear una ciudad indicando el nombre de ésta. El nivel y número de habitantes inicial será 0, y el tipo de ciudad será aldea. La ciudad deberá de quedar vinculada al personaje. | ||
+ | - Para las **ciudades** se necesitarán las siguientes operaciones | ||
+ | - Una operación que permita incrementar el nivel de la ciudad. En esta operación habrá que tener en cuenta que cuando el nivel supere el valor 10 la | ||
+ | - Para **todos los casos**, implementar las clases, atributos, constructores necesarios y las operaciones solicitadas | ||
+ | - El propietario de un **taller** te ha encargado que desarrolles una aplicación para la gestión de su trabajo. Te encuentras en el paso en que debes diseñar e implementar las clases necesarias para desarrollar dicha aplicación. En el taller arreglan Coches y Motos y trabajan varios mecánicos. De los coches quieren almacenar el número de bastidor, la matrı́cula, | ||
+ | - En cuanto a las operaciones de los **coches**, se esperan las siguientes: | ||
+ | - Una operación que permita añadir kilometros al coche | ||
+ | - Una operación para pintar el coche de otro color | ||
+ | - De las **motos** se necesitarán estas operaciones: | ||
+ | - Una operación para eliminar el carenado de la moto (hay que tener en cuenta que el peso disminuirá en 2 kg) | ||
+ | - Una operación para pintar la moto de otro color | ||
+ | - Para el caso de los **mecánicos**, | ||
+ | - Una operación que permita reparar cualquier vehı́culo, | ||
+ | - Una operación que permita marcar que un vehı́culo entra al taller, marcándolo como sin reparar, para que quede constancia que hay que trabajar en él | ||
+ | - De alguna forma tendremos que poder asignar un vehı́culo al mecánico, de forma que cuando éste lo repare deje de estarlo | ||
+ | - Implementar las clases necesarias con sus atributos, los constructores, | ||
+ | - Ahora te piden diseñar el sistema de clases para una **biblioteca**. Sólo se necesita almacenar la información relativa a **Socios**, **Libros** y **CDs de música**. | ||
+ | - Puede haber varios **tipos de libros (novelas y tebeos) o cds**. De todos ellos se quiere almacenar el isbn, titulo, autor y el año de edición. Es posible que en el momento de dar de alta cualquier elemento no se disponga de la información del autor (habrá que tenerlo en cuenta). | ||
+ | - De las **novelas** además se guardará un resumen del argumento de unas 100 palabras y, en ocasiones, el número de páginas | ||
+ | - De los **cds de música** se querrá almacenar también el número de canciones y la discográfica que lo comercializó. | ||
+ | - De los **tebeos** se quiere guardar un resumen y el personaje principal. | ||
+ | - De los socios guardaremos el número de socio, nombre, apellidos y un email. No siempre se podrá disponer del email por lo que será un dato opcional. Además se quiere guardar en todo momento que libro ha pedido prestado cada usuario, teniendo en cuenta que sólo puede coger un libro al mismo tiempo. | ||
+ | - Hay que tener en cuenta que también existe un tipo especial de **socio (VIP)** que podrá alquilar libros durante más tiempo previo pago con tarjeta de crédito, por lo que guardaremos el número de la misma. | ||
+ | - Se te piden realizar lo siguiente: | ||
+ | - Implementar las clases necesarias para la aplicación | ||
+ | - Implementar los constructores que permitan trabajar con las clases de la forma que se indica | ||
+ | - Implementar operaciones para que los socios puedan alquilar y devolver. Habrá que controlar que no puedan alquilar nada si todavı́a no han devuelto lo que tenı́an alquilado. También hay que tener en cuenta que sólo permitimos el alquiler de cds de música si el socio ha facilitado su dirección de correo electrónico | ||
+ | - Te piden diseñar las clases que permitirán definir el modelo de datos para una aplicación que permita gestionar toda la información de **Parque Zoológico**. Hay que tener en cuenta que puede haber cualquier tipo de animal pero que todos, al fin y al cabo, necesitan los mismos cuidado y tienen el mismo comportamiento, | ||
+ | - En cuanto a los cuidados, tiene que ser posible: limpiarlos, darles de comer, cambiarlos de estancia y curar cualquier enfermedad que puedan tener | ||
+ | - En cuanto a su comportamiento, | ||
+ | - Debes diseñar, además, el modelo de clases pensando que en cualquier momento puede ser incorporado al Zoo animales de nuevas razas. Intenta definir dicho modelo permitiendo que sea fácil adaptable a esta nueva situación. | ||
+ | - Define: | ||
+ | - Una cuantas clases para una variedad de animales | ||
+ | - Constructores | ||
+ | - Gettes y Setters necesarios | ||
+ | - Una clase principal donde probar el funcionamiento de todo el modelo diseñado | ||
+ | - La cadena de **supermercados CodeAndCokeMarket** te ha contratado para que desarrolles la aplicación que necesitan para gestionar al personal, sus locales y las ventas. | ||
+ | - Hay que tener en cuenta que, en cada **local**, hay un **encargado**, | ||
+ | - En cuanto a los **locales**, | ||
+ | - En cuanto a los **clientes**, | ||
+ | - Sobre los **productos**, | ||
+ | - Define: | ||
+ | - Clases para definir todo el problema | ||
+ | - Constructores, | ||
+ | - Una clase principal donde probar el funcionamiento de todo el modelo diseñado | ||
---- | ---- | ||
(c) 2019-{{date> | (c) 2019-{{date> |
apuntes/objetos.1685879057.txt.gz · Last modified: 2023/06/04 11:44 by Santiago Faci