-
Encapsulación
Estricta
- Encapsulación se refiere a la combinación de campos y métodos juntos en una
clase de tal manera que los métodos trabajan sobre los datos, en oposición a
los usuarios que acceden directamente a los campos
- Encapsulación estricta se refiere a la utilización de la encapsulación en
todos los campos de una clase, y sólo facilitar el acceso a los campos a
través de métodos
- Con encapsulación estricta, los campos de un objeto no pueden ser
modificados o accedidos directamente, sólo a través de métodos
- Para implementar encapsulación estricta, los campos de una clase privada
deben proveer métodos públicos de acceso ("getter") y de modificación ("setter")
-
Beneficios
- Se puede monitorear y validar todos los cambios de un campo
- Se puede supervisar y dar formato a todos los accesos de un campo
- El tipo de dato real de un campo puede ser ocultado al usuario
- El usuario de un objeto no tiene conocimiento de cómo el objeto almacena sus datos
- Si se necesita alterar un campo, los usuarios de la clase no se ven afectados por
el cambio, siempre y cuando no se modifique la firma de los métodos
-
Bajo
Acoplamiento
- El acoplamiento es el grado en que un objeto depende
de otro objeto de lograr su objetivo
- Si los objetos están estrechamente acoplados, cambiar
el código en una clase tiene un efecto importante sobre
las clases dependientes y se requerirá cambios de código
para varias clases
- El código cambiante en una clase tiene un efecto mínimo
en sus clases dependientes
- Aumenta la reutilización de las clases
-
Alta
Cohesión
- Cohesión se refiere a cómo se vinculan las tareas específicas de un objeto
- Alta cohesión es cuando un objeto realiza un conjunto de tareas que están
estrechamente relacionadas
- Bajaa cohesión es cuando un objeto realiza múltiples tareas que no están
relacionadas entre sí
- La baja cohesión crea código que es difícil de mantener y reutilizar
- Las clases que implementan la alta cohesión, son más reutilizables
y más fácil de probar y entender
-
Relaciones
de Diseño
-
Relación
"es un"
- Es una sencilla comprobación para verificar que se
está utilizando la herencia correctamente
- En concreto, se debe ser capaz de afirmar que un
objeto hijo "es un" objeto padre
- Topic
- Topic
-
Relación
"tiene un"
- Es una sencilla comprobación para verificar que se
está utilizando adecuadamente la composición
- Composición refiere a una clase que contiene una
referencia a otra clase
- Si un objeto "tiene un" atributo o propiedad específica,
el atributo o propiedad es un buen candidato para crear
un campo dentro de la clase del objeto
- Topic
-
Beneficios
- El código resultante es más lógico
- El código es más fácil de entender
- Las clases son más fáciles de reutilizar en otras
relaciones y aplicaciones
- El código es más fácil de mantener, especialmente si
cambian las necesidades y requerimientos del programa
-
Modificadores
y Herencia
-
Modificadores
de Acceso
-
public
- Un campo, método o constructor público de una clase
es accesible a cualquier otra clase
-
private
- Un campo, método o constructor privado sólo es
accesible desde dentro de la clase que se declara
-
protected
- Un campo, método o constructor protegido es
accesible desde otras clases del mismo paquete
o desde sus subclases (clases hijas)
-
default
- Un campo, método o constructor sin modificador
es accesible desde otras clases del mismo paquete
-
Modificador
abstract
- Una clase abstracta no puede ser instanciada
- Un método abstracto debe ser sobrescrito
- Una clase que contiene un método abstracto también
debe declararse abstracta
- Una clase hija debe sobrescribir los métodos abstractos de
su clase padre o la clase hija también debe ser abstracta
- Los modificadores de acceso en la clase hija deben ser
al menos tan accesible como los modificadores de acceso
de los méódos abstractos de la clase padre
- Un método abstracto no puede ser privado porque no seria
visible en su clase hija y por lo tanto no puede ser sobrescrito
- Los constructores no puedes ser abstractos
ya que estos no se sobreescriben
-
Modificador
final
- Se aplica a las variables locales, campos, métodos o clases
- Una variable o campo final no se puede cambiar una vez
que se asigna. Estos se conocen como constantes
- Un método final no puede ser sobrescrito
- Una clase final no puede tener subclases
-
Convención
- Los nombres de las variables deben estar en mayúsculas
- Si el nombre de la variable es una palabra compuesta,
se utiliza el guión bajo (_) para separar las palabras
- final String COMPANY_NAME = "Sun";
-
Polimorfismo
- Se refiere a cómo un objeto en Java puede adoptar "muchas formas"
- Una clase hija puede adoptar la forma de su clase padre
- Una clase puede adoptar la forma de sus interfaces implementadas
-
Métodos
Virtuales
- Todos los métodos en Java son métodos virtuales
- Si un método se sobrescribre, el método se reemplaza en tiempo de ejecución
- El compilador ve el método de la clase padre en tiempo de compilación
- Referencias polimórficas a menudo necesitan ser moldeadas a su tipo de clase adecuada
- Topic
-
Operador
instanceof
- Es un operador booleano que se utiliza para comparar
una referencia a un tipo de clase
- Si la referencia es del tipo de clase dada, entonces el
resultado es verdadero, de lo contrario, es falso
-
Sintaxis
- reference instanceof ClassName
-
Uso
- Un uso son los métodos con parámetros polimórficos
- Si el parámetro de un método es un tipo de clase,
el argumento puede ser cualquier clase hija
- Topic
-
Colección
Heterogénea
- Es una colección de objetos que no son del mismo tipo de dato,
pero que tienen una clase padre común
- Topic