L'uso delle classi rende il tuo programma più breve e più chiaro (in realtà se il programma non è troppo semplice). Le classi possono incapsulare alcune delle variabili esistenti e i metodi correlati. Ogni classe rappresenta un concetto che a sua volta facilita il reperimento e la comprensione della soluzione.
Per chiarire questi, faccio un esempio:
1- Supponi un programma che prende le dimensioni di un rettangolo e calcola la sua area,
potrebbe essere:
static void Main()
{
int w,h;
read(w,h);
int a = calcArea(w,h); // it simply returns w x h
print(a);
}
2- Un programma che prende tre rettangoli in diverse coordinate e stampa l'area intersecata, il vecchio approccio ti dà
static void Main()
{
int x1,y1,w1,h1,x2,y2,w2,h2,x3,y3,w3,h3; // for rectangles
int x4,y4,w4,h4; // for the intersect
calcIntersect(x1,y1,w1,h1,x2,y2,w2,h2,x3,y3,w3,h3,x4,y4,w4,h4);
}
void calcIntersect(int x1,int y1,int w1,int h1,int x2,
int y2,int w2,int h2,int x3,int y3,int w3,int h3,
int& x4,int& y4,int& w4,int& h4)
{
// a fancy algorithms which works with this bunch of dimensions, its scary!!
}
Dato che hai più oggetti hai bisogno di classe, allora avresti:
class Rectangle
{
public int x,y,w,h;
}
// in your main
static void Main()
{
Rectangle r1,r2,r3, r4; //r4 for intersect
}
Ora invece di pensare alle dimensioni, pensiamo ai rettangoli come a un nuovo concetto! ...., posso calcolare l'intersezione di due rettangoli che è essa stessa un rettangolo e la stessa procedura mi dà l'intersezione di questo rettangolo con il terzo . Osservi che questo nuovo concetto rende più facile trovare la soluzione.
class Rectangle
{
public int x,y,w,h;
Rectangle Intersect(Rectangle r)
{
// now the situation is much better
}
}
static void Main()
{
Rectangle r1,r2,r3,r4;
Rectangle temp = r1.Intersect(r2);
r4 = r3.Intersect(temp);
}