Publicado el 4 de Enero del 2019
697 visualizaciones desde el 4 de Enero del 2019
3,0 MB
39 paginas
Programación
Tema 6:Encapsulación en clases
Programación DIT-UPM
1
Contenidos
l 1. Clases
l 2. Visibilidad-derechos de acceso
l 3. Elementos estáticos
l 4. Relaciones de uso y composición de clases
l 5. Estilo y documentación
l 6. Diseño de clases
Programación DIT-UPM
2
Clases (1/2)
l Las clases soportan varios conceptos:
n Definición de tipos de datos
¡ Definen los datos (campos) y comportamiento (métodos)
para representar conceptos tratados del programa
¡ La clase define un ámbito de nombres reconocibles en
n Espacios de nombres
todo su espacio
n Encapsulamientos
relacionados
¡ Las clases permiten agrupar datos y comportamientos
Programación DIT-UPM
3
Clases (2/2)
l Las clases son las entidades fundamentales del
desarrollo de los programas
l Los objetos son las entidades fundamentales de
la ejecución
n En Java solo accedemos a los objetos mediante las
referencias
n Un programa no incluye especificación de objetos,
solo se crean durante su ejecución
n Todos los objetos tienen asociada una clase que es
la que se emplea en su creación
Programación DIT-UPM
4
Ciclo de vida del objeto
l Declaración: Crear una
referencia para el objeto
Punto c; // inicialmente null
l Creación: Crear el objeto
mediante new y llamada
a un método constructor
c = new Punto(1.0, 1.0);
c
c
Punto
1.0
1.0
getX
setX
getY
setY
distancia
Programación DIT-UPM
5
Ciclo de vida del objeto
l Manipulación: Usar el objeto
mediante su referencia:
llamar a sus métodos, usar
sus datos, pasarlo como
parámetro, etc.
c.setX (2.0);
l Destrucción: Olvidar el objeto
cuando no haga falta; cuando
no tiene referencias, el
recolector de basura lo
destruye
c = null;
Programación DIT-UPM
Punto
2.0
1.0
getX
setX
getY
setY
distancia
c
c
6
Referencia this
l Es una variable predefinida en todos los ámbitos de una
clase (salvo los métodos static)
l El tipo de this es la clase en la que aparece
l Es una referencia al objeto sobre el que se ejecuta el
método. Esa referencia no es modificable (el objeto si)
l Podemos usarla para:
n Pasar referencias de este objeto mediante parámetros de
métodos (de esta u otras clases)
n Asignaciones a variables (locales o atributos)
l Cuando referenciamos campos y métodos sin usar
referencia, usamos implícitamente this
n this.nombreCampo equivale a nombreCampo
n this.nomMetodo(arg) equivale a nomMetodo(arg)
Programación DIT-UPM
7
Constructor this
n Todo objeto tiene un método que se llama this
¡ Representa cualquiera de sus constructores (según su
signatura)
public class Punto {
private double x, y;
public Punto (double x, double y) { … }
public Punto (double x) {this(x,0.0); }
public Punto (Punto q) {this(q.x,q.y); }
}
Programación DIT-UPM
8
Contenidos
l 1. Clases
l 2. Visibilidad-derechos de acceso
l 3. Elementos estáticos
l 4. Relaciones de uso y composición de clases
l 5. Estilo y documentación
l 6. Diseño de clases
Programación DIT-UPM
9
Ámbitos
l El cuerpo de una clase determina un ámbito
n Métodos y campos que declara son visibles en toda
la clase
l Un método (incluido constructores) determina
otro ámbito
n Los parámetros son visibles en el ámbito del método
l Un bloque de código es otro ámbito
n Bloques de código
¡ Cuerpo de métodos y constructores
¡ Cuerpos de sentencias
n La declaración de variables es visible en las
sentencias que siguen a la declaración
Programación DIT-UPM
10
l Un elemento es visible en su ámbito y en los
ámbitos que incluye
l Cuando dos elementos tienen el mismo
identificador la declaración mas interna esconde
la externa dentro del ámbito interno
n En el mismo ámbito no podemos sobrecargar el
Ámbitos
mismo identificador/signatura
int x = 0;
public int m(int x) {
x=4;
this.x=6;
return x;
}
Programación DIT-UPM
11
Paquetes
l Los paquetes son una forma de agrupar clases
relacionadas y con fuertes dependencias
n Una encapsulación de alto nivel
n Una forma de organizar las clases
¡ java.lang
¡ java.awt, java.awt.color, java.awt.event
l Los paquetes son espacios de nombres
n Para acceder a una clase hay que hacer visible el
espacio de nombres del paquete en el que se
encuentra o definir todo el camino hasta llegar a la
clase
import java.util.*;
import java.util.Date;
Programación DIT-UPM
12
Paquete de una clase
l Al principio del fichero que contiene una clase (antes de
declarar la clase) definimos el paquete que contiene la
clase
package nombre1.nombre2. … nombren;
l Un único paquete para todo el fichero
l Cuando compilamos (salvo opciones de compilación
específicos) se crea un directorio para cada nombre del
camino y un directorio contiene a los nombres que le
siguen
l Dentro del mismo paquete no pueden existir dos clases
o paquetes con el mismo nombre
Programación DIT-UPM
13
Visibilidad de paquetes y clases
l Una clase debe ser visible para poder usarla
l Las importaciones las incluimos al principio del fichero
¡ Son visibles todas las clases incluidas en ese paquete
l Si no importamos, hay que definir todo el camino:
java.util.Date d = new java.util.Date();
Necesario cuando utilizamos varias clases con el mismo nombre en
paquetes diferentes
Programación DIT-UPM
14
n Importación de una clase
import nomPaquete1.nomPaquete2….NomClase;
¡ Podemos referenciar la clase (NomClase) libremente
n Importación de todo el paquete
import nomPaquete;
¡ Para poder usar una clase hay que cualificarla
nomPaquete.nomClase
n Importación sin uso qualificado
import nomPaquete1.nomPaquete2….*;
Contenidos
l 1. Clases
l 2. Visibilidad-derechos de acceso
l 3. Elementos estáticos
l 4. Relaciones de uso y composición de clases
l 5. Estilo y documentación
l 6. Diseño de clases
Programación DIT-UPM
15
Características de clase
l En general los campos y métodos son de objeto
n Métodos se ejecutan en el contexto de un objeto
n Cada objeto tiene valores específicos para sus campos
l Hay métodos y campos que no están asociados a
objetos y que están asociados a la clase
n Los campos de clase son únicos
¡ La comparten todos los objetos de clase
¡ Las modificaciones son visibles y afectan todos los objetos de la
clase
n El modificador static hace un campo o método de clase
n No es necesario un objeto para referenciarlos
NombreClase.campoStatic
NombreClase.metodoStatic(arg)
n Dentro de la clase, no es necesario el nombre de la clase
16
Programación DIT-UPM
Elementos de clase
l ¿Cuando definir elementos de clase?
n cuando son campos constantes (static final)
n variables únicas y comunes para todos los objetos
public static final double PI = 3.14;
de esa clase
class Punto {
public static Punto origen = new Punto(0.0,0.0);
…}
n métodos que necesitemos utilizar aunque no haya
objetos
¡ Métodos en la clase Math
n métodos que sólo utilizan elementos de clase
n main, para poder entrar en el programa sin más
Programación DIT-UPM
17
Características de clase
l En métodos static no podemos usar this, y solo
podemos usar campos static. ¿Por qué?
n La llamada puede llegar de un contexto que no es de ningún
objeto
n La llamada puede llegar del contexto de un objeto de otra clase
l Campos static se deben inicializar en la declaración o
l Mediante bloques static:
class C {
static int i=0;
static { // solo podemos acceder a statics
// podemos incluir bucles y alternancias
}
…}
Programación DIT-UPM
18
Método main
n main es la forma estándar para entrar en un programa
que no incluye ningún objeto todavía
¡ Si no fuese static, primero habría que crear un objeto, y se
n La máquina virtual inicializa la ejecución y busca main
ejecutaría el constructor
para cederle control; ejecuta
NombreClase.main(args)
n Por eso main debe ser un método de clase, hay que
respetar sus argumentos y retorno, y debe ser público
Programación DIT-UPM
19
Contenidos
l 1. Clases
l 2. Visibilidad-derechos de acceso
l 3. Elementos estáticos
l 4. Relaciones de uso y composición de clases
l 5. Estilo y documentación
l 6. Diseño de clases
Programación DIT-UPM
20
Relaciones entre Clases
l Las clases son un mecanismo complejo para soportar la
reutilización del software (no reinventar la rueda)
l Las clases integran funcionalidades para tratar al tipo
de concepto que soportan
l Una clase compleja se puede construir a partir de
clases simples
l Tipos de relaciones entre clases
n Uso
n Composición
n Agregación
n Dependencia
l En Java las implementamos todas mediante import,
referencias a clases y referencias a objetos
Programación DIT-UPM
21
Relaciones Uso
l Utilizamos los métodos de otra clase para poder
implementar algunos métodos
l Hay que importar la clase, y debemos tener algún tipo
de referencia (campos o variables locales), o que los
métodos sean static
l Una clase puede utilizar los métodos definidos en otra,
aunque no incluya campos que la referencien
import ClaseUsada;
class ClaseQueUsa {
}
public void metodo(ClaseUsada usada) {
usada.metodoUsado();
(new ClaseUsada()).metodoUsado();
}
Programación DIT-UPM
22
Relaciones Composición y Agregación (1/2)
l En una relación de composición construimos un tipo de
objeto mas complejo mediante un conjunto de objetos
simples
n Por ejemplo, clase Ascensor a partir de las clases: Motor,
Botones, Display, Puerta
n Por ejemplo, clase Escuela a partir de las clases: Secretaria,
Departamento, Direccion,
Comentarios de: Tema 6:Encapsulación en clases (0)
No hay comentarios