Superclase y subclase informática

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 8,58 KB

 

Abstracción

 • Aislar un elemento de su contexto o del resto de los elementos que lo acompañan. • Enfocando en lo esencial y ignorando lo irrelevante. • Es una herramienta importante para reducir la complejidad.

Reutilización: • Acción de volver a utilizar los bienes o productos. • Aprovechar elementos existentes • No duplicar el trabajo necesario para crear un elemento nuevo • Herramienta importante para reducir el esfuerzo • En la programación orientada a objetos hay diferentes tipos de reutilización: ‣ reutilizar el código ‣ reutilizar el objeto ‣ reutilizar la API ‣ reutilizar el diseño
Encapsulamiento: • Ocultar la representación interna de un objeto • El código del objeto es inaccesible desde fuera, solo el objeto mismo tiene acceso a la representación interna • Mecanismo para aumentar el nivel de abstracción • API (Application Programming Interface): descripción de la parte pública.


Enviar mensajes: Las instancias interactúan por medio de mensajes. Enviar un mensaje corresponde a delegar una tarea a otra instancia, es decir, le asignamos un método a realizar. Cada mensaje consiste en tres componentes: 1. La instancia destinataria 2. El método a aplicar 3. Una asignación de valores a los argumentos del método Enviamos un mensaje haciendo: instancia.Método(argumentos)

Recibir mensajes: Al recibir un mensaje, la instancia destinataria ejecuta el método indicado con los argumentos indicados. En el método influye el valor actual de los atributos de la instancia. El retorno puede ser: • función: retorna un valor, hemos de especificar que tipo devuelve el método. • procedimiento: no devuelve nada, hace un proceso, cambia los valores de los atributos de una forma concreta. Se especifica que es un procedimiento añadiendo void.

Miembros de clase:
Atributo o método que pertenece a la clase. En Java se implementa con el modificador static. Miembro de instancia: pertenece solamente a esa instancia de la clase, se usan diferentes ubicaciones de memoria para cada instancia.

Palabra this: cada método se aplica sobre una instancia concreta, la palabra this hace referencia a la instancia con la que se está trabajando.


Patrón/Template: relación que permite crear definiciones genéricas. Trabaja con tipos abstractos que se concretaran en tiempo de compilación.

La clase Object: En Java existe la clase Object que es superclase de todas las demás. Se pueden aplicar los métodos de Object a cualquier instancia.

Polimorfismo: Consiste en tratar igual a muchas instancias para poder aplicar una programación genérica. Un objeto se puede comportar de diferentes maneras. Mecanismos: - Tipo declarado diferente al tipo de la instancia guardada - Sobreescritura de métodos en las subclases. • Tipo declarado: tipo especificado al definir la variable. Solo se pueden llamar a métodos del tipo declarado. • Tipo instanciado: tipo de la instancia guardada. Subclase (directa o no) del tipo declarado.


Sobreescritura (Overriding): Volver a definir un método existente de la superclase en la subclase, conservando la signatura pero cambiando la implementación. Retorna el mismo tipo y tiene los mismos argumentos de entrada.

Sobrecarga Declarar dos métodos con el mismo nombre, pero con argumentos de entrada diferentes (signatura diferente). Se tratan como métodos distintos.

Binding: Vínculo entre métodos. Existen dos tipos de vínculos: Static Binding —> En tiempo de compilación Durante el tiempo de compilación ya sabemos cual es el vínculo entre los métodos. Dynamic Binding —> En tiempo de ejecución No se sabe cual de las versiones de los métodos sobreescritos se utilizará hasta el momento de la ejecución. Esto es debido a que hay diversos métodos con la mismo nombre i el vínculo entre ellos se determina cuando se ejecuta el programa. Dynamic Binding es necesario para implementar el polimorfismo.

Casting: guardar una misma instancia en otra variable con tipo declarado diferente, es decir, cambiar el tipo declarado, pero no el instanciado. Puede ser de dos tipos: • Upcast: cambiar a un tipo más general (al de una superclase) —> siempre permitido • Downcast: cambiar a un tipo más específico (al de una subclase) —> puede fallar El casting nos sirve para poder aplicar una programación genérica, tratando igual a las intancias.


Por ejemplo tenemos un programa con alumnos y profesores, los cuales heredan de persona, podemos hacer un upcast tanto de alumnos como de profesores para poder tratar a todos estos como personas y poder aplicar los métodos de persona a los dos tipos de instancias. El downcast nos permite llamar a métodos que no están en la clase del tipo declarado.

Abstractos: Tanto los métodos abstractos como las clases abstractas se crean para facilitar la herencia de una clase a múltiples y que estas trabajen con el mismo método con el mismo nombre pero con implementación diferente. Usamos el modificador abstract para indicar un método o clase abstracta.
• Método abstracto:
No proporcionan implementación. Acaban en “;”. Tienen que sobreescribirse. No pueden ser final, ni private, ni static. • Clases abstractas: Sirve para agrupar comportamiento común de las subclases por medio de métodos abstractos, por tanto están pensadas para heredar de ellas. No puede tener instancias. Si hay 1 método abstracto en una clase, esta es abstracta. Una clase no puede ser a la vez final y abstract. El tipo instanciado no puede ser el de una clase abstracta, pero el tipo declarado si. Si aplicamos un método a una variable cuyo tipo es una clase abstracta, se ejecutará la versión del tipo instanciado.


Interfaz: contiene métodos abstractos que serán implementados en otras clases. En una interfaz todos los métodos serán abstractos, por tanto no hace falta añadir el modificador abstract. Una interfaz también puede contener constantes (atributos static y final). Para crearla usamos la palabra interface. Public interface Comparable{ public int compareTo (Object o); //es abstracto!! } Para aplicar la interfaz a una clase usamos la palabra implements. La clase que implementa la interfaz debe sobreescribir todos los métodos para no ser una clase abstracta. Public class Square implements Shape{ …. } ¡Una clase puede implementar múltiples interfaces! Para ello se escribe la lista de interfaces separadas por com: public class MyClass implements Comparable, Runnable, ….{ …. } El tipo declarado de una variable puede ser una interfaz, pero el tipo instanciado de la variable tiene que ser una clase no abstracta que implementa la interfaz. Las interfaces promueven la programación genérica.

Reutilización por Inclusión: Reutilizar una clase sin hacer cambiar su estructura interna. Para ello es necesario conocer su funcionalidad, como utilizar la clase (descrito por su API) y las limitaciones de la clase.


Packages: Paquetes dentro del propio lenguaje de Java, los cuales agrupan clases. Los ficheros de las clases se guardan en la misma carpeta para formar un paquete de clases. Para incluirlos usamos import.

Patrones de diseño: Reutilizar un diagrama de clases adaptándolo a nuestro programa en concreto. De esta forma se aporta experiencia de diseño a las nuevas implementaciones y conseguimos más rápidamente un buen diseño. Existen muchos patrones de diseño, algunos de ellos son: • Iterator: proporciona un mecanismo general para acceder de forma secuencial a los elementos de una colección. Cada estructura proporciona una implementación particular.

Palabra static: • Atrubuto static: solo hay una copia del mismo elemento, i el valor es compartido por todos los objetos instanciados de la clase. • Método static: únicamente tiene acceso a los atributos de tipo static de la clase.

Entradas relacionadas: