} Figura;

Ejemplo • Supongamos que queremos realizar un sistema que trabaje con figuras geométricas planas. • El sistema debe poder mostrar información de una figura y calcular su área. • Se manejarán varios tipos de figuras entre ellas, círculos y rectángulos. • Dos aproximaciones – Sin utilizar las técnicas de la POO • Se utilizará código C para la descripción del programa – Utilizando las técnicas de la POO • Se utilizará un pseudocódigo para describir el programa Sin POO (I) #define Tcirculo 1 #define TRectangulo 2 typedef struct circulo{ short tipo; //tipo de figura double x, y;//centro double radio;//radio }Circulo; typedef struct rectangulo{ short tipo; //tipo de figura double x1, y1;//esquina ini double x2, y2;//esquina fin } Rectangulo; typedef union figura{ short tipo; /*tipo de figura*/ Circulo cir; /*circulo */ Rectangulo rec;/*rectangulo*/ } Figura; /*Prototipo de funciones*/ double area( Figura *p_fig); void muestra( Figura *p_fig); Sin POO (II) /*Funcion que calcula el area*/ double area( Figura *p_fig){ double varea; /*se maneja el area dependiendo del tipo*/ switch(p_fig->tipo){ case TCirculo: varea = M_PI * p_fig->cir.radio * p_fig->cir.radio; break; case TRectangulo: varea = (p_fig->rec.x2 * p_fig-> rec.x1) * (p_fig->rec.y2 * p_fig-> rec.y1); break; default: printf(“Figura desconocida\n”); varea = -1; } return vare

5 downloads 225 Views 469KB Size

Recommend Stories


Figura 5-1. Figura 5-2
Pag 1 OPERACION DE INSTRUMENTOS MIDI 1 NORMA MIDI 1.0 La norma MIDI (Musical instruments digital interface) o Interfase Digital para Instrumentos Mu

(6. Figura 1
UNPRG Escuela Sup. de Ing. de Sistemas. SISTEMAS DIGITALES. &217$'25(6',*,7$/(6  En casi todos los tipos de equipo digital se encuentran flip-f

Story Transcript

Ejemplo • Supongamos que queremos realizar un sistema que trabaje con figuras geométricas planas. • El sistema debe poder mostrar información de una figura y calcular su área. • Se manejarán varios tipos de figuras entre ellas, círculos y rectángulos. • Dos aproximaciones – Sin utilizar las técnicas de la POO • Se utilizará código C para la descripción del programa

– Utilizando las técnicas de la POO • Se utilizará un pseudocódigo para describir el programa

Sin POO (I) #define Tcirculo 1 #define TRectangulo 2 typedef struct circulo{ short tipo; //tipo de figura double x, y;//centro double radio;//radio }Circulo; typedef struct rectangulo{ short tipo; //tipo de figura double x1, y1;//esquina ini double x2, y2;//esquina fin } Rectangulo;

typedef union figura{ short tipo; /*tipo de figura*/ Circulo cir; /*circulo */ Rectangulo rec;/*rectangulo*/ } Figura;

/*Prototipo de funciones*/ double area( Figura *p_fig); void muestra( Figura *p_fig);

Sin POO (II) /*Funcion que calcula el area*/ double area( Figura *p_fig){ double varea; /*se maneja el area dependiendo del tipo*/ switch(p_fig->tipo){ case TCirculo: varea = M_PI * p_fig->cir.radio * p_fig->cir.radio; break; case TRectangulo: varea = (p_fig->rec.x2 * p_fig-> rec.x1) * (p_fig->rec.y2 * p_fig-> rec.y1); break; default: printf(“Figura desconocida\n”); varea = -1; } return varea; }

Sin POO (III) //Funcion que muestra la figura double muestra( Figura *p_fig){ printf(“Figura: ”); switch( p_fig->tipo){ case TCirculo: printf(“Circulo de radio %f y de centro(%f,%d)\n ”, p_fig->cir.radio, p_fig->cir.x, p_fig->cir.y); break; case TRectangulo: printf(“Rectangulo esquina (%f,%f) y (%f,%f) \n ”, p_fig->rec.x1, p_fig->rec.y1, p_fig->rec.x2, p_fig->rec.y2); break; default: printf(“Figura desconocida\n”); } }

Sin POO (IV) int main(){ int i; Figura a[2]; //array con dos figuras //inicializa a[0] con un rectangulo a[0].tipo = Trectangulo; a[0].rec.x1 = 80.0; a[0].rec.y1 = 30.0; a[0].rec.x2 = 300.0; a[0].rec.y2 = 50.0; //inicializa s[1] con un circulo a[1].tipo = TCirculo; a[1].cir.radio = 80.0; a[1].cir.y = 40.0; a[1].cir.x = 30.0; //Calculo de áreas for(i = 0; i < 2; i++) printf(“Area figura[%d]=%f\n”,i, area(&a[i])); for(i = 0; i < 2; i++) muestra(&a[i]); return 0; }

Sin POO (y V) •

Añadiendo una nueva figura. Queremos incorporar triángulos. –

Añadir el tipo de Triangulo

#define Ttriangulo 3 typedef struct Triangulo{ short tipo; //tipo de figura double x1,y1;//coordenada pto 1 double x2,y2;//coordenada pto 2 double x3,y3;//coordenada pto 3 }Triangulo; –

Añadirlo a la unión de figuras

typedef union Figura{ short tipo; Circulo cir; Rectangulo rec; Triangulo tri; }Figura; –

Modificar las funciones muestra y área

Con POO (I) •

Creamos una clase abstracta Figura. Esta clase soporta los métodos muestra y area Clase Figura Métodos de instancia publicos muestra() area() Fin clase Figura::muestra(){ printf(«Debe implementarla la subclase»); } Figura::area(){ printf(«Debe implementarla la subclase»); return 0.0; }

Con POO (II) • Creamos Circulo como una subclase de Figura. Clase Circulo hereda Figura Variables de instancia radio x, y; Fin clase /* Implementación de muestra para Circulo*/ Circulo::muestra(){ printf(«Circulo de radio %f y de centro (%f,%f)\n»,radio,x,y); } /* Implementación de area para Circulo*/ Circulo::area(){ return M_PI * radio * radio; }

Con POO (III) • Creamos Rectangulo como una subclase de Figura. Clase Rectangulo hereda Figura Variables de instancia x1, y1, x2, y2; Fin clase // Implementación de muestra para Rectangulo Rectangulo::muestra(){ printf(«Esquinas del Rectangulo (%f, %f) y (%f,%f)\n», x1,y1, x2,y2); } // Implementación de area para Rectangulo Rectangulo::area(){ return fabs( (x2-x1)*(y2-y1)); }

Con POO (IV) int main(){ int i; Figura s[2]; //Inicialización de un rectangulo s[0] = Rectangulo(80,0,30,0,300,0,50,0); //Inicialización del circulo s[1] = Circulo(80,0,40,0,30,0); //Calculo de las áreas for(i = 0; i

Get in touch

Social

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