Vous êtes sur la page 1sur 11

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.

15 de enero de 2005

Dpto. Lenguajes y Sistemas Informáticos


Universidad de Alicante

DLSI
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
Java

DLSI
Ejemplo de poliformismo en Java y C++ (R-1.0)
Poliformismo. (I)

Poliformismo. (I)

I Capacidad para adoptar varias formas.


I En entornos de POO se refiere a objetos que pueden tomar
varias formas.
I Los cuales en tiempo de ejecución podrán conectarse a
objetos de tipos distintos.
I Todo esto controlado por la declaración estática
Ejemplo de poliformismo en Java y C++ (R-1.0)
Poliformismo. (II)

Poliformismo. (II)

I Entidad poliforma, se conoce ası́ a la entidad que define la


especialización de una clase, es decir, que agrupa un conjunto
de propiedades comunes a objetos, creando relaciones del tipo
tiene un. (Según Bertrand Meyer )
I Asignación poliforma, sea

p := q

llamaremos asignación poliforma a esta operación cuando el


tipo de origen q es distinto del tipo de p. En el apartado de
implementación se veran ejemplos de estos dos conceptos.
Ejemplo de poliformismo en Java y C++ (R-1.0)
Ejemplo de poliformismo con figuras geométricas.

Ejemplo de poliformismo con figuras geométricas.

Vamos a implementar un ejemplo de poliformismo dado por el


diagrama UML que acompaña al documento.
Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementación en C++. (I)

Implementación en C++. (I)

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
Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementación en C++. (II)

Implementación en C++. (II)

A tener en cuenta:
I El fichero de cabecera Figura.cpp no debe implementarse.
I La función imprime debe reimplementarse en cada clase que
herede de figura al ser virtual pura.
I A partir de ahora podremos realizar asignaciones poliformicas
a partir de una clase claseP que herede de Figura.
I Por ejemplo: Figura temp=new claseP();
Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementación en C++. (III)

Implementación en C++. (III)

A continuación se implementa la clase Punto.h:


#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
Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementación en C++. (IV)

Implementación en C++. (IV)

Punto.cpp:

#include ”Punto.h”
// Sobreescribimos la funcion virtual
string Punto::imprime() const
{ return ”Punto: (”+ x +”,”+ y +”)”; }
Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementación en Java. (I)

Implementación en Java. (I)

I Una clase principal AplicGeom que lanza la aplicación


I Definimos un paquete geom con distintas clases:
I Una clase abstracta padre llamada Figura
I Que posee un método abstracto public String imprime()
I Una serie de subclases (figuras geométricas) que son de tipo
Figura
I Tres subclases que heredan de ella, Linea, Rectangulo y
Circulo.
I Definimos un paquete io
I Posee dos clases dedicadas a E/S
I EntradaTeclado captura la entrada del teclado
I IOFiguras guarda/recupera la información en un fichero
Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementación en Java. (II)

Implementación en Java. (II)

I Podemos compilar todo el proyecto tecleando make


I o archivo por archivo:
I geom/Figura.java −→ javac geom/Figura.java
I geom/Linea.java −→ javac geom/Linea.java
I geom/Circulo.java −→ javac geom/Circulo.java
I geom/Rectangulo.java −→ javac geom/Rectangulo.java
I io/EntradaTeclado.java −→ javac io/EntradaTeclado.java
I io/IOFiguras.java −→ javac io/IOFiguras.java
I AplicGeom.java −→ javac AplicGeom.java
I Por ultimo podemos ejecutarlo tecleando:
java AplicGeom figuras.dat

Vous aimerez peut-être aussi