Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Pensar en objetos
Segn lo estudiado hasta ahora, podramos pensar en un programa
como si fuera una lista de instrucciones que le indican a la mquina qu
hacer. En cambio, desde la POO un programa es un conjunto de objetos
que dialogan entre s para realizar las distintas tareas programadas.
(De cualquier manera el programador tiene que escribir instrucciones,
pero en POO las inserta en los mtodos de las clases, en las cuales suele
apoyarse usando mtodos de otras clases.)
Clases y objetos
Del ejemplo expuesto anteriormente podemos deducir que la POO se
basa en la observacin de que, en el mundo real, los objetos se
construyen a partir de otros objetos. La combinacin de estos objetos es
un aspecto de dicha programacin, pero tambin incluye mecanismos y
caractersticas que hacen que la creacin y el uso de objetos sea
sencillo y flexible. Un mecanismo importantsimo es la clase y el
encapsulamiento y la herencia son dos propiedades o caractersticas
poderosas.
Qu es una clase de objetos? Pongamos un ejemplo: piense en un
molde para hacer flanes; el molde es la clase y los flanes los objetos.
Esto es, si disponemos de un molde de un litro para hacer flanes de
vainilla (ingredientes: leche, vainilla, azcar, etc.), el molde agrupa las
propiedades comunes a todos los flanes de vainilla, pero no todos los
flanes tienen por qu tener la misma cantidad de cada ingrediente. Esto
es, una clase equivale a la generalizacin de un tipo especfico de
objetos, pero cada objeto que construyamos de esa clase tendr sus
propios datos.
Un objeto de una determinada clase se crea en el momento en que
se invoca al operador new para dicha clase. Por ejemplo, la siguiente
lnea crea un objeto de la clase o tipo CCuenta y asigna a la variable
cuenta01 una referencia al mismo.
Objeto
M
Atributos
Mensajes
Mtodos
{
// Cuerpo de la clase: atributos y mtodos
}
Observamos que para declarar una clase hay que utilizar la palabra
reservada class seguida del nombre de la clase y del cuerpo de la
misma. El cuerpo de la clase incluir entre { y } sus miembros:
atributos y mtodos.
Atributos
Los atributos son las caractersticas individuales que diferencian un
objeto de otro. El color de una ventana Windows la diferencia de otras;
el D.N.I. de una persona la identifica frente a otras; el nmero de una
cuenta la distingue entre otras; etc. Pensando en la clase de objetos
CCuenta, elegimos los atributos de inters que van a definir esta clase
de objetos:
// Atributos
private string nombre;
private string cuenta;
private double saldo;
private double tipoDelnters;
// Mtodos
public void asignarNombre(string nom)
{
if (nom.Length == 0)
{
System.Console.WriteLine("Error: cadena vacia");
return;
}
nombre = nom;
}
public string obtenerNombre()
{
return nombre;
}
public void asignarCuenta(string cue)
{
if (cue.Length == 0)
{
System.Console.WriteLine("Error: cuenta no vlida");
return;
}
cuenta = cue;
}
public string obtenerCuenta( )
{
return cuenta;
}
public double estado()
{
return saldo;
}
public void ingreso(double cantidad)
{
if (cantidad < 0)
{
System.Console.WriteLine("Error: cantidad negativa");
return;
}
saldo = saldo + cantidad;
}
public void reintegro(double cantidad)
}
Veamos otro ejemplo:
Pensemos en una aplicacin de tipo grfica en donde requerimos
manipular
rectngulos.
Podramos
crear
una
clase
denominada Rectangulo, que describa las caractersticas comunes a
estas figuras planas que son las siguientes:
Los contructores
Un objeto de una clase se crea llamando a una funcin especial
denominada constructor de la clase. El constructor se llama de forma
automtica cuando se crea un objeto, para situarlo en memoria e
inicializar los miembros dato declarados en la clase. El constructor tiene
el mismo nombre que la clase. Lo especfico del constructor es que no
tiene tipo de retorno.
class Rectangulo
{
int x;
int y;
int ancho;
int alto;
Rectangulo(int x1, int y1, int w, int h)
{
x=x1;
y=y1;
ancho=w;
alto=h;
}
}
El constructor recibe cuatro nmeros que guardan los
parmetros x1, y1, w y h, y con ellos inicializa los miembros
dato x, y, ancho y alto.
Una clase puede tener ms de un constructor. Por ejemplo, el siguiente
constructor crea un rectngulo cuyo origen est en el punto (0, 0).
class Rectangulo
{
int x;
int y;
int ancho;
int alto;
Rectangulo(int w, int h)
{
x=0;
y=0;
ancho=w;
alto=h;
}
}
Este constructor crea un rectngulo de dimensiones nulas situado en el
punto (0, 0),
class Rectangulo
{
int x;
int y;
int ancho;
int alto;
Rectangulo()
{
x = 0;
y = 0;
ancho = 0;
alto=0;
}
}
Con estas porciones de cdigo definimos la clase, y la guardamos en un
archivo que tenga el mismo nombre que la clase Rectangulo.
public class Rectangulo
{
int x;
int y;
int ancho;
int alto;
public Rectangulo()
{
X = 0;
Y = 0;
ancho = 0;
alto = 0;
}
public Rectangulo(int x1, int y1, int w, int h)
{
x = x1;
y = y1;
ancho = w;
alto = h;
}
public Rectangulo(int w, int h)
{
x = 0;
y = 0;
ancho = w;
alto = h;
}
int calcularArea()
{
return (ancho * alto);
}
void desplazar(int dx, int dy)
{
X += dx;
Y += dy;
}
boolean estaDentro(int x1, int y1)
{
if( (x1 > x) && (x1 < x + ancho) && (y1 > y) && (y1 < y +
ancho) )
{
return true;
}
return false;
}
}
Varios constructores
Como se muestra en el ejemplo anterior, podemos definir varios
constructores. De esta manera podramos construir un rectngulo con la
siguiente instruccin
Rectangulo rect1=new Rectangulo(10, 20, 40, 80);
La instruccin new reserva espacio en memoria para los miembros dato
y devuelve una referencia que se guarda en la variable rect1 del
tipo Rectangulo que denominamos ahora objeto. Dicha sentencia, crea
un objeto denominado rect1 de la clase Rectangulo llamando al segundo
constructor en el listado. El rectngulo estar situado en el punto de
coordenadas x=10, y=20; tendr una anchura de ancho=40 y una altura
de alto=80.
La instruccin
Rectangulo rect2=new Rectangulo(40, 80);
Crea un objeto denominado rect2 de la clase Rectangulo llamando al
tercer constructor, dicho rectngulo estar situado en el punto de
coordenadas x=0, y=0; y tendr una anchura de ancho=40 y una altura
de alto=80.
La instruccin
Rectangulo rect3=new Rectangulo();
Crea un objeto denominado rect3 de la clase Rectangulo llamando al
primer constructor, dicho rectngulo estar situado en el punto de
coordenadas x=0, y=0; y tendr una anchura de ancho=0 y una altura
de alto=0.