CAFP-MX Blogger Buscador

domingo, 30 de agosto de 2009

Acceso default

Una clase con acceso default se obtiene cuando no escribes algún modificador en la declaración de la clase. Una clase con acceso default sólo puede ser vista por otras clases dentro del mismo paquete. Por ejemplo:
Si una clase A y una clase B se encuentran en diferentes paquetes, la clase A tiene un acceso default por lo que la clase B no podrá crear instancias de la clase A, o incluso declarar una variable o tipo de retorno de clase A. La clase B, simplemente no sabe que la clase A existe y si lo anterior sucede habrán errores de compilación.
Miremos el siguiente archivo de código fuente:


package cert;
class Beverage{ }

Ahora veamos el segundo archivo de código fuente:


package exam.stuff;
import cert.Beverage;
class Tea extends Beverage{ }

Como podemos apreciar, la superclase Beverage está en diferente paquete de la subclase Tea. La sentencia import del segundo archivo intenta importar la clase Beverage. La clase Beverage compila, pero si intentamos compilar la clase Tea, nos saldrá el siguiente error de compilación:
Can't access class cert.Beverage. Class or interface must be public, in same package, or an accessible member class.
import cert.Beverage;
Tea no compilará por que la superclase Beverage tiene un acceso default y se encuentra en diferente paquete. Para solucionar este problema, tenemos dos opciones: Poner ambas clases en el mismo paquete, o bien, cambiar el modificador de acceso de Beverage a public.

sábado, 15 de agosto de 2009

Accesos de clase.

Cuando nosotros decimos que una clase A accede a otra clase B, significa que la clase A puede hacer alguna de las siguientes puntos:
  • Crea una instancia de la clase B.
  • Extiende a la clase B (es decir la clase B es superclase de A).
  • Accede a ciertos métodos y variables que pertenece a la clase B.
La palabra acceso significa visibilidad. Si la clase A no puede ver a la clase B significa que A no tiene modo de acceder a los métodos y variables de B.

Declaración y modificadores de clase.

El código siguiente es la estructura en la declaración de una clase:
class MyClass { }
El código anterior compila de maravilla, pero también podemos añadir a la declaración de la clase modificadores. Los modificadores caen dentro de dos categorías:
  • Modificadores de acceso: public, protected, private.
  • Modificadores de no acceso (que incluyen a strictfp, final, y abstract).
Modificadores de acceso.

En Java existen cuatro niveles de acceso pero únicamente tenemos tres modificadores de acceso. El cuarto control de acceso (ó nivel de acceso) es llamado default o package, que se utilizan de manera automática al no utilizar alguno de los tres modificadores de acceso existentes (public, protected o private). De esta manera, podríamos concluir que, toda clase, método o variable de instancia que se declare tiene un control de acceso.

Aunque los cuatro niveles de acceso funcionan correctamente para la mayoría de métodos y variables de instancia, una clase sólo puede ser declarada como public o con acceso default, ya que los otros niveles de acceso no tienen sentido para una clase.

miércoles, 5 de agosto de 2009

Reglas en la declaración de un archivo fuente.

  • Únicamente puede haber una clase public por archivo de código fuente.
  • Los comentarios pueden aparecer al comienzo o al final de alguna linea en el archivo de código fuente.
  • Si hay una clase public en el archivo, el nombre del archivo debe concidir con el nombre de la clase public.
    Por ejemplo: una clase declarada como public class Dog{ } debe estar en un archivo de código fuente llamado Dog.java.
  • Si la clase es parte de un paquete, la sentencia package debe estar en la primera linea, antes de cualquier sentencia import que pueda estar presente.
  • Si hay alguna(s) sentencia(s) import, deberá(n) ir entre la sentencia package (si la hay) y la declaración de la clase. Si no hay sentencia package, entonces la(s) sentencia(s) import deberá(n) ocupar la primera linea. Si no hay sentencias package ni import, entonces la declaración de la clase deberá ocupar la primera linea del archivo de código fuente.
  • Las sentencias import y package aplicar para todoas las clases dentro del archivo de código fuente. Es decir, no hay forma de declarar múltiples clases en un archivo y tenerlas en diferentes paquetes o usar diferentes importaciones.
  • Un archivo puede tener múltiples clases no public.
  • Los nombres de los archivos de código fuente no tienen que coincidir si sólo contienen clases no públicas.

sábado, 1 de agosto de 2009

Estándar de JavaBeans

JavaBeans son clases de Java que tienen propiedades. Para nuestros propósitos, pensamos en propiedades como variables de instancias private. Como son privadas, el único modo en el que podemos acceder a ellas desde fuera, es a través de los métodos de clase. Los métodos que cambian un valor de la propiedad son llamados métodos setters (o métodos establecer), y los métodos que recuperan el valor de una propiedad son llamados métodos getter (o métodos obtener).

Las reglas de nombrado que se necesitan saber para el examen son las siguientes:
  • Si la propiedad no es un boolean, el prefijo del método getter debe ser get.
    Ejemplo: getPromedio( ).
  • Si la propiedad es un boolean, el prefijo del método getter puede ser get ó is.
    Ejemplo: getVacio( ) ó isVacio( ).
  • El prefijo para los métodos setter debe ser set.
    Ejemplo: setEdad( ), setAltura( ).
  • Se siguen las mismas reglas de convención del código Java para los métodos, y sólo les añadimos el prefijo que le corresponda (get, set ó is).
  • Las firmas de los métodos setters deben ser public, con void como tipo de valor de retorno y un argumento que representa el tipo de la propiedad.
  • Las firmas de los métodos getters deben ser public, sin argumentos y poseen un tipo de valor de retorno que concuerda con el tipo de argumento del método setter para esa propiedad.
Las especificaciones de JavaBean soporta eventos, que permite a los componentes notificar a otros cuando pasa algo. El modelo de eventos es usado frecuentemente dentro de aplicaciones GUI. Los objetos que reciben la información en el momento que un evento sucede son llamados listeners.

Para el examen, se necesita saber que los métodos utilizados para añadir o remover listeners por medio de un evento deben seguir también un estándar.
  • El nombre del método de listener usado para registrar por medio de un evento de origen debe usar el prefijo add, seguido por el nombre del tipo de listener.
    Por ejemplo: addActionListener( ).
  • El nombre del método de listener usado para remover un listener deberá usar el prefijo remove, seguido del nombre del tipo de listener.
  • El tipo de listener a ser añadido o removido deberá ser pasado como un argumento del método.
Ejemplo de firmas válidas de métodos en JavaBeans:
public void setMyValue( int v)
public int getMyValue( )
public boolean isMyStatus( )
public void addMyListener( MyListener m)
public void removeMyListener( MyListener m )


Ejemplo de fimas de métodos inválidas en JavaBeans:
void setCustomerName( String s ) //No es public.
public void modifyMyValue( int v) //Es incorrecto el uso de modify.
public void addXListener( MyListener m ) //Los tipos de listeners no concuerdan.

miércoles, 29 de julio de 2009

Convenciones en el código de Sun de Java.

Clases: La primera letra debe ser en mayúscula, si el nombre está compuesto de dos o más palabras, entonces la primera letra de cada palabra debe ser en mayúscula. Los nombres de las clases debe ser sustantivos.
Ejemplo: Perro, Cuenta, RelojDigital.
Interfaces: Únicamente difieren con las clases en que los nombres de las interfaces deben ser adjetivos.
Ejemplo: Imprimibles, Serializables, Portables.
Métodos: Los nombres de los métodos deben empezar siempre en minúscula y si está compuesto de dos o mas palabras, entonces la primera letra de cada palabra debe ser en mayúscula. Los nombres de los métodos normalmente se tratan de un verbo seguido de sustantivos.
Ejemplo: obtenerHora, meterSaldo, hacerCalculo.
Variables: El formato es igual que en los métodos. Sun recomienda que los nombres sean cortos, claros, y significativos.
Ejemplo: miSaldo, bonoAnual, mediaPoblacional.
Constantes: Las constantes en Java se crean con las palabras claves static y final. Los nombres de las constantes se escriben en mayúsculas y si constan de dos o más palabras, deberán ir separadas por subrayas (_).
Ejemplo: INTERES, IVA, ALTURA_MAXIMA.

lunes, 27 de julio de 2009

Lista completa de palabras reservadas en Java.


abstractbooleanbreakbytecasecatch
charclassconstcontinuedefaultdo
doubleelseextendsfinalfinallyfloat
forgotoifimplementsimportinstanceof
intinterfacelongnativenewpackage
privateprotectedpublicreturnshortstatic
strictfpsuperswitchsynchronizedthisthrow
throwstransienttryvoidvolatilewhile
assertenum




assert fué añadida en la versión 1.4
enum
fue añadida en la versión 1.5