You are on page 1of 4

CAPITULO 2.

COMPRENDER LAS DEFINICIONES DE CLASE


2.3 Campos, constructores m!to"os

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.

2.& Pasar "atos me"$ante par'metros


%a manera en que los constructores y los m(todos reciben valores es mediante sus Parmetros %os parmetros se de&inen en el encabe-ado de un constructor o un m(todo:

.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.

2.- M!to"os "e Acceso


%os m!to"os se componen de dos partes: un encabe-ado y un cuerpo. .<comentario:escriptivo". .public/private. <tipo:evuelto" <nombre;etodo"<2<parmetro"3= #<cuerpo"$ >" 6ignatura9

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.

2.. M!to"os "e mo"$/$cac$,n


C los m(todos que modi&ican el estado de su objeto los llamamos mtodos de modificacin <o slo modificadores). %os m!to"os "e mo"$/$cac$,n cambian el estado de un objeto. %a signatura de un m(todo de modi&icacin normalmente tiene tipo de retorno void y un solo parmetro &ormal' el nuevo valor del campo a modi&icar. 7n tipo de retorno void signi&ica que el m(todo no devuelve ning5n valor cuando es llamado4 es signi&icativamente di&erente de todos los otros tipos de retorno. En el cuerpo de un m(todo void' esta di&erencia se re&leja en el hecho de que no hay ninguna sentencia return.9 %os m(todos de modi&icacin siempre tienen a menos una sentencia de asignacin. El sumar <o restar= una cantidad al valor de una variable es algo tan com5n que existe un operador de asignacin compuesto' especial para hacerlo: ?D0@. <variablle" D0 <expresion"4 <variablle" 00 <expresion"4 ota: convenciones +ava sobre m(todos de acceso y de modi&icacin. En +ava' los nombres de los m(todos de acceso suelen comen-ar con la palabra ?get@ y los nombres de los m(todos de modi&icacin con la palabra ?set@.

2.1 Impr$m$r "es"e M!to"os


El m(todo S stem.out.pr$nt(n23parametro45 imprime su parmetro en la terminal de texto. 7na sentencia como 6ystem.out.println<EF %nea Glue+E=4 imprime literalmente la cadena que aparece entre el par de comillas dobles. ,odas estas sentencias de impresin son invocaciones al m(todo println del objeto 6ystem.out que est construido dentro del lenguaje +ava. !uando se usa el smbolo ?D@ entre una cadena y cualquier otra cosa' este smbolo es un operador de concatenacin de cadenas <es decir' concatena o re5ne cadenas para crear una nueva cadena= en lugar de ser el operador aritm(tico de suma. El m(todo println se puede llamar sin contener ning5n parmetro de tipo cadena. Esto est permitido y el resultado de la llamada ser dejar una lnea en blanco entre esta salida y cualquier otra que le siga.

2.## 6acer E(ecc$ones. La sentenc$a con"$c$ona(


7na sentenc$a con"$c$ona( reali-a una de dos acciones posibles basndose en el resultado de una prueba4 tambi(n son conocidas como sentencias if. 6e eval5a el resultado de una veri&icacin o prueba: si el resultado es verdadero entonces hacemos una cosa' de lo contrario hacemos algo di&erente. 7na sentencia condicional tiene la &orma general descrita en el siguiente pseudo cdi!o" i& <se lleva a cabo alguna prueba que da un resultado verdadero o &also= # 6i la prueba dio resultado verdadero# e$ecutar estas sentencias $ else # 6i el resultado dio falso# e$ecutar estas sentencias $ %a prueba que se usa en una sentencia condicional es un ejemplo de una e%presin booleana. %as e7pres$ones 8oo(eanas tienen slo dos valores posibles: verdadero o &also <true/&alse=. 6e las encuentra com5nmente controlando la eleccin entre los dos caminos posibles de una sentencia condicional.

2.#3 9ar$a8(es (oca(es


7na )ar$a8(e (oca( es una variable que se declara y se usa dentro de un solo m(todo. 6u alcance y tiempo de vida se limitan a los del m(todo. Es muy com5n iniciali-ar variables locales cuando se las declara4 las declaraciones de las variables locales son muy similares a las declaraciones de los campos pero las palabras private o public nunca &orman parte de ellas. ,al como ocurre con los parmetros &ormales' las variables locales tienen un alcance que est limitado a las sentencias del m(todo al que pertenecen. 6u tiempo de vida es el tiempo de la ejecucin del m(todo: se crean cuando se invoca un m(todo y se destruyen cuando el m(todo termina. %os constructores tambi(n pueden tener variables locales. %as variables locales se usan &recuentemente como lugares de almacenamiento temporal para ayudar a un m(todo a completar su tarea. Cu$"a"o' una variable local del mismo nombre que un campo evitar que el campo sea accedido dentro de un m(todo.
9

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.

2.#& Campos, par'metros

)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.

You might also like