Post on 13-Jun-2015
DLSI
Ejemplo de poliformismo en Java y C++ (R-1.0)
Tıtulo
Ejemplo de poliformismo en Java y C++ (R-1.0)
Programacion Orientada a Objetos.
15 de enero de 2005
Dpto. Lenguajes y Sistemas InformaticosUniversidad de Alicante
DLSI
Ejemplo de poliformismo en Java y C++ (R-1.0)
Resumen
Resumen
Poliformismo. Ejemplo de poliformismo con Figurasgeometricas. Implementacion en C++. Implementacion enJava
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 tomarvarias formas.
I Los cuales en tiempo de ejecucion podran conectarse aobjetos de tipos distintos.
I Todo esto controlado por la declaracion estatica
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 laespecializacion de una clase, es decir, que agrupa un conjuntode propiedades comunes a objetos, creando relaciones del tipotiene un. (Segun Bertrand Meyer )
I Asignacion poliforma, sea
p := q
llamaremos asignacion poliforma a esta operacion cuando eltipo de origen q es distinto del tipo de p. En el apartado deimplementacion se veran ejemplos de estos dos conceptos.
Ejemplo de poliformismo en Java y C++ (R-1.0)
Ejemplo de poliformismo con figuras geometricas.
Ejemplo de poliformismo con figuras geometricas.
Vamos a implementar un ejemplo de poliformismo dado por eldiagrama UML que acompana al documento.
Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementacion en C++. (I)
Implementacion 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 objetovirtual string imprime() const = 0;};#endif
Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementacion en C++. (II)
Implementacion en C++. (II)
A tener en cuenta:
I El fichero de cabecera Figura.cpp no debe implementarse.
I La funcion imprime debe reimplementarse en cada clase queherede de figura al ser virtual pura.
I A partir de ahora podremos realizar asignaciones poliformicasa 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)
Implementacion en C++. (III)
Implementacion en C++. (III)
A continuacion 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)
Implementacion en C++. (IV)
Implementacion en C++. (IV)
Punto.cpp:
#include ”Punto.h”// Sobreescribimos la funcion virtualstring Punto::imprime() const
{ return ”Punto: (”+ x +”,”+ y +”)”; }
Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementacion en Java. (I)
Implementacion en Java. (I)
I Una clase principal AplicGeom que lanza la aplicacionI Definimos un paquete geom con distintas clases:
I Una clase abstracta padre llamada FiguraI Que posee un metodo abstracto public String imprime()I Una serie de subclases (figuras geometricas) que son de tipo
FiguraI Tres subclases que heredan de ella, Linea, Rectangulo y
Circulo.
I Definimos un paquete ioI Posee dos clases dedicadas a E/SI EntradaTeclado captura la entrada del tecladoI IOFiguras guarda/recupera la informacion en un fichero
Ejemplo de poliformismo en Java y C++ (R-1.0)
Implementacion en Java. (II)
Implementacion en Java. (II)
I Podemos compilar todo el proyecto tecleando makeI o archivo por archivo:
I geom/Figura.java −→ javac geom/Figura.javaI geom/Linea.java −→ javac geom/Linea.javaI geom/Circulo.java −→ javac geom/Circulo.javaI geom/Rectangulo.java −→ javac geom/Rectangulo.javaI io/EntradaTeclado.java −→ javac io/EntradaTeclado.javaI io/IOFiguras.java −→ javac io/IOFiguras.javaI AplicGeom.java −→ javac AplicGeom.java
I Por ultimo podemos ejecutarlo tecleando:java AplicGeom figuras.dat