Está en la página 1de 8

Captulo VII: Clases en Java Al fin!!!...

lo que hasta el captulo anterior, pareciera que hayamos estado repasando el lenguaje C/C++, puesto que Java, posee mucho de estos lenguajes. ero nos estamos adentrando a la esencia de la rogramaci!n "rientada#a o "$jetos. %n programa se construye a partir de un conjunto de clases. %na ve# definida e implementada una clase, es posi$le declarar elementos de esta clase de modo similar a como se declaran las varia$les del lenguaje &de los tipos primitivos int, double, String, '(. )os elementos declarados de una clase se denominan objetos de la clase. *e una +nica clase se pueden declarar o crear numerosos objetos. )a clase es lo gen,ricoes el patr!n o modelo para crear objetos. Cada o$jeto tiene sus propias copias de las varia$les miem$ro, con sus propios valores, en general distintos de los dem.s o$jetos de la clase. )as clases pueden tener varia$les static, que son propias de la clase y no de cada o$jeto. Conceptos Claves %na clase es una agrupaci!n de datos &varia$les o campos( y de funciones &m,todos( que operan so$re esos datos. A estos datos y funciones pertenecientes a una clase se les denomina variables y mtodos o funciones miembro. )a programaci!n orientada a o$jetos se $asa en la programaci!n de clases. %na clase es una agrupaci!n de datos &varia$les o campos( y de funciones &m,todos( que operan so$re esos datos. )a definici!n de una clase se reali#a en la siguiente forma/pu$lic0 class Classname 1 //lo de pu$lic es opcional // definici!n de varia$les y m,todos ... 2

donde la pala$ra public es opcional- si no se pone, la clase tiene la visi$ilidad por defecto, esto es, s!lo es visi$le para las dem.s clases del package. 3odos los m,todos y varia$les de$en ser definidos dentro del bloque 1...2 de la clase. %n objeto &en ingl,s, instance( es un ejemplar concreto de una clase. )as clases son como tipos de varia$les, mientras que los objetos son como varia$les concretas de un tipo determinado. Classname un"$jeto4 Classname otro"$jeto4 A continuacin se enumeran algunas caractersticas importantes de las clases: 5. 3odas las varia$les y funciones de Java de$en pertenecer a una clase. 6o hay varia$les y funciones glo$ales. 7. 8i una clase deriva de otra &extends(, hereda todas sus varia$les y m,todos. 9. Java tiene una jerarqua de clases est.ndar de la que pueden derivar las clases que crean los usuarios. %na clase s!lo puede heredar de una +nica clase &en Java no hay herencia m+ltiple(. 8i al definir una clase no se especifica de qu, clase deriva, por defecto la clase deriva de Object. )a clase Object es la $ase de toda la jerarqua de clases de Java. :. ;n un fichero se pueden definir varias clases, pero en un fichero no puede ha$er m.s que una clase public. ;ste fichero se de$e llamar como la clase public que contiene con e<tensi!n *.java. Con algunas e<cepciones, lo ha$itual es escri$ir una sola clase por fichero. =. 8i una clase contenida en un fichero no es public, no es necesario que el fichero se llame como la clase. >. )os m,todos de una clase pueden referirse de modo glo$al al objeto de esa clase al que se aplican por medio de la referencia this.

?. )as clases se pueden agrupar en packages, introduciendo una lnea al comien#o del fichero &package packageName (. ;sta agrupaci!n en packages est. relacionada con la jerarqua de directorios y ficheros en la que se guardan las clases.1 ara la creaci!n de un o$jeto se necesita el operador ne@, y que se declaren las varia$les de instancia dentro de una clase. Aediante una clase se pueden declarar varios o$jetos que tendr.n los mismos atri$utos. Creacin de Un Objeto nom$Bclase nom$Bclase&/valores0(4 nom$Bo$jetoCne@

Cuando se hace referencia a un m,todo este de$e estar declarado y desarrollado al igual que el o$jeto. ara declarar y desarrollar un m,todo de$e estar dentro de una clase y se de$e indicar el valor que devuelve, el nom$re y los valores que se le pasan. Definicin de los !todos

valor devuelto nom$reBm,todo&/valores0( 1 cuerpo4 2

8i tenemos que hacer referencia a las varia$les de instancia y los m,todos contenidos en un o$jeto se necesita el operador punto&.(. "$jeto.nom$Bm,todo& (4 "$jeto.nom$Bm,todo&valores(4 "$jeto.varia$le4
1Tomado de: Aprenda Java como si estuviera en Primero

Deamos un ;jemplo para ilustrar lo que se ha dicho"jemplo #$% *iseEe una Clase, para crear o$jetos del tipo Alumnos, en el cual, permita ingresar el nom$re, edad y 6ota de ciertos o$jetos de ese tipo. 8oluci!n5. *igite el siguiente c!digo 5 /FArchivo Alumnos.JavaF/ 7 import java<.s@ing.F4 9 pu$lic class Alumnos1 G //declaraci!n de los atri$utos : pu$lic 8tring 6om$re4 = pu$lic int ;dad4 > pu$lic dou$le 6ota4 ? H //declaraci!n de los m,todos 5I pu$lic void ;sta$lecer6om$re&( 55 1 57 6om$reCJ"ption ane.sho@Jnput*ialog&KJngrese el nom$re- K(4 59 2 5G pu$lic void ;sta$lecer;dad&int <( 5: 1 5= ;dadC<4//el valor reci$ido lo asigna a ;dad 5> 2 5? pu$lic void ;sta$lecer6ota&dou$le y( 5H 1 7I 6otaCy4 75 2 77 /F;ste m,todo, muestra todos los datos del 79 del o$jeto en pantallaF/ 7G pu$lic void Aostrar*atos&( 7: 1 7= 8tring salidaCK6om$re del AlumnoK+6om$re+KLn;dad- K+;dad+KLn6ota- K+6ota4 7> J"ption ane.sho@Aessage*ialog&null, salida(4 7? 2 7H 2

7. )uego guarde el archivo, Complelo, pero 6" lo ejecute. Con esto estamos creando nuestra Clase, con la cual, podremos construir "$jetos de este tipo. 9. Ahora, y en otro archivo digite las siguientes sentencias5 /FArchivo %saAlumnos.javaF/ 7 class %saAlumnos1 9 pu$lic static void main &8tring args /0( 1 G //declaramos y creamos un o$jeto del tipo Alumnos : Alumnos *atosCne@ Alumnos&(4 = //))amamos a los m,todos > *atos.;sta$lecer6om$re&(4 ? *atos.;sta$lecer;dad&7I(4 H *atos.;sta$lecer6ota&H.:(4 5I 55 //Ahora mostramos los *atos 57 *atos.Aostrar*atos&(4 59 2 5G 2 G. )uego Muarde el archivo, Complelo y ;jec+telo.

"&plicacin$ ;n el ejemplo anterior puede notar que, los atri$utos, son esas varia$les simples, es las cuales almacenaremos informaci!n relevante a los o$jetos que, crearemos a partir de esa clase. Adem.s que, los estamos declarando como p+$licos, lo cual indica que tenemos acceso directo desde cualquier otro archivo a los atri$utos. )os m,todos son del tipo public y no devuelven ning+n valor, por tal ra#!n son declarados como void. Adem.s que. ;l m,todo ;sta$lecer;dad y ;sta$lecer6ota, reci$en un argumento cada uno de ellos, el cual es asignado al respectivo atri$uto.

Constructores %n !onstructor es una funci!n, m,todo, etc, de las clases, la cual es llamada autom.ticamente cuando se crea un o$jeto de esa clase. or ser m,todos, los constructores tam$i,n aceptan par.metros. Cuando en una clase no especificamos ning+n tipo de constructor, el compilador aEade uno p+$lico por omisi!n sin par.metros, el cual 6" hace nada. Caractersticas de los Constructores 5. %n constructor, tiene el mismo nom$re de la clase a la cual pertenece. 7. 6o puede ser Neredado. 9. 6o retorna ning+n valor &6i void(, por lo cual no de$e especificarse ning+n tipo de dato. G. *e$e declararse como pu$lic, s!lo en casos realmente e<traordinarios ser. de otro tipo. 8upongamos una clase llamada *atos pu$lic class *atos 1 //declaracion de atri$utos pu$lic *atos&(4//constructor sin parametros pu$lic *atos&int ;dad( 1//Constructor con par.metros ;dadAC;dad4 2 2 "jemplo #$' 8e *esea crear un o$jeto del tipo Coordenadas, que indique, la posici!n de un punto en el plano cartesiano, y permita calcular la distancia e<istente con otro punto, adem.s del punto medio entre ellos. 5 /FArchivo Coordenadas.javaF/ 7 9 pu$lic class Coordenadas 1 G private int <,y4//Atri$utos : pu$lic Coordenadas &int <5 , int y5(//constructor = 1 > //asignamos esos valores ? <C<54

H yCy54 5I 2 55 pu$lic dou$le *istancia &int <5, int y5( 57 1 59 //este m,todo reci$e como parametros 5G //las coordenadas del segundo punto 5: dou$le *4 5= *CAath.sqrt&&<O<5(F&<O<5(+&yOy5(F&yOy5((4 5> return *4//Petornamops el valor de la distancia 5? 2 5H pu$lic void medio&int <5, int y5( 7I 1 75 dou$le p5, p74 77 p5C&<+<5(/74 79 p7C&y+y5(/74 7G 8ystem.out.println&K;l puntomedio esK+p5+K,K+p7(4 7: 2 7= 2 5 /FArchivo %saCoordenadas.javaF/ 7 pu$lic class %saCoordenadas 1 9 pu$lic static void main &8tring args /0(1 G Coordenadas Cne@ Coordenadas &5I,7I(4 : //calculamos la *istancia= 8ystem.out.println&K)a *istancia es- K+ .*istancia&:,=((4 > // unto Aedio ? . medio&:,=(4 H 2 5I 2 "&plicacin: %n m,todo, si va a devolver alg+n valor, ,ste de$e especificarse cuando se hace la definici!n del mismo, para el caso, el m,todo *istancia, devuelve el valor de la distancia, es por ello que lo especificamos como public double. Adem.s que, cuando reali#amos la llamada de ese m,todo, es en ese preciso lugar que aparecer. el valor que devuelve. or otra

parte, los atri$utos, son de acceso privado, lo cual implica que, s!lo podemos acceder a ellos, en la clase Coordenadas. (obrecarga Cuando en una clase, se definen un mismo m,todo, con diferente n+mero de par.metros, o $ien con el mismo numero de par.metros pero diferenci.ndose en la definici!n, en la cual, al menos un par.metro sea de diferente tipo, cuando esto sucede, se dice que el m,todo est. sobrecargado. "jemplo #$) Cree una aplicaci!n en Java, que imprima un n+mero imaginario. 6ota, los n+meros imaginarios, poseen una parte real y otra imaginaria, acompaEada por la constante i. 5 class Jmaginario 1 7 private int real, imag4 9 pu$lic Jmaginario&( G 1 : realCI4 = imagCI4 > 2 ? pu$lic Jmaginario&int <, int y( H 1 5I realC<4 55 imagCy4 57 2 59 pu$lic void Aostrar&( 5G 1 5: 8ystem.out.println&K;l 6umero Jmaginario es- K+real+K + K+imag+KiK(4 5= 2 5> 2 5 7 9 G : = class %saJmaginario1 pu$lic static void main &8tring args /0( 1 Jmaginario oJCne@ Jmaginario&:,=(4 oJ.Aostrar&(4 2 2

También podría gustarte