20 Jun
1)Explicar razonadamente qué es un diagrama de casos de uso, para qué sirven y qué elementos tiene.
Los diagramas de casos de uso sirven para recoger información sobre las acciones que llevará a cabo un sistema o aplicación. Se encargan de representar las acciones a realizar, las relaciones que existen entreellas y las relaciones entre los actores. No indican en qué orden se llevarán a cabo las acciones. Estos diagramas no son exclusivos de la POO. Los elementos que tienen estos diagramas son los actores, casos de uso y relaciones entre los dos anteriores.
2)Justifique razonadamente las diferencias entre una clase y un objeto.
Por un lado, un objeto es cualquier ente real o abstracto con una entidad única del que nos interesa su estado y comportamiento. El estado de un objeto se encuentra definido por el valor de ciertas variables que se llaman atributos. El comportamiento de un objeto viene definido por los métodos. Los métodos pueden conseguir el estado de un objeto, cambiar el estado de un objeto, responder a llamadas (o mensajes) que otros objetos o él mismo envían. Por otro lado, una clase es una abstracción de alto nivel. Se puede ver como un molde o plantilla frente al objeto, que es la instanciación concreta de la clase (también como un tipo frente al objeto que es la variable).
3)Dentro del tema de herencia entre distintas clases, explicar razonadamente cuándo el programador puede realizar conversiones explícitas de objetos y los posibles errores que pueden ocurrir.
La conversión explícita consiste en convertir una referencia a un objeto de una subclase. Esta conversión no es válida siempre. En este caso se pueden producir dos tipos de errores:
§ Error en tiempo de compilación cuando ni siquiera el objeto que se quiere convertir es una subclase
§ Error en tiempo de ejecución cuando se produce una excepción ClassCastException debida a que no se puede efectuar la conversión en tiempo de ejecución. La solución a este último error se soluciona comprobando la clase del objeto mediante el operador instanceof antes de realizar la conversión.
4)Dentro del tema de polimorfismo, define brevemente que es la clase estática y la clase dinámica de una referencia. Declara las clases, los métodos necesarios y da un ejemplo de un objeto cuya clase estática y dinámica no coincidan. En el mismo ejemplo, realiza una llamada correcta a un método de la clase dinámica y una llamada incorrecta a un método de su clase dinámica
La clase estática es la clase de una referencia en tiempo de compilación. Por lo tanto, la clase estática de la referencia es la clase con la que ha sido declarada. La clase dinámica de una referencia es la clase del objeto al que apunta.
5)¿Qué es una excepción? ¿Qué opciones tiene el programador cuando se produce? Justifique razonadamente su respuesta
Las excepciones son errores en tiempo de ejecución de una aplicación realizada en Java. El programador puede decidir capturarlas (catch) en el mismo método que causa dicha excepción y
programar el código necesario para recuperarse del error (p.e. lectura del fin de fichero habiendo realizado bien la lectura de todos los objetos del fichero). Para ello debe encerrar dentro de un bloque
try las instrucciones que pueden causar el error y seguidamente capturarlas con un bloque catch, que contendrá el código de respuesta a ese error.
También puede decidir no tratarla en ese método y lanzarla (throws) para que algún método de la pila de llamadas la capture y la trate. Para ello debe indicar en la cabecera del método dicha situación,
poniendo a continuación del nombre del método: throws ClaseExcepcion.
6)Explicar razonadamente dentro de los diagramas de clases qué es una relación de agregación y qué es una relación de composición. Dar un ejemplo textual escrito de ambas relaciones
La agregación es una relación débil entre clases. Esto implica que una clase posee o está compuesta por otra. Si la clase principal desaparece las demás pueden permanecer. La composición es una relación fuerte entre clases. Si la clase principal desaparece, el resto desaparecen. Ejemplos. Agregación: Relación entre la clase matrimonio y la clase persona. Composición: Relación entre la clase libro y la clase capítulo de libro.
7)Explicar razonadamente que es una interfaz y cuando se debe usar.
Es una colección de definiciones de métodos (sin implementación) y de valores estáticos y constantes. En ella se define la interacción (interfaz), no cómo se realiza esa interacción. Se usa cuando varias clases comparten métodos y cada una de ellas lo define de forma distinta.
9)Explicar para qué sirve anteponer la palabra final en un atributo y para qué sirve anteponer la palabra final en un método
En un atributo indica que su valor no puede ser cambiado, es decir, es una constante. Tiene que ser inicializado al declararse (o en el constructor/es) y su valor no puede cambiarse posteriormente.
En un método indica que no puede ser redefinido por una subclase
10)Si estamos hablando de clases hijas dentro del tema de herencia ¿qué es la sobreescritura de métodos? Justifique razonadamente su respuesta
Un método se puede especializar, redefinir o sustituir en una subclase. El tipo de retorno, el nombre del método, el tipo y número de argumentos debe ser el mismo. Las excepciones lanzadas deben ser
como mucho, las declaradas por el método a redefinir. Los modificadores de acceso al método deben ser al menos tan generales como los del método en la superclase. Por último hay que tener en cuenta dos cosas:
Si el método de la superclase tiene el modificador final, la subclase no puede sobreescribirlo ya que se trata de un método final que indica diseño perfecto o que por razones de seguridad no se
permite sobreescribir.
Se puede acceder al método de la superclase utilizando la palabra super antes de llamar al método.
11)Explicar razonadamente qué es una relación de herencia y para qué se usa. Dar un ejemplo gráfico de su representación en UML
Es una propiedad esencial de la POO, en la que existen dos clases relacionadas: la clase padre y la clase hija: la clase hija toma todos los atributos y métodos de clase padre. Aunque hereda todo, la clase hija solo tiene acceso a los miembros de la clase padre con modificadores «public, protected, o package (por omisión)»
Uso: La herencia se usa sobre todo para:
– La reutilización del código
– Añadir nuevos comportamientos a las clases hijas
– La redefinición de comportamientos
– Creación de clasificaciones jerárquicas de clase
12)
Explicar razonadamente que es una clase abstracta, su declaración y cuando se debe usar.Una clase abstracta (abstract) es una clase de la que no se pueden crear objetos. Sus métodos pueden ser métodos abstractos (sin código) o no abstractos. Al menos debe existir un método abstracto. Si una clase tiene algún método abstracto, es obligatorio que la clase sea abstracta. En las subclases deberá ser implementado o volver a declararse como abstracto
Declaración: [acceso] abstract class claseAbstracta { … }
Usos: sirve para proporcionar un modelo de comportamiento que deben seguir las clases hijas, definiendo estas esos comportamientos y a la vez dar algunos métodos de utilidad general.
13)
Explicar razonadamente para qué sirve la sentencia this y poner al menos un ejemplo de todos los usos de esta sentencia.Dentro de un método o de un constructor, this hace referencia al objeto actual.
Ejemplos:
ATRIBUTOS: this.x {Si x es un atributo de la clase, se refiere al atributo del objeto}
CONSTRUCTOR: this(x, y) {Está en la primera línea de otro constructor y sirve para llamar a otro constructor -en este caso con dos argumentos-}
MÉTODOS: this.mostrar() {Invoca al método mostrar() del objeto actual}
OBJETO ENTERO: copiar (this) {Pasa el objeto actual al método copiar( )}
14)
Explicar razonadamente qué es un atributo estático y cómo se declara. Explicar qué es un método estático, cómo se declara y un ejemplo de su invocaciónUn atributo estático es una variable de clase. Esto significa que es un atributo que es común a todos los objetos de la clase. Este atributo es único y compartido por todos los objetos de esa clase.
DECLARACIÓN: [acceso] static tipo nombre;
Un método static es un método global de la clase. Un objeto no hace copia de los métodos static. Suelen utilizarse para acceder a atributos estáticos y no pueden hacer uso de la referencia this
DECLARACIÓN: *acceso+ static tipo_retorno nombre (…) ;
Llamada a métodos estáticos:
NombreClase.nombreMetodoEstatico()
15)
Dentro del tema de Colecciones, ¿qué diferencia hay entre la interfaz List y la interfaz Set? Dar un ejemplo de clases que implemente cada una de ellas.La interfaz List define unas colecciones que puede tener elementos duplicados y la interfaz Set define colecciones que no permiten duplicados.Ejemplo de clase que implemente List: ArrayList, LinkedList
Ejemplo de clase que implemente Set: HashSet, TreeSet
Deja un comentario