Poo transpa

11

Click here to load reader

Transcript of Poo transpa

Page 1: Poo transpa

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

Page 2: Poo transpa

DLSI

Ejemplo de poliformismo en Java y C++ (R-1.0)

Resumen

Resumen

Poliformismo. Ejemplo de poliformismo con Figurasgeometricas. Implementacion en C++. Implementacion enJava

Page 3: Poo transpa

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

Page 4: Poo transpa

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.

Page 5: Poo transpa

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.

Page 6: Poo transpa

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

Page 7: Poo transpa

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();

Page 8: Poo transpa

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

Page 9: Poo transpa

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 +”)”; }

Page 10: Poo transpa

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

Page 11: Poo transpa

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