Académique Documents
Professionnel Documents
Culture Documents
Las Clases
Introduccin .......................................................................................................... 2
Clases vs. Objetos. ................................................................................................ 2
Las Clases ............................................................................................................. 2
Mdulo y Tipo .................................................................................................. 2
Un sistema de Tipos Uniforme ............................................................................. 3
Punto ................................................................................................................. 3
Caractersticas ................................................................................................... 3
Atributos y rutinas ............................................................................................ 3
Acceso Uniforme .............................................................................................. 4
Definicin de la Clase ....................................................................................... 5
Estilo orientado a Objetos ..................................................................................... 5
Instancia Actual ................................................................................................ 5
Clientes y Proveedores ..................................................................................... 6
Llamar a una caracterstica ............................................................................... 6
Principio de Receptor nico.............................................................................. 7
Llamadas Calificadas y No Calificadas ............................................................ 7
Ocultacin de Informacin. .................................................................................. 7
Modificadores de Acceso ................................................................................. 8
Como se ejecuta algo en OO ................................................................................ 8
Introduccin
En este captulo, estudiaremos las tcnicas fundamentales del anlisis, el diseo
y la programacin orientada a objetos.
Los bloques bsicos de la construccin son las clases.
Las Clases
Una vez comprendida la diferencia entre clase y objeto, vamos a intentar
comprender la importancia de las clases en la POO. Para entender el enfoque orientado
a objetos, es necesario comprender que las clases desempean dos papeles por separado:
mdulo y tipo.
Mdulo y Tipo
Todo LP incluye siempre alguna facilidad modular y algn sistema de tipos.
Describir los tipos bsicos como un TAD y por tanto como clases es simple
y natural: definir la clase Integer con caractersticas que abarquen
operaciones de suma u operaciones como menor igual
Al definir los tipos bsicos como clases, se les permite participar en todos los
campos de la Orientacin a Objetos. En caso contrario, deberamos controlar
diferentes limitaciones y casos especiales.
Punto
Veremos ahora el estudio de un ejemplo sencillo.
Para ello, pensemos en la nocin de Punto.
Caractersticas
En el ejemplo que estamos tratando, para caracterizar un Punto se necesitarn
cuatro funciones de consulta: x, y, (rho) y (theta). La funci
n x da la abscisa de un
punto (coordenada horizontal), y da la ordenada del punto (coordenada vertical) , es la
distancia al origen y esngulo
el
con el eje hjorizontal. X e y representan la
coordenadas cartesianas, mientras que (rho) y (theta) son las coordenadas polares.
Atributos y rutinas
Para un tipo abstracto de dato como Punto est caracterizado por un conjunto de
funciones que describen las operaciones aplicables a las instancias de un TAD. En las
clases las funciones se traducen en caractersticas.
En el ejemplo del punto, hay dos representaciones comunes para los puntos:
cartesiana y polares. Si nos centramos en la representacin cartesiana, cada instancia de
la clase, tendr dos campos que representan la x y la y.
Sin embargo, para obtener (rho) y (theta), se requiere de algunoslculos.
c
Para calcular (rho) tendremos que hacerz lacuadrada
ra
de la suma de sus
componentes, y para (theta) calcularemos el arctg(y/x) para x distinto de 0.
En este ejemplo, vemos la necesidad de dos tipos/clases de caractersticas.
-
Hay una discusin adicional que afecta exclusivamente a las rutinas. Si estas
rutinas proporcionan algn resultado, las denominaremos funciones. En este caso, las
rutinas seran aquellas que calculan la representacin polar.
Acceso Uniforme
Axioma: Todos los servicios ofrecidos por un mtodo deben estar disponibles
a travs de una notacin uniforme sin importar si estn implementados a travs de
almacenamiento o de clculo.
En muchos casos, debera ser posible manipular los objetos, por ejemplo p1 sin
tener que preocuparse sobre si la representacin interna del punto p1 es cartesiana o
polar. Desde este punto nos hacemos una pregunta Es apropiado distinguir entre
atributos y funciones?
La respuesta la tendremos dependiendo de a quien pertenezca el punto de vista.
Si lo vemos desde el punto de vista del proveedor, o persona que ha creado la clase
punto, o desde el punto de vista del cliente, o persona que ha creado una clase que
utiliza la clase Punto.
Para el proveedor la distincin entre atributos y funciones es necesaria y
significativa, puesto que en algunos casos se puede querer implementar una
caracterstica por almacenamiento y en otros por clculo, y esta decisin se debe reflejar
en alguna parte. Lo que sera errneo, sera forzar a los clientes a tener en cuenta esta
diferencia. Si se est accediendo a p1 es deseable poder obtener su x o sin tener que
saber la forma en que estn implementadas estas consulta.
El principio establece que el cliente debe ser capaz de acceder a una propiedad
de un objeto usando una nica notacin, sin que importe si la propiedad est
implementada por memoria o por clculo. Seguiremos este principio para denotar ms
adelante la invocacin de una caracterstica x para p1 que ser: p1.x, ya sea para acceder
a un campo de un objeto como si se ejecuta una rutina.
Definicin de la Clase
Veamos ahora un ejemplo concreto en Java.
package eliminar;
public class Punto
{
private int x;
private int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public double rho()
{
return java.lang.Math.sqrt(x^2 + y^2);
}
public void trasladar(int a, int b)
{
x+=a;
y+=b;
}
}
Instancia Actual
En el cdigo de la rutina trasladar, parece sencillo lo que hace: traslada las
coordenadas del punto p1 su abscisa y su ordenada segn el valor de a y b. Pero si nos
fijamos con detenimiento, no se ha indicado a que punto nos estamos refiriendo en
concreto. A que x y a que y le estamos sumando a y b?.
Para responder a esta pregunta diremos que el cdigo de una clase, describe las
propiedades y el comportamiento de los objetos de un cierto tipo. Lo que
formalmente llamaremos la instancia actual de la clase. En algn momento quiz sea
necesario referirse a la instancia de una clase usando la palabra clase this.
Un ejemplo de cuando puede ser necesario this, puede ser el siguiente:
imaginemos que queremos controlar que cuando se llame a la rutina distancia, el
argumento punto al que se quiere trasladar sea distinto al de la instancia actual. En el
caso que fuera igual, el resultado de distancia sera 0. Veamos ahora el cdigo que
quedara:
Clientes y Proveedores
Hay dos formas de utilizar la clase Punto. Una es heredar de ella, y otra es ser un
cliente de punto. La forma ms simple de ser un cliente de Punto es declarar una
entidad del tipo correspondiente.
Sea P una clase. Una clase C que contenga una definicin de la forma
Pnom, se dice que es un cliente de P. Se dice entonces que P es un proveedor de
C.
Hay que tener en cuenta que en esta definicin nom puede ser tanto un atributo o
funcin de C o una entidad local o un argumento de una rutina de C.
package eliminar;
public class Graficos
{
private Punto p;
public Punto getP() {
return p;
}
public void setP(Punto p) {
this.p = p;
}
public void rutina ()
{
p.trasladar(1, 3);
}
}
x.f
x.f(u,v)
En llamadas de este tipo, x, se denomina receptor de la llamada, y es una
entidad o expresin que en tiempo de ejecucin estar conectada con un objeto.
Ocultacin de Informacin.
Las clases que hasta ahora habamos definido, tenan sus caractersticas
exportadas a todos los posibles clientes. Como es lgico esto no es siempre aceptable.
Modificadores de Acceso
Por defecto, en java cuando declaramos una propiedad, tienen el modificador
default o sin modificador y por lo tanto estn disponibles para todos los clientes que
pertenezcan al paquete.
int x; /*Este atributo es visible por los clientes del mismo paquete.*/
En Java existen diferentes modificadores de acceso: public, private, protected, y
[default]. Pasamos a detallar cada uno de ellos:
Accesibilidad
declarada
Significado
public
private
protected
[default]
Para obtener un cdigo ejecutable se deben ensamblar las clases para formar
sistemas. Para crearlo se necesitan tres elementos:
-