// Programa de exemplo para ilustrar conceitos de classe, objetos // detalhando o uso de funcao friend // Original do livro TURBO C++ SCHILDT pg 380 #include #include class linha; // semelhante a prototipo - identifica que linha // e' uma classe (referenciada dentro de boxe) // que sera definida posteriormente a boxe class boxe { int cor; // cor do boxe int upx, upy; // canto superior esquerdo int lowx, lowy; // canto inferior direito public: friend int mesma_cor (linha l, boxe b); void indica_cor(int c); void define_boxe(int x1, int y1, int x2, int y2); void exibe_boxe(void); }; class linha { int cor; int comecox, comecoy; int tamanho; public: friend int mesma_cor (linha l, boxe b); void indica_cor (int c); void define_linha (int x, int y, int l); void exibe_linha(); }; // funcao mesma_cor (friend das duas classe) retorna verdadeiro se // linha e boxe tem a mesma cor int mesma_cor (linha l, boxe b) { if(l.cor == b.cor) return 1; return 0; } void boxe::indica_cor(int c) { cor = c; } void boxe::define_boxe(int x1, int y1, int x2, int y2) { upx = x1; upy = y1; lowx = x2; lowy = y2; } void boxe::exibe_boxe(void) { int i; textcolor(cor); gotoxy (upx, upy); for (i=upx; i<= lowx; i++) cprintf("-"); gotoxy(upx, lowy-1); for(i=upx; i<=lowx; i++) cprintf("-"); gotoxy (upx, upy); for(i=upy; i<=lowy; i++) { cprintf("|"); gotoxy(upx, i); } gotoxy(lowx, upy); for (i=upy; i<=lowy; i++) { cprintf ("|"); gotoxy(lowx, i); } } void linha::indica_cor(int c) { cor = c; } void linha::define_linha(int x, int y, int l) { comecox=x; comecoy=y; tamanho=l; } void linha::exibe_linha(void) { int i; textcolor(cor); for (i=0; i