Professional Documents
Culture Documents
El cdigo de la mayora de las clases puede descomponerse en dos partes principales: una envoltura exterior pequea que simplemente da nombre a la clase y una parte interna mucho ms grande que hace todo el trabajo. public class < ombre!lase" # <parte interna> $ %a envoltura exterior de las di&erentes clases es muy parecida' su principal &inalidad es proporcionar un nombre a la clase. %a parte interna de la clase es el lugar en el que de&inimos los campos' los constructores y los m(todos que dan a los objetos de la clase sus caractersticas particulares y su comportamiento. )odemos resumir las caractersticas esenciales de estos tres componentes de una clase como sigue: * %os campos almacenan datos para que cada objeto los use. * %os constructores permiten que cada objeto se prepare adecuadamente cuando es creado. * %os m(todos implementan el comportamiento de los objetos. En +ava existen muy pocas reglas sobre el orden que se puede elegir para de&inir los campos' los constructores y los m(todos dentro de una clase. Es importante elegir un estilo y luego usarlo de manera consistente' porque de este modo las clases sern ms &ciles de leer y de comprender.
2.3.# Campos
%os campos almacenan datos para que un objeto los use. %os campos tambi(n son conocidos como variables de instancia. )uesto que los campos pueden almacenar valores que pueden variar a lo largo del tiempo' suponen un tipo de variables. %os campos son pequeas cantidades de espacio dentro de un objeto que pueden usarse para almacenar valores. ,odo objeto' una ve- creado' dispondr de un espacio para cada campo declarado en su clase. .private/public. <tipo" <nombre!ampo" .0 <valor1nicial".2' <nombre!ampo" .0 <valor1nicial".34 %os comentar$os se insertan en el cdigo de una clase para proporcionar explicaciones a los lectores humanos. ning5n e&ecto sobre la &uncionalidad de la clase. o tienen
6e introduce una sola lnea de comentario mediante los dos caracteres //. %os comentarios ms detallados' que &recuentemente ocupan varias lneas' se escriben generalmente en la &orma de comentarios multilnea: comien-an con el par de caracteres /* y terminan con el par */.
2.3.2 Constructores
%os constructores permiten que cada objeto sea preparado adecuadamente cuando es creado. Esta operacin se denomina inicializacin. El constructor iniciali-a el objeto en un estado ra-onable. 7no de los rasgos distintivos de los constructores es que tienen el mismo nombre que la clase en la que son de&inidos. %os campos del objeto se iniciali-an en el constructor' bien con valores &ijos' o bien con parmetros del propio constructor. Nota% en +ava' todos los campos son iniciali-ados automticamente con un valor por de&ecto' si es que no estn iniciali-ados explcitamente. El valor por de&ecto para los campos enteros es 8. 6in embargo' es pre&erible escribir explcitamente las asignaciones. o hay ninguna desventaja en hacer esto y sirve para documentar lo que est ocurriendo realmente.
.public/private. .<tipo:evuelto". <nombre;etodo" <.<tipo)aram" <nombre)aram"2'<tipo)aram" <nombre)aram" 3.= :istinguimos entre nombres de los parmetros dentro de un constructor o un m(todo' y valores de los parmetros &uera de un constructor o un m(todo: hacemos re&erencia a los nombres como parmetros formales y a los valores como parmetros actuales. )uesto que permiten almacenar valores' los parmetros &ormales constituyen otra clase de variables. El a(cance de una variable de&ine la seccin de cdigo en la que la variable puede ser accedida. 7n parmetro &ormal est disponible para un objeto slo dentro del cuerpo del constructor o del m(todo que lo declara. :ecimos que el alcance de un parmetro est restringido al cuerpo del constructor o del m(todo en el que es declarado. En cambio' el alcance de un campo es toda la clase y puede ser accedido desde cualquier lugar en la misma clase. 7n concepto relacionado con el alcance de una variable es el tiempo de vida de la variable. El t$empo "e )$"a de una variable describe cunto tiempo continuar existiendo la variable antes de ser destruida. El tiempo de vida de un parmetro se limita a una sola llamada de un constructor o m(todo. 7na ve- que complet su tarea' los parmetros &ormales desaparecen y se pierden los valores que contienen. )or el contrario' el tiempo de vida de un campo es el mismo tiempo de vida que el del objeto al que pertenece.
2.* As$+nac$,n
%as sentenc$as "e as$+nac$,n almacenan el valor representado por el lado derecho de la sentencia en una variable nombrada a la i-quierda. <variable" 0 <expresin"4 7na regla sobre las sentencias de asignacin es que el tipo de una expresin debe coincidir con el tipo de la variable a la que es asignada. %a misma regla se aplica tambi(n entre los parmetros &ormales y los parmetros actuales: el tipo de una expresin de un parmetro actual debe coincidir con el tipo de una variable parmetro &ormal.
Es importante distinguir entre signatura del m(todo y declaracin de campos porque son muy parecidos. )odemos decir que algo es un m(todo y no un campo porque est seguido de un par de par(ntesis: ?<@ y ?=@. Abs(rvese tambi(n que no hay un punto y coma al &inal de la signatura. El cuerpo del m(todo es la parte restante del m(todo' que aparece a continuacin del encabe-ado. Est siempre encerrado entre llaves: ?#? y @$@. %os cuerpos de los m(todos contienen las declaraciones y las sentencias que de&inen qu( ocurre dentro de un objeto cuando es invocado ese m(todo. !ualquier conjunto de declaraciones y sentencias' ubicado entre un par de llaves' es conocido como un bloque. )or lo que el cuerpo de una clase y los cuerpos de todos los m(todos de las clases son bloques. Existen' dos di&erencias signi&icativas entre las signaturas de los constructores de una clase y de los dems m(todos: por un lado los constructores tienen el mismo nombre que la clase en la que estn de&inidos' y por otro los m(todos siempre tienes un tipo de retorno <aunque sea void'= mientras que el constructor no tiene tipo de retorno4 el tipo de retorno se escribe exactamente antes del nombre del m(todo4 es una regla de +ava que el constructor no puede tener ning5n tipo de retorno. )or otro lado' tanto los constructores como los m(todos pueden tener cualquier n5mero de parmetros &ormales' inclusive pueden no tener ninguno. %os m(todos pueden tener una sentencia return y es la responsable de devolver un valor que coincida con el tipo de retorno de la signatura del m(todo. !uando un m(todo contiene una sentencia return' siempre es la 5ltima sentencia que se ejecuta del mismo porque una ve- que se ejecut esta sentencia no se ejecutarn ms sentencias en el m(todo.
Esta de&inicin di&iere ligeramente de la de&inicin ms &ormal de la especi&icacin del lenguaje +ava donde la signatura no incluye al modi&icador de acceso ni al tipo de retorno.
%os m!to"os "e acceso devuelven in&ormacin sobre el estado del objeto. 7n m(todo de acceso contiene generalmente una sentencia return para devolver in&ormacin de un valor en particular.
En realidad' +ava permite que los m(todos void contengan una &orma especial de sentencia de retorno en la que no se devuelve ning5n valor. Esta sentencia toma la &orma return4 y simplemente hace que el m(todo &inalice sin ejecutar ninguna lnea ms de cdigo.
)ar$a8(es (oca(es
* %as tres clases de variables pueden almacenar un valor acorde a su de&inicin de tipo de dato. * %os campos se de&inen &uera de los constructores y de los m(todos. * %os campos se usan para almacenar datos que persisten durante la vida del objeto' de esta manera mantienen el estado actual de un objeto. ,ienen un tiempo de vida que &inali-a cuando termina el objeto. * El alcance de los campos es la clase: la accesibilidad de los campos se extiende a toda la clase y por este motivo pueden usarse dentro de cualquier constructor o m(todo de clase en la que est(n de&inidos. * !omo son de&inidos como privados <private=' los campos no pueden ser accedidos desde el exterior de la clase. * %os parmetros &ormales y las variables locales persisten solamente en el lapso durante el cual se ejecuta un constructor o un m(todo. 6u tiempo de vida es tan largo como una llamada' por lo que sus valores se pierden entre llamadas. )or este motivo' act5an como lugares de almacenamiento temporales antes que permanentes. * %os parmetros &ormales se de&inen en el encabe-ado de un constructor o de un m(todo. Ieciben sus valores desde el exterior' se iniciali-an con los valores de los parmetros actuales que &orman parte de la llamada al constructor o al m(todo. * %os parmetros &ormales tienen un alcance limitado a su de&inicin de constructor o de m(todo. * %as variables locales se declaran dentro del cuerpo de un constructor o de un m(todo. )ueden ser iniciali-adas y usadas solamente dentro del cuerpo de las de&iniciones de constructores o m(todos. %as variables locales deben ser iniciali-adas antes de ser usadas en una expresin' no tienen un valor por de&ecto. * %as variables locales tienen un alcance limitado al bloque en el que son declaradas. o son accesibles desde ning5n lugar &uera de ese bloque. Nota. %a clase 6tring tiene' entre otros' los m(todos de acceso substring y length' con las siguientes signaturas en +ava: /JJ J Ieturn a neK string containing the characters &rom J begin1ndex to <end1ndex>9= &rom this string. J/ public 6tring substring<int begin1ndex' int end1ndex= El valor cero del ndice representa el primer carcter de una cadena. 6i end1ndex es superior a la longitud de la cadena >9 +ava genera un error <java.lang.6tring1ndexAutA&GoundsException=. /JJ J Ieturn the number o& characters in this string. J/ public int length< = Es decir que el m(todo de acceso length de la clase 6tring de +ava devuelve la cantidad de caracteres de una cadena.