1. Ejemplo de poliformismo en Java y C++ (R-1.0)
T´
ıtulo
Ejemplo de poliformismo en Java y C++ (R-1.0)
Programaci´n Orientada a Objetos.
o
15 de enero de 2005
Dpto. Lenguajes y Sistemas Inform´ticos
a
Universidad de Alicante
DLSI
2. Ejemplo de poliformismo en Java y C++ (R-1.0)
Resumen
Resumen
Poliformismo. Ejemplo de poliformismo con Figuras
geom´tricas. Implementacion en C++. Implementaci´n en
e o
Java
DLSI
3. Ejemplo de poliformismo en Java y C++ (R-1.0)
Poliformismo. (I)
Poliformismo. (I)
Capacidad para adoptar varias formas.
En entornos de POO se refiere a objetos que pueden tomar
varias formas.
Los cuales en tiempo de ejecuci´n podr´n conectarse a
o a
objetos de tipos distintos.
Todo esto controlado por la declaraci´n est´tica
o a
4. Ejemplo de poliformismo en Java y C++ (R-1.0)
Poliformismo. (II)
Poliformismo. (II)
Entidad poliforma, se conoce as´ a la entidad que define la
ı
especializaci´n de una clase, es decir, que agrupa un conjunto
o
de propiedades comunes a objetos, creando relaciones del tipo
tiene un. (Seg´n Bertrand Meyer )
u
Asignaci´n poliforma, sea
o
p := q
llamaremos asignaci´n poliforma a esta operaci´n cuando el
o o
tipo de origen q es distinto del tipo de p. En el apartado de
implementaci´n se veran ejemplos de estos dos conceptos.
o
5. Ejemplo de poliformismo en Java y C++ (R-1.0)
Ejemplo de poliformismo con figuras geom´tricas.
e
Ejemplo de poliformismo con figuras geom´tricas.
e
Vamos a implementar un ejemplo de poliformismo dado por el
diagrama UML que acompa˜a al documento.
n
6. Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementaci´n en C++. (I)
o
Implementaci´n en C++. (I)
o
Figura.h:
#ifndef FIGURA
#define FIGURA
#include<iostream>
using namespace std;
class Figura {
public:
//Funcion virtual pura. Devuelve un string que representa al objeto
virtual string imprime() const = 0;
};
#endif
7. Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementaci´n en C++. (II)
o
Implementaci´n en C++. (II)
o
A tener en cuenta:
El fichero de cabecera Figura.cpp no debe implementarse.
La funci´n imprime debe reimplementarse en cada clase que
o
herede de figura al ser virtual pura.
A partir de ahora podremos realizar asignaciones poliformicas
a partir de una clase claseP que herede de Figura.
Por ejemplo: Figura temp=new claseP();
8. Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementaci´n en C++. (III)
o
Implementaci´n en C++. (III)
o
A continuaci´n se implementa la clase Punto.h:
o
#ifndef PUNTO
#define PUNTO
#include ”Figura.h”
class Punto : public Figura {
private:
int x,y;
public: Punto(int x=0, int y=0) { this.x=x; this.y=y;}
Punto(const & Punto) { (*this)=&Punto}
void setX(int x) { this.x=x;}
void setY(int y) { this.y=y;}
int getX() { return x;}
int getY() { return y;}
virtual string imprime() const;
};
#endif
9. Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementaci´n en C++. (IV)
o
Implementaci´n en C++. (IV)
o
Punto.cpp:
#include ”Punto.h”
// Sobreescribimos la funcion virtual
string Punto::imprime() const
{ return ”Punto: (”+ x +”,”+ y +”)”; }
10. Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementaci´n en Java. (I)
o
Implementaci´n en Java. (I)
o
Una clase principal AplicGeom que lanza la aplicaci´n
o
Definimos un paquete geom con distintas clases:
Una clase abstracta padre llamada Figura
Que posee un m´todo abstracto public String imprime()
e
Una serie de subclases (figuras geom´tricas) que son de tipo
e
Figura
Tres subclases que heredan de ella, Linea, Rectangulo y
Circulo.
Definimos un paquete io
Posee dos clases dedicadas a E/S
EntradaTeclado captura la entrada del teclado
IOFiguras guarda/recupera la informaci´n en un fichero
o
11. Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementaci´n en Java. (II)
o
Implementaci´n en Java. (II)
o
Podemos compilar todo el proyecto tecleando make
o archivo por archivo:
geom/Figura.java −→ javac geom/Figura.java
geom/Linea.java −→ javac geom/Linea.java
geom/Circulo.java −→ javac geom/Circulo.java
geom/Rectangulo.java −→ javac geom/Rectangulo.java
io/EntradaTeclado.java −→ javac io/EntradaTeclado.java
io/IOFiguras.java −→ javac io/IOFiguras.java
AplicGeom.java −→ javac AplicGeom.java
Por ultimo podemos ejecutarlo tecleando:
java AplicGeom figuras.dat