viernes, 8 de noviembre de 2013

VARIABLES MIEMBRO - II

Las variables miembro del argumento implícito se acceden directamente o precedidas por la palabra this y el operador punto. Las variables miembro pueden ir precedidas en su declaración por uno de los modificadores de acceso: public. prívate, protected y package (que es el valor por defecto y puede omitirse). Junto con los modificadores de acceso de la clase {public y package). determinan qué clases y métodos van a tener permiso para utilizar la clase y sus métodos y variables miembro. 
En el Apartado 3.11, en la página 60. se especifican con detalle las consecuencias de estos modificadores de acceso. Existen otros dos modificadores (no de acceso) para las variables miembro: 
  1. transient: indica que esta variable miembro no forma paite de la persistencia (capacidad de los objetos de mantener su valor cuando termina la ejecución de un programa) de un objeto y por tanto no debe ser señalizada (convertida en flujo de caracteres para poder ser almacenada en disco o en una base de datos) con el resto del objeto. 
  2. rolatile: indica que esta variable puede ser utilizada por distintas threads sincronizadas (ver Apartado 6.3. en la página 131) y que el compilador no debe realizar optimizaciones con esta variable. 
Al nivel de estos apuntes, los modificadores transient y rolatile no serán utilizados.

VARIABLES MIEMBRO - I

A diferencia de la programación algorítmica clásica, que estaba centrada en las funciones, la programación orientada a objetos está centrada en los datos. Una clase está constituida por unos datos y unos métodos que operan sobre esos datos. 3.3.1 Variables miembro de objeto Cada objeto, es decir cada ejemplar concreto de la clase, tiene su propia copia de las variables miembro. Las variables miembro de una clase (también llamadas campos) pueden ser de tipos primitivos (boolecm. int, long, double, ...) o referencias a objetos de otra clase (composición). 
Un aspecto muy importante del conecto funcionamiento de los programas es que 110 haya datos sin inicializar. Por eso las variables miembro de tipos primitivos se inicializan siempre de modo automático, incluso antes de llamar al constructor (false para boolecm, el carácter nulo para citar y cero para los tipos numéricos). De todas formas, lo más adecuado es inicializarlas también en el constructor. Las variables miembro pueden también inicializarse explícitamente en la declaración, como las variables locales, por medio de constantes o llamadas a métodos (esta inicialización no está permitida en C++). Por ejemplo,

long nDatos = 100;

Las variables miembro se inicializan en el mismo orden en que aparecen en el código de la clase. Esto es importante porque unas variables pueden apoyarse en otras previamente definidas. Cada objeto que se crea de una clase tiene su propia copia de las variables miembro. Por ejemplo, cada objeto de la clase Circulo tiene sus propias coordenadas del centro .y e y, y su propio valor del radio r.
 Los métodos de objeto se aplican a un objeto concreto poniendo el nombre del objeto y luego el nombre del método, separados por un punto. A este objeto se le llama argumento implícito. Por ejemplo, para calcular el área de un objeto de la clase Circulo llamado el se escribirá: cl.areaQ;.

jueves, 7 de noviembre de 2013

EJEMPLO DE DEFINICIÓN DE UNA CLASE

// fichero Circulo.java
public class Circulo extends Geometria {
static int numCirculos = 0/
public static final double PI=3.14159265358979323846;
public double x, y, r;
public Circulo(double x, double y, double r) {
this.x=x; this.y=y; this.r=r;
numCirculos++;
}

public Circulo(double r) { this(0.0, 0.0, r) ; }
public Circulo(Circulo c) { this(c.x, c.y, c.r); }
public Circulo() { this(0.0, 0.0, 1.0); }
public double perimetroO { return 2.0 * PI * r; }
public double areaO { return PI * r * r; }
// método de objeto para comparar circuios
public Circulo elMayor(Circulo c) {
if (this.r>=c.r) return this; else return c;
}
// método de clase para comparar circuios
public static Circulo elMayor(Circulo c, Circulo d) {
if (c.r>=d.r) return c; else return d;
}
} // fin de la clase Circulo

En este ejemplo se ve cómo se definen las variables miembro y los métodos (cuyos nombres se han resaltado en negrita) dentro de la clase. Dichas variables y métodos pueden ser de objeto o de clase (static). Se puede ver también cómo el nombre del fichero coincide con el de la clase public con la extensión *.java.

miércoles, 6 de noviembre de 2013

Concepto de Interface

Una interface es un conjunto de declaraciones de funciones. Si tina clase implementa (implements) una interface. debe definir todas las funciones especificadas por la interface. Las interfaces pueden definir también variables finales (constantes). 
Una clase puede implementar más de una interface. representando una alternativa a la herencia múltiple. En algunos aspectos los nombres de las interfaces pueden utilizarse en lugar de las clases. 
Por ejemplo, las interfaces sirven para definir referencias a cualquier objeto de cualquiera de las clases que implementan esa interface. 
Con ese nombre o referencia, sin embargo, sólo se pueden utilizar los métodos de la interface. Éste es un aspecto importante del polimorfismo. 
Una interface puede derivar de otra o incluso de varias interfaces. en cuyo caso incorpora las declaraciones de todos los métodos de las interfaces de las que deriva (a diferencia de las clases, las interfaces de Java sí tienen herencia múltiple).

martes, 5 de noviembre de 2013

CONCEPTOS BÁSICOS

Concepto de Clase 

Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan sobre esos datos. La definición de una clase se realiza en la siguiente forma:

[public] class Classname {
// definición de| variables y métodos
}

donde la palabra public es opcional: si 110 se pone, la clase tiene la visibilidad por defecto, esto es. sólo es visible para las demás clases delpackage. Todos los métodos y variables deben ser definidos dentro del bloque {...} de la clase. U11 objeto (en inglés, instance) es un ejemplar concreto de una clase. Las clases son como tipos de variables, mientras que los objetos son como variables concretas de un tipo determinado.

Classname unObjeto;
Classname otroObjeto;

CONCEPTOS BÁSICOS - características importantes

A continuación se enumeran algunas características importantes de las clases: 
  1. Todas las variables y funciones de Java deben pertenecer a una clase. No hay variables y funciones globales.
  2. Si una clase deriva de otra {extencls). hereda todas sus variables y métodos. 
  3. Java tiene una jerarquía de clases estándar de la que pueden derivar las clases que crean los usuarios. 
  4. Una clase sólo puede heredar de una única clase (en Java no hay herencia múltiple). Si al definir una clase 110 se especifica de qué clase deriva, por defecto la clase deriva de Object. La clase Object es la base de toda la jerarquía de clases de Java. 
  5. E11 un fichero se pueden definir varias clases, pero en un fichero 110 puede haber más que una clase public. Este fichero se debe llamar como la clase public que contiene con extensión *.java. Con algunas excepciones, lo habitual es escribir una sola clase por fichero. 
  6. Si una clase contenida en un fichero 110 es public. 110 es necesario que el fichero se llame como la clase.
  7. Los métodos de una clase pueden referirse de modo global al objeto de esa clase al que se aplican por medio de la referencia this. 
  8. Las clases se pueden agrupar en packages. introduciendo una línea al comienzo del fichero {package packageName;). Esta agrupación en packages está relacionada con la jerarquía de directorios y ficheros en la que se guardan las clases.

viernes, 1 de noviembre de 2013

CLASES EN JAVA

Las clases son el centro de la Programación Orientada a Objetos (OOP - Object Oriented Programming). Algunos de los conceptos más importantes de la POO son los siguientes: 
  1. Encapsulación. Las clases pueden ser declaradas como públicas (public) y como package (accesibles sólo para otras clases del package). Las variables miembro y los métodos pueden ser public. prívate. protected y package. De esta forma se puede controlar el acceso y evitar un uso inadecuado. 
  2. Herencia. Una clase puede derivar de otra (extends), y en ese caso hereda todas sus variables y métodos. Una clase derivada puede añadir nuevas variables y métodos y/o redefinir las variables y métodos heredados. 
  3. Polimorfismo. Los objetos de distintas clases pertenecientes a una misma jerarquía o que implementan una misma interface pueden tratarse de una forma general e individualizada, al mismo tiempo. Esto, como se ha visto en el ejemplo del Capítulo 1. facilita la programación y el mantenimiento del código. 
En este Capítulo se presentan las clases y las interfaces tal como están implementadas en el lenguaje Java.