Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Los programas en Java están formados por clases. Una clase en java, es una definición de
un módulo de un programa. A partir de una clase se pueden crear objetos. A cada uno de
estos objetos se dice que es una instancia de la clase.
En otras palabras, las clases son las plantillas para hacer objetos. Una clase sirve para
definir una serie de objetos con propiedades (atributos), comportamientos (operaciones o
métodos), y semántica comunes. Hay que pensar en una clase como un molde. A través
de las clases se obtienen los objetos en sí.
Una clase en Java nos proporcionará los atributos y métodos necesarios que un objeto
necesitará para interactuar con otros, por lo que es importante saber estructurar
correctamente las clases.
Para definir una clase en Java se utiliza la palabra reservada class. Una sugerencia para
nombrar una clase es que se debe escribir todo en minúsculas a excepción de la primera
letra del nombre de la clase. Si para establecer el nombre de la clase se requieren varias
palabras se deben unir las letras de todas las palabras y la primera letra de cada palabra
debe estar en mayúscula.
Las clases incluyen por tanto atributos y métodos. Los atributos definen el estado de cada
objeto de esa clase y los métodos su comportamiento.
Los atributos debemos considerarlos como la zona más interna, oculta a los usuarios del
objeto. El acceso a esta zona se realizará a través de los métodos.
[throws listaExcepciones]{
// instrucciones del método
[return valor;]
}
}
Todo lo que aparece entre corchetes es opcional, por lo tanto la definición mínima de una
clase en Java es:
class NombreClase
{
}
Como hemos visto antes, el concepto de clase incluye la idea de ocultación de datos, que
básicamente consiste en que no se puede acceder a los datos directamente (zona privada),
sino que hay que hacerlo a través de los métodos de la clase.
APLICABLE
EFECTO
A
Restringe la visibilidad al
interior de la clase. Un
atributo o método
private definido como private Atributos
solo puede ser usado en Métodos
el interior de su propia
clase.
Cuando no se especifica
un modificador, el
elemento adquiere el
acceso por defecto o
<Sin friendly. También se le Clases
modificador> conoce como acceso de Atributos
package (paquete). Solo Métodos
puede ser usado por las
clases dentro de su
mismo paquete.
Se emplea en la
herencia. El elemento
puede ser utilizado por
cualquier clase dentro
protected de su paquete y por Atributos
cualquier subclase Métodos
independientemente del
paquete donde se
encuentre.
Es el nivel máximo de
visibilidad. El elemento Clases
public Atributos
es visible desde
cualquier clase. Métodos
Es la superclase de las que heredan directa o indirectamente todas las clases Java.
Cuando una clase deriva de otra, se llama superclase a la clase base de la que deriva la
nueva clase (clase derivada o subclase) La clase derivada hereda todos los atributos y
métodos de su superclase.
Si una clase implementa un interface está obligada a implementar todos los métodos de la
interface. Veremos los interface más adelante.
En Java solo puede haber una clase pública por archivo de código fuente .java
El nombre de la clase pública debe coincidir con el nombre del archivo fuente. Por
ejemplo, si el nombre de la clase pública es Persona el archivo será Persona.java
En una aplicación habrá una clase principal que será la que contenga el método
main. Esta clase deberá haber sido declarada como pública
Junto al modificador de acceso pueden aparecer otros modificadores aplicables a clases,
atributos y métodos:
APLICABLE
MODIFICADOR EFECTO
A
Aplicado a una clase, la
declara como clase
abstracta. No se pueden
crear objetos de una clase
abstract abstracta. Solo pueden Clases
usarse como superclases. Métodos
Aplicado a un método, la
definición del método se
hace en las subclases.
Aplicado a una clase
significa que no se puede
extender (heredar), es decir
que no puede tener
subclases.
Aplicado a un método Clases
final significa que no puede ser Atributos
sobrescrito en las Métodos
subclases.
Aplicado a un atributo
significa que contiene un
valor constante que no se
puede modificar
Aplicado a un atributo
indica que es una variable
de clase. Esta variable es
única y compartida por
todos los objetos de la Atributos
static clase. Métodos
Aplicado a un método
indica que se puede
invocar sin crear ningún
objeto de su clase.
Un atributo volatile puede
ser modificado por métodos
volatile Atributos
no sincronizados en un
entorno multihilo.
Un atributo transient no es
transient parte del estado persistente Atributos
de las instancias.
Métodos para entornos
Sincronizad Métodos
multihilo.
Sabemos que los métodos en Java pueden tener cualquier nombre (excluido el de palabras
clave). Existe un nombre de método que está reservado en Java y otros lenguajes: el
método main. Este método es un método especial en tanto en cuanto es el que da lugar al
inicio del programa. Si comparamos un programa con un partido de fútbol, el método main
sería el responsable de poner el partido en juego.
En Java:
es el punto de inicio de toda aplicación en Java. Los paréntesis después del identificador
main indican que este es un bloque de construcción del programa, al cual se le llama
método. Las declaraciones de clases en Java generalmente contienen uno o más métodos.
En una aplicación en Java, solo uno de esos métodos debe llamarse main de no ser así, la
JVM no ejecutara la aplicación. Los métodos pueden realizar tareas y devolver información
una vez que las hayan concluido. La palabra clave void indica que este método realizara
una tarea, pero no devolverá ningún tipo de información cuando complete su tarea.
Crear objetos
Una clase es una plantilla que define los datos y los métodos del objeto. Un objeto es una
instancia de una clase. Se puede crear muchas instancias de una clase. La creación de una
instancia se conoce como instanciación.
Clase Circulo
Objeto 1 de circulo
Objeto 2 de circulo
Como ya se ha comentado, una vez que se define una clase, el nombre de la clase se
convierte en nuevo tipo de dato y se utiliza tanto como declarar una variable de ese tipo,
como para crear objeto del mismo. La sintaxis para declarar un objeto es:
NombreClase nombreObjeto;
Ejemplo
1. Creación de la clase.
2. Declarar los objetos.
3. Crear los objetos.
Una variable de tipo clase es una variable referencia, que puede contener la dirección en
memoria (o referencia) de un objeto de la clase o null para una referencia no valida. La
declaración de un objeto simplemente asocia el objeto con una clase, haciendo al objeto
una instancia de esa clase. La declaración no crear el objeto. Para crear realmente
miCirculo(objeto de la clase Circulo) se necesita utilizar el operador new con el objeto de
indicar a la computadora que cree un objeto miCirculo y asigne espacio de memoria para
ella. La sintaxis para crear un objeto es:
Ejemplo
Declaración e Instanciación
Ejemplo
Constructores
El constructor no devuelve ningún tipo, ni siquiera void. Su misión es iniciar todo estado
interno de un objeto (sus atributos), haciendo que el objeto sea utilizable inmediatamente;
reservando memoria para sus atributos, iniciando sus valores...
Por ejemplo:
MiPunto() {
Este constructor denominado constructor por defecto, por no tener parámetros, establece
el valor -1 a las variables de instancia x e y de los objetos que construya.
La lista de parámetros especificada después del nombre de una clase en una sentencia
new se utiliza para pasar parámetros al constructor.
Se llama al método constructor justo después de crear la instancia y antes de que new
devuelva el control al punto de la llamada.
Se muestra en pantalla:
P1. - x = 10 y = 20
Para crear un programa Java que contenga ese código, se debe de crear una clase que
contenga un método main(). El intérprete java se ejecutará el método main de la clase que
se le indique como parámetro.
El operador new
El operador new crea una instancia de una clase (objetos) y devuelve una referencia a ese
objeto. Por ejemplo:
Hay una distinción crítica entre la forma de manipular los tipos simples y las clases en Java:
Las referencias a objetos realmente no contienen a los objetos a los que referencian. De
esta forma se pueden crear múltiples referencias al mismo objeto, como por ejemplo:
MiPunto p3 =p2;
Aunque tan sólo se creó un objeto MiPunto, hay dos variables (p2 y p3) que lo referencian.
Cualquier cambio realizado en el objeto referenciado por p2 afectará al objeto referenciado
por p3. La asignación de p2 a p3 no reserva memoria ni modifica el objeto.
Aunque se haya asignado null a p2, p3 todavía apunta al objeto creado por el operador
new.
Cuando ya no haya ninguna variable que haga referencia a un objeto, Java reclama
automáticamente la memoria utilizada por ese objeto, a lo que se denomina recogida de
basura.
Cuando se realiza una instancia de una clase (mediante new) se reserva en la memoria un
espacio para un conjunto de datos como el que definen los atributos de la clase que se
indica en la instanciación. A este conjunto de variables se le denomina variables de
instancia. La potencia de las variables de instancia es que se obtiene un conjunto distinto
de ellas cada vez que se crea un objeto nuevo. Es importante el comprender que cada
objeto tiene su propia copia de las variables de instancia de su clase, por lo que los cambios
sobre las variables de instancia de un objeto no tienen efecto sobre las variables de
instancia de otro.
El siguiente programa crea dos objetos MiPunto y establece los valores de x e y de cada
uno de ellos de manera independiente para mostrar que están realmente separados.
p4. - x = 10 y = 20
p5. - x = 42 y =