12.07.2015 Views

Desarrollo de proyectos informáticos con tecnología Java

Desarrollo de proyectos informáticos con tecnología Java

Desarrollo de proyectos informáticos con tecnología Java

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

42CAPÍTULO 2. CLASESBuenas prácticas y <strong>con</strong>vencionesEn general, se <strong>con</strong>si<strong>de</strong>ra una buena práctica <strong>de</strong>clarar los atributos <strong>de</strong> una clasecomo privados (private) y si necesitamos acce<strong>de</strong>r a ellos para leer sus valores omodificarlos utilizaremos los métodos get o set. En caso <strong>de</strong> que el tipo <strong>de</strong>l valor<strong>de</strong>vuelto sea boolean se utilizará is en vez <strong>de</strong> set, por ejemplo isNuevo() envez <strong>de</strong> getNuevo() si el valor que se retorna es un boolean (true o false).A<strong>de</strong>más <strong>de</strong> los modificadores que nos permiten <strong>de</strong>finir la visibilidad <strong>de</strong> atributosy métodos <strong>de</strong> una clase, en <strong>Java</strong> existen otros modificadores que tambiénse pue<strong>de</strong>n aplicar sobre la <strong>de</strong>finición <strong>de</strong> atributos y métodos: static y final.2.6. Modificadores static y final.Un atributo <strong>de</strong> una clase se pue<strong>de</strong> modificar <strong>con</strong> la palabra reservada static,<strong>con</strong> ello indicamos que el atributo no pertenece a las instancias <strong>de</strong> la clase si noa la propia clase. ¿Qué quiere <strong>de</strong>cir esto?, pues que no existe una copia <strong>de</strong> eseatributo en cada uno <strong>de</strong> los objetos <strong>de</strong> la clase, si no que existe una única copiaque es compartida por todos los objetos <strong>de</strong> la clase. Por ello, a los atributosstatic se les llama atributos <strong>de</strong> la clase.Una <strong>con</strong>secuencia <strong>de</strong> lo anterior es que para acce<strong>de</strong>r a los atributos static<strong>de</strong> una clase no necesitamos crear una instancia <strong>de</strong> la clase, po<strong>de</strong>mos acce<strong>de</strong>r aellos a través <strong>de</strong>l nombre <strong>de</strong> la clase.De igual modo, po<strong>de</strong>mos modificar los métodos <strong>de</strong> una clase <strong>con</strong> la palabrareserva static. A estos métodos se les llama métodos <strong>de</strong> la clase, y, al igual que<strong>con</strong> los atributos static, po<strong>de</strong>mos usarlos a través <strong>de</strong>l nombre <strong>de</strong> la clase, sinnecesidad <strong>de</strong> crear ninguna instancia <strong>de</strong> la clase. Pero existe una restricción, losmétodos estáticos <strong>de</strong> una clase sólo pue<strong>de</strong>n acce<strong>de</strong>r a atributos estáticos u otrosmétodos estáticos <strong>de</strong> la clase, pero nunca a atributos o métodos que no lo sean.¿Ves porqué? ¿Qué ocurriría si <strong>de</strong>s<strong>de</strong> un método estático y usando el nombre<strong>de</strong> la clase intentases acce<strong>de</strong>r a un atributo <strong>de</strong> instancia <strong>de</strong> la clase?En el siguiente ejemplo <strong>de</strong> código hemos añadido un <strong>con</strong>tador para saber elnúmero <strong>de</strong> instancias <strong>de</strong> la clase Persona que se han creado:1 package t i p o s ;23 public c l a s s Persona implements Contacto {4 private S t r i n g nombre ;5 private S t r i n g a p e l l i d o s ;6 private S t r i n g t e l e f o n o ;7 private s t a t i c int n I n s t a n c i a s ;89 public Persona ( ) {10 super ( ) ;11 i n i c i a A t r i b u t o s ( ) ;12 }1314 public s t a t i c int g e t N I n s t a n c i a s ( ) {15 return n I n s t a n c i a s ;16 }Fíjate que el método getNInstancias() que acce<strong>de</strong> al atributo nInstanciases estático. En el siguiente ejemplo <strong>de</strong> código se está utilizando este métodoestático a través <strong>de</strong>l nombre <strong>de</strong> la clase y a través <strong>de</strong> una instancia <strong>con</strong>creta:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!