Anda di halaman 1dari 7

Resumen de los capítulos 3 y 6 del libro “Cómo programar en Java” de Deitel &

Deitel”.

Como Programar en Java, 9 edicion –Deitel & Deitel

Capítulo 3:

Introducción a las clases, objetos, métodos y cadenas

3.1 Introducción:

Se presentará un marco de trabajo simple para organizar aplicaciones orientadas a


objetos.

3.2 Declaración de una clase con un método e instanciamiento de un objeto de una clase

Cada declaración de clase que comienza con la palabra clave public debe almacenarse
en un archivo que tenga el mismo nombre que la clase, y que termine con la extensión
de archivo .java.

La clase LibroCalificaciones

Para llamar a un método de otra clase es necesario primero crear un objeto. Toda
declaración de clase contiene la palabra clave class seguida por el nombre de la clase. El
cuerpo de toda clase se encierra entre un par de llaves izquierda y derecha.

La declaración del método comienza con la palabra clave publ i c para indicar que el
método está “disponible al público”: los métodos de otras clases pueden llamarlo. A
continuación está el tipo de valor de retorno del método, el cual especifica el tipo de
datos que devuelve el método a quien lo llamó después de realizar su tarea. El tipo de
valor de retorno void indica que no retorna ningún valor.

La clase PruebaLibroCalificaciones

El método main inicia la ejecución de todas las aplicaciones, una clase que contiene el
método main empieza la ejecución de una aplicación en java. Una palabra clave para
permitir que la JVM localice y llame al método main para empezar la ejecución de la
aplicación es la palabra clave static la cual indica que main es un método static. Un
método static puede llamarse sin tener que crear primero un objeto de la clase en la cual
se declara ese método.

La palabra clave new crea un nuevo objeto de la clase especificada a la derecha de la


palabra clave. Los paréntesis en combinación con el nombre de una clase representan el
llamado a un constructor que es similar a un método pero se utiliza solo al inicializarse
los datos de este.

Compilación de una aplicación con varias clases

Debe compilar las clases antes de poder ejecutar la aplicación.


Diagrama de clases de UML para la clase LibroCalificaciones

En UML, cada clase se modela en un diagrama de clases en forma de rectángulo con


tres compartimientos. El compartimiento superior contiene el nombre de la clase,
centrado en forma horizontal y en negrita. El compartimiento de en medio contiene los
atributos de la clase, que en Java corresponden a las variables de instancia. El
compartimiento inferior contiene las operaciones de la clase, que en Java corresponden
a los métodos. Para modelar las operaciones, UML lista el nombre de la operación
precedido por un modificador de acceso (en este caso, +) y seguido de un conjunto de
paréntesis.

3.3 Declaración de un método con un parámetro

Un método puede requerir uno o más parámetros (información adicional) para realizar
su tarea. Los parámetros se definen en una lista de parámetros separada por comas,
ubicada dentro de los paréntesis que van después del nombre del método. Cada
parámetro debe especificar un tipo y un nombre de variable. La lista de parámetros
puede contener uno, varios o ninguno.

Argumentos para un método

La llamada a un método proporciona valores (argumentos) para cada uno de los


parámetros de ese método.

Mostrar los argumentos y los parámetros

En el instante en que se llama al método, el valor del argumento en la llamada se asigna


al parámetro correspondiente. Después, el cuerpo del método utiliza el valor del
parámetro. El número de argumentos en la llamada a un método debe coincidir con el de
los parámetros en la lista de parámetros de la declaración del método. Además los tipos
deben ser “consistentes con” los de los parámetros correspondientes en la declaración
del método.

Diagrama de clases de UML actualizado para la clase LibroCalificaciones

La forma en que UML modela un parámetro es un poco distinta a la de Java, ya que


lista el nombre de éste, seguido de dos puntos y su tipo entre paréntesis, después del
nombre de la operación. UML tiene sus propios tipos de datos, que son similares a los
de Java.

Observaciones acerca del uso de las declaraciones import

Las clases System y String están en el paquete java.lang, que se importa de manera
implícita en todo programa de Java. La mayoría de las otras clases que utilizará en los
programas de Java deben importarse de manera explícita. Hay una relación especial
entre las clases que se compilan en el mismo directorio en el disco, de manera
predeterminada, se considera que dichas clases se encuentran en el mismo paquete, a
esto se le conoce como el paquete predeterminado. Estas clases son importadas de
manera implícita en los archivos de código fuente de las otras clases dentro del paquete.

3.4 Variables de instancia, métodos establecer y métodos obtener

Las variables que se declaran en el cuerpo de un método específico se conocen como


variables locales y solo pueden utilizarse en ese método, al terminar ese método se
pierden los valores de las variables locales. Por lo general, una clase consiste en uno o
más métodos que manipulan los atributos pertenecientes a un objeto específico de la
clase. Los atributos se representan como variables en la declaración de la clase,
llamadas campos y son declaradas dentro de la declaración de una clase pero fuera de
las declaraciones de los métodos.

Se conoce como variable de instancia cuando cada objeto tiene su propia copia de un
atributo.

Los modificadores de acceso public y private

La mayoría de las declaraciones de variables de instancia van precedidas por la palabra


clave private. Al igual que public, private es un modificador de acceso. Las variables a
los métodos declarados como private son accesibles solo para los métodos de la clase en
que se declaran. El proceso de declarar variables de instancia con el modificador de
acceso private se conoce como ocultamiento de datos u ocultamiento de información.

La clase PruebaLibroCalificaciones que demuestra a la clase LibroCalificaciones

A diferencia de las variables locales, que no se inicializan de manera automática, cada


campo tiene un valor inicial predeterminado que Java le asigna cuando este no es
específicado.

Los métodos establecer y obtener

Los campos private de una clase pueden manipularse sólo mediante los métodos de esa
clase. Los nombres de estos métodos no necesariamente deben ser establecer u obtener
pero es recomendado en Java y requerido para ciertos componentes especiales de Java
(Java Beans). El método que establece la variable de instancia nombreDelCurso en este
ejemplo se llama establecerNombreDelCurso, y el método que obtiene su valor se llama
obtenerNombreDelCurso.

3.5 Comparación entre tipos primitivos y tipos por referencia

Los tipos de datos en Java se dividen en primitivos (boolean, byte, char, short, int, long,
float, doublé) y tipos por referencia (todos los tipos no primitivos, clases que
especifican los tipos de objetos). Una variable de tipo primitivo puede almacenar sólo
un valor de su tipo declarado a la vez.

Los programas utilizan variables de tipo por referencia para almacenar las ubicaciones
de los objetos en la memoria de la computadora. Se dice que dicha variable hace
referencia a un objeto en el programa. Cada uno de los objetos a los que se hace
referencia puede contener muchas variables de instancia. Cuando usamos un objeto de
otra clase, es obligatorio que una referencia a él invoque a sus métodos.

3.6 Inicialización de objetos mediante constructores

La palabra clave new solicita memoria del sistema para almacenar un objeto, y después
llama al constructor de la clase correspondiente para inicializar el objeto. De manera
predeterminada, el

oompilador proporciona un constructor predeterminado sin parámetros, en cualquier


clase que no incluya un constructor en forma explícita. Cuando una clase sólo tiene el
constructor predeterminado, sus variables de instancia se inicializan con sus valores
predeterminados.

Cuando usted declara una clase, puede proporcionar su propio constructor para
especificar una inicialización personalizada para los objetos de su clase.

3.7 Los números de punto flotante y el tipo doublé

Números con un punto decimal. Java cuenta con dos tipos primitivos para almacenar
números de punto flotante en la memoria: float y double. La principal diferencia entre
ellos es que las variables tipo double pueden almacenar números con mayor magnitud y
más dígitos a la derecha del punto decimal.

Capítulo 6

Métodos: un análisis más detallado

6.1 Introducción

La experiencia ha demostrado que la mejor manera de desarrollar y mantener un


programa extenso es construirlo a partir de pequeñas piezas sencillas, o módulos. A esta
técnica se le llama divide y vencerás.

6.2 Métodos de programas en Java

También conocidos como funciones o procedimientos en otros lenguajes. Permiten al


programador dividir un programa en módulos, por medio de la separación de sus tareas
en unidades autónomas. Las instrucciones en los cuerpos de los métodos se escriben
sólo una vez, se ocultan de otros métodos y se pueden reutilizar desde varias
ubicaciones en un programa.

Permite la reutilización de software (usar los métodos existentes como bloques de


construcción para crear nuevos programas). A menudo se pueden crear programas a
partir de métodos estandarizados, en vez de tener que crear código personalizado.

6.3 Métodos static, campos static y la clase Math


Algunas veces un método realiza una tarea que no depende del contenido de ningún
objeto. Dicho método se aplica a la clase en la que está declarado como un todo, y se
conoce como método static o método de clase.

¿Por qué el método main se declara como static?

Cuando se ejecuta la máquina virtual de Java (JVM) con el comando java, la JVM trata
de invocar al método main de la clase que usted le específica, cuando no se han creado
objetos de esa clase. Al declarar a main como static, la JVM puede invocar a main sin
tener que crear una instancia de la clase. Cuando usted ejecuta su aplicación, especifica
el nombre de su clase como un argumento para el comando Java, como sigue

java NombreClase argumento 1 argumento2 ...

La JVM carga la clase especificada por NombreClasey utiliza el nombre de esa clase
para invocar al método main. En el comando anterior, NombreClase es un argumento de
línea de comandos para la JVM, que le indica cuál clase debe ejecutar. Después del
NombreClase, también puede especificar una lista de objetos Str ing (separados por
espacios) como argumentos de línea de comandos, que la JVM pasará a su aplicación.
Dichos argumentos pueden utilizarse para especificar opciones para ejecutar la
aplicación, su aplicación puede acceder a esos argumentos de línea de comandos y
utilizarlos para personalizar la aplicación.

6.4 Declaración de métodos con múltiples parámetros

Las palabras clave public y static

La declaración del método máximo comienza con la palabra clave public para indicar
que el método está “disponible para el público”: puede llamarse desde los métodos de
otras clases. Los métodos static en la misma clase pueden llamarse unos a otros de
manera directa, los que pertenecen a otra clase deben incluir el nombre de la clase en la
que se encuentran primero.

Ensamblado de cadenas mediante la concatenación

Concatenación de objetos String es el proceso de crear objetos String más grandes


utilizando los operadores “+” o “+=”. Al unir dos variables de diferentes tipos, estas se
convertirán en String.

6.5 Notas acerca de cómo declarar y utilizar los métodos

Formas de llamar a los métodos:

1. Usando el nombre de un método, esto cuando ambos pertenecen a la misma clase.

2. Usando una variable que contiene una referencia a un objeto, seguida de un punto (.)
y del nombre del método para llamar, esto cuando no es static.

3. Usando el nombre de la clase y un punto (.) para llamar a un método static.


Un método static sólo puede llamar directamente a otros métodos static si estos
pertenecen a la misma clase.

6.6 La pila de llamadas a los métodos y los registros de activación

Para comprender la forma en que Java realiza las llamadas a los métodos, necesitamos
considerar primero una estructura de datos (colección de elementos de datos
relacionados) conocida como pila. Esta se puede considerar como una analogía de una
pila de platos. Cuando se coloca un plato en ella, generalmente se coloca en la parte
superior, de manera similar, cuando se extrae un plato de la pila, este se extrae de la
parte superior. Las pilas se denominan estructuras de datos “último en entrar, primero
en salir. Cuando un programa llama a un método, el método llamado debe saber regresar
al que lo llamó.

La pila de ejecución del programa contiene la memoria para las variables locales
utilizadas en cada invocación de un método, durante la ejecución de un programa. Estos
datos se conocen como el registro de activación o marco de pila de la llamada a un
método. Cuando se hace la llamada a un método, el registro de activación para la
llamada es metido en la pila de ejecución del programa. Cuando el método regresa al
que lo llamó, el registro de activación para esa llamada al método es sacado de la pila y
esas variables locales son desechadas.

La cantidad de memoria en una computadora tiene disponible una determinada


capacidad para almacenar los registros de activación en la pila de ejecución del
programa. Si ocurren más llamadas a métodos de las que se puedan almacenar sus
registros de activación, se produce un error que es llamado desbordamiento de pila.

6.7 Promoción y conversión de argumentos

Es convertir el valor de un argumento, de ser posible, al tipo que el método recibirá en


su parámetro. Las reglas de promoción se aplican a las expresiones que contienen
valores de dos o más tipos primitivos, y a los valores primitivos que se pasan como
argumentos para los métodos. Los valores originales no son modificados ya que lo que
se envía es una copia. Una conversión puede producir pérdida de información.

6.8 Paquetes de la API de Java

Java cuenta con una gran cantidad de paquetes. Para consultar información acerca de los
métodos de una clase predefinida de Java se puede consultar la documentación para la
API de Java, en download.oracle.com/javase/6/docs/api/. Cuando visite este sitio, haga
clic en el vínculo Index para ver un listado en orden alfabético de todas las clases y los
métodos en la API de Java. Localice el nombre de la clase y haga clic en su vínculo para
ver la descripción en línea de la clase. Haga clic en el vínculo METHOD para ver una
tabla de los métodos de la dase.

6.11 Alcance de las declaraciones


Las declaraciones introducen nombres que pueden ser utilizados para hacer referencias
a dichas entidades de Java. El alcance es la parte del programa en la que puede ser
referenciada. Estas son las reglas básicas de alcance:

1. El alcance de la declaración de un parámetro es el cuerpo del método en el que


fue declarado.
2. El alcance de la declaración de una variable local es desde el punto en el cual es
declarada hasta el final del bloque en el que aparece.
3. El alcance de la declaración de una variable local que aparece en la sección de
inicialización del encabezado de una instrucción for es el cuerpo de la
instrucción for y las demás expresiones en el encabezado.
4. El alcance de un método o campo de una clase es todo el cuerpo de la clase.

Si una variable local o parámetro en un método tiene el mismo nombre que un campo
de la clase, el campo se “oculta” hasta que el bloque es ejecutado, esto es llamado
ocultación de variables (shadowing).

6.12 Sobrecarga de métodos

Es cuando se cuenta con más de un método con el mismo nombre pero con diferencias
en los parámetros (cantidad, tipo u orden).

Generalmente se utiliza para crear varios métodos con el mismo nombre y con
funciones similares pero con distintos tipos, diferente orden o números de argumentos.

Como se diferencian los métodos sobrecargados entre sí

Es en base en su firma: una combinación del nombre del método y del número, orden y
tipo de sus parámetros. Los nombres son ignorados ya que esto puede generar
ambigüedad.

Tipos de valores de retorno de los métodos sobrecargados

Los valores de retorno no causan ninguna diferencia en el reconocimiento de métodos


sobrecargados.