Bloque práctico 1: C++

Metodología de la Programación II Bloque práctico 1: C++ 1: Programación modular, herencia simple y polimorfismo. En esta práctica utilizaremos las c

1 downloads 52 Views 180KB Size

Story Transcript

Metodología de la Programación II

Bloque práctico 1: C++ 1: Programación modular, herencia simple y polimorfismo. En esta práctica utilizaremos las capacidades de programación orientada a objetos, tanto básicas como avanzadas, de que dispone C++. El objetivo de la práctica es programar un lienzo y figuras que se puedan pintar utilizando herencia y polimorfismo.

1) Programar un lienzo y figuras dibujables Un Lienzo es una matriz de puntos de imagen (píxels) de dos dimensiones al que se le pueden poner los píxels de un color determinado (un entero). Un lienzo se puede rellenar de un color, con lo que todos los píxels del lienzo tendrían dicho valor. Un lienzo, finalmente, se puede mostrar por pantalla, traduciendo según el tipo de Lienzo el entero a una representación. Se debe implementar, asimismo, una clase heredada de Lienzo (LienzoCaracter) , cuya representación sea el entero interpretado como un carácter ASCII. Para pintar en este Lienzo, vamos a construir unas figuras que sepan como pintarse en un lienzo, teniendo en cuenta que si el dibujo se sale de los límites del mismo no se pinten los píxeles que se salen del lienzo (es decir, si la figura se sale del lienzo, no da error, sólo visualiza la parte que cae dentro del mismo). Una figura contiene una posición de origen expresada por dos enteros que determinan la posición del eje x y el eje y. Esta posición es una clase aparte contenida por la figura. Una figura debe tener un método que devuelva una cadena de caracteres ( char * de C, no string de C++) con la descripción del tipo de figura y su contenido. Una figura tiene un color determinado por un entero. Las figuras disponibles son: Punto: Posición y color. Circulo: Centro (una posición) , radio (entero) y color. Linea : Posición inicial, posición final y color. Bitmap : Posición inicial (esquina superior izquierda), ancho, alto ,contenido y color.

Metodología de la Programación II Notas sobre los métodos de Dibujo de cada figura: Circulo y Linea deberán calcular la posición de los píxels en el lienzo usando funciones trigonométricas y el número PI (disponible en la biblioteca math.h). Ejemplo: dibujar un Circulo de radio 3 y color '#' ##### ## ## # # # # # # ## ## ##### Ejemplo: dibujar una Linea que vaya de la posición(0,0) a la posición(5,5) en color '.' . . . . . . . .

Bitmap se construye como una cadena que contiene unos ("1") en las posiciones que se quiere pintar y "0" en las no pintables (bitmap monocromo). Un ejemplo de bitmap de alto 3 y ancho tres es el siguiente: Contenido del bitmap: "001001001" Bitmap dibujado con el color '*': "

* * *" donde " " serian pixels no dibujados y * el píxel dibujado en el color * Estas figuras deben contener en una superclase todas aquellas características que les sean comunes. Finalmente, debe quedar compilada como una biblioteca estática, llamada LibFiguras, que se pueda enlazar a otros programas. Por comodidad y para los ejemplos programados que siguen, cree un archivo de cabecera Libfiguras.hpp, que incluya todas las cabeceras creadas para los módulos de esta biblioteca.

Metodología de la Programación II Compile y enlace el código siguiente en un proyecto diferente que utilice la librería creada. Compruebe que su librería obtiene la salida deseada. En caso contrario, modifique su librería para que funcione correctamente. PruebaLib.Cpp int main(int argc, char *argv[]) { LienzoCaracter z(15,12); Posicion pos1(1,1),pos2(5,5),pos3(8,8); Punto p(pos1,'*'),p1(pos2,'+'); Circulo c(pos2,4,'^'); Linea l(pos1,pos3,'.'); char* contenido =strdup("001001001"); Bitmap b(Posicion(2,2),contenido,3,3,'@'); z.rellenar(' '); // Pinta dos puntos, un bitmap p.pintar(&z); // y un circulo de radio 4 p1.pintar(&z); b.pintar(&z); c.pintar(&z); z.mostrar(); cout

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.