Resumen Capitulo 9

Definición de clases para objetos

Un objeto representa una entidad en el mundo real que puede identificarse claramente. Por ejemplo, un estudiante, un escritorio e incluso un préstamo pueden verse como objetos. Un objeto tiene una única identidad, estado y comportamiento.

■ El estado de un objeto (también conocido como sus propiedades o atributos) se representa mediante campos de datos con sus valores actuales.

■ El comportamiento de un objeto (también conocido como sus acciones) se define mediante métodos. Invocar un método en un objeto es pedirle al objeto que realice una acción.

Una clase es una plantilla, modelo o contrato que define cuáles serán los campos y métodos de datos de un objeto. Un objeto es una instancia de una clase. Puede crear muchas instancias de una clase. Una clase Java usa variables para definir campos de datos y métodos para definir acciones.

Construyendo objetos usando constructores

Se invoca un constructor para crear un objeto utilizando el nuevo operador. Los constructores son un tipo especial de método. Tienen tres peculiaridades:

■ Un constructor debe tener el mismo nombre que la clase misma.

■ Los constructores no tienen un tipo de retorno, ni siquiera son nulos.

■ Los constructores se invocan utilizando el nuevo operador cuando se crea un objeto.

Los constructores se utilizan para construir objetos. Para construir un objeto a partir de una clase, invoque un constructor de la clase utilizando el nuevo operador, de la siguiente manera:

new ClassName (argumentos);

Variables de referencia y tipos de referencia

Se accede a los objetos a través de las variables de referencia del objeto, que contienen referencias a los objetos. Dichas variables se declaran utilizando la siguiente sintaxis:

ClassName objectRefVar;

Puede escribir una sola declaración que combine la declaración de una variable de referencia de objeto, la creación de un objeto y la asignación de una referencia de objeto a la variable con la siguiente sintaxis:

ClassName objectRefVar = new ClassName ();

Aquí hay un ejemplo:

Circle myCircle = new Circle ();

La variable myCircle contiene una referencia a un objeto Circle.

Acceso a los datos y métodos de un objeto

El miembro de un objeto se refiere a sus campos y métodos de datos. Después de crear un objeto, se puede acceder a sus datos y se pueden invocar sus métodos utilizando el operador de punto (.), También conocido como el operador de acceso de miembro de objeto:

■ objectRefVar.dataField hace referencia a un campo de datos en el objeto.

■ objectRefVar.method (argumentos) invoca un método en el objeto

El objeto en el que se invoca un método de instancia se denomina objeto de llamada.

Campos de datos de referencia y el valor nulo

Los campos de datos pueden ser de tipos de referencia. Por ejemplo, la siguiente clase de Estudiante contiene un nombre de campo de datos del tipo Cadena. La cadena es una clase Java predefinida.

class Student {

String name; // name has the default value null

int age; // age has the default value 0

boolean isScienceMajor; // isScienceMajor has default value false

char gender; // gender has default value ‘\u0000’

}

Si un campo de datos de un tipo de referencia no hace referencia a ningún objeto, el campo de datos contiene un valor especial de Java, nulo. El valor predeterminado de un campo de datos es nulo para un tipo de referencia, 0 para un tipo numérico, falso para un tipo booleano y \ u0000 para un tipo char.

Diferencias entre variables de tipos primitivos y Tipos de referencia

Cada variable representa una ubicación de memoria que contiene un valor. Cuando declaras una variable, se esta diciendo al compilador qué tipo de valor puede contener la variable.

Usar clases de la biblioteca de Java  

1. La clase de fecha

Con ShowCurrentTime.java, se obtiene la hora actual usando System.currentTimeMillis ().

Puede usar el constructor sin argumentos en la clase Fecha para crear una instancia para la fecha y hora actuales, el método getTime () para devolver el tiempo transcurrido desde el 1 de enero de 1970, GMT, y el método toString () para devolver el fecha y hora como una cadena.

2. The Random Class

Una forma de generar números aleatorios es usar la clase java.util.Random, que puede generar un valor aleatorio int, long, double, float y boolean.

  3. The Point2D Class

Java API tiene una conveniente clase Point2D en el paquete javafx.geometry para representar un punto en un plano bidimensional.

Variables estáticas, constantes y métodos

Una variable estática es compartida por todos los objetos de la clase. Un método estático no puede acceder a los miembros de instancia de la clase. Las variables estáticas almacenan valores para las variables en una ubicación de memoria común. Una variable de instancia está vinculada a una instancia específica de la clase; no se comparte entre objetos de la misma clase.

Para declarar una variable estática. La variable estática numberOfObjects y el método estático getNumberOfObjects () se pueden declarar de la siguiente manera:

static int numberOfObjects;

static int getNumberObjects() {

return numberOfObjects;}

9.8 Modificadores de visibilidad

Se pueden usar para especificar la visibilidad de una clase y sus miembros. Puede usar el modificador de visibilidad pública para clases, métodos y campos de datos para indicar que se puede acceder a ellos desde cualquier otra clase. Si no se utiliza un modificador de visibilidad, de forma predeterminada cualquier clase en el mismo paquete puede acceder a las clases, métodos y campos de datos. Esto se conoce como paquete privado o acceso a paquete.

9.9 Encapsulación de campo de datos

Hacer que los campos de datos sean privados protege los datos y hace que la clase sea fácil de mantener. Esta no es una buena práctica, por dos razones:
■ Primero, los datos pueden ser manipulados.
■ Segundo, la clase se vuelve difícil de mantener y vulnerable a los errores.

Un cliente a menudo necesita recuperar y modificar un campo de datos. Para hacer accesible un campo de datos privados, proporcione un método getter para devolver su valor. Para permitir que se actualice un campo de datos privados, proporcione un método de establecimiento para establecer un nuevo valor. Un método getter también se conoce como un accesorio y un setter para un mutador.

Un método getter tiene la siguiente firma:

public returnType getPropertyName()

Si returnType es booleano, el método getter debe definirse de la siguiente manera por convención:

public boolean isPropertyName()

Un método setter tiene la siguiente firma:

public void setPropertyName(dataType propertyValue)

9.10 Pasar objetos a métodos

Pasar un objeto a un método es pasar la referencia del objeto. Puede pasar objetos a métodos. Al igual que pasar una matriz, pasar un objeto es en realidad pasar la referencia del objeto. El siguiente código pasa el objeto myCircle como argumento para el método printCircle:

9.11 Matriz de objetos (Array de Objetos)

Una matriz puede contener objetos, así como valores de tipo primitivos. También puede crear matrices de objetos. Por ejemplo, la siguiente declaración declara y crea una matriz de diez objetos Circle:

Circle[] circleArray = new Circle[10];

Para inicializar circleArray, puede usar un bucle for como este:

for (int i = 0; i < circleArray.length; i++) {

circleArray[i] = new Circle();

9.12 Objetos y clases inmutables

El contenido no se puede cambiar. Normalmente, crea un objeto y permite que su contenido se cambie más tarde. Llamamos a dicho objeto como objeto inmutable y su clase como clase inmutable. La clase String, por ejemplo, es inmutable.

Si una clase es inmutable, todos sus campos de datos deben ser privados y no puede contener métodos de establecimiento público para ningún campo de datos.

Para que una clase sea inmutable, debe cumplir los siguientes requisitos:

■Todos los campos de datos deben ser privados.

■No puede haber ningún método mutador para los campos de datos.

■Ningún método de acceso puede devolver una referencia a un campo de datos que sea mutable.

9.13 El alcance de las variables

El alcance de la instancia y las variables estáticas es la clase completa, independientemente de dónde se declaren las variables. El alcance de las variables de una clase es toda la clase, independientemente de dónde se declaren las variables.

Puede declarar la variable de una clase solo una vez, pero puede declarar el mismo nombre de variable en un método muchas veces en diferentes bloques sin anidación. Si una variable local tiene el mismo nombre que la variable de una clase, la variable local tiene prioridad y la variable de la clase con el mismo nombre está oculta.

 9.14 La presente referencia

La palabra clave this se refiere al objeto en sí. También se puede usar dentro de un constructor para invocar a otro constructor de la misma clase. La palabra clave this es el nombre de una referencia que un objeto puede usar para referirse a sí mismo. Puede usar esta palabra clave para hacer referencia a los miembros de la instancia del objeto.

9.14.1 Uso de esto para hacer referencia a campos de datos ocultos

La palabra clave this se puede usar para hacer referencia a los campos de datos ocultos de una clase. Se puede acceder a una variable estática oculta simplemente usando la referencia ClassName.staticVariable. Se puede acceder a una variable de instancia oculta utilizando la palabra clave this.

9.14.2 Usar esto para invocar un constructor

La palabra clave this se puede usar para invocar a otro constructor de la misma clase. Por ejemplo, puede reescribir la clase Circle de la siguiente manera:

Nota
Java requiere que la declaración this (arg-list) aparezca primero en el constructor antes que cualquier otra declaración ejecutable.

Referencia

Liang, Y. (2013). Introduction to Java programming (10th ed., pp. 321-356). Boston: Pearson.

Deja un comentario

Diseña un sitio como este con WordPress.com
Comenzar