edutecnica

Esercizio 9       

Realizza la classe Q (Quadrato) dotata degli attributi lato, posx e posy; questi ultimi due sono le coordinate cartesiane dell'angolo superiore sinistro del quadrato.
L'oggetto di classe Q  può essere istanziata solo tramite costruttore. Realizza poi la classe I (insieme) che riceve in ingresso due quadrati e restituisce in uscita l'esito di una loro eventuale intersezione (sovrapposizione); in tal caso l'oggetto di classe I deve restituire l'area dell' intersezione e dell'unione dei due quadrati. (esempio di scambio di dati fra classi non derivate fra loro).


#include<iostream>
#include<time.h>
using namespace std;
//____________________classe Q
class Q{
     int l,x,y,a;
public :
     int getx();
     int gety();
     int getl();
     int geta();
     Q(int posx,int posy,int la);//costruttore
} ;
//_________implemetazione metodi
Q::Q(int posx,int posy,int la){
     x=posx;
     y=posy;
     l=la;
     a=l*l;
     cout << "quadrato creato." << endl;
}
int Q::getx(){ return x;}
int Q::gety(){return y;}
int Q::getl(){return l;}
int Q::geta(){return a;}
//____________________classe I
class I{
     int x1,y1,l1,x2,y2,l2;
public :
     I(Q qa,Q qb);
} ;
//_________implemetazione metodi
I::I(Q qa,Q qb){
x1=qa.getx();y1=qa.gety();l1=qa.getl(); x2=qb.getx();y2=qb.gety();l2=qb.getl();
if(((x1 < x2 && x1+l1 > x2)||(x2 < x1 && x2+l2 > x1))&&((y1 < y2 && y2-l2 < y1)||(y2 < y1 && y1-l1 < y2)))
cout << "intersezione";
else cout << "nessuna intersezione";
}
main(){
     Q q1(10,10,6);
     Q q2(18,18,6);
     I i(q1,q2);
}//__________fine main

Questo listato lo abbiamo fatto solo per mostrare come si possano passare come parametri di un oggetto altri oggetti.
Da notare che in questo caso le due classi non sono derivate fra loro.
Non siamo assolutamente certi che la condizione logica che stabilisce l'intersezione dei due quadrati sia la più breve.
Lasciamo ai più bravi tutte le possibilità di miglioramento dello scritto, compresa la restituzione dell'area dell'intersezione e dell'unione dei due quadrati .