mercoledì 5 dicembre 2007

Reuse

Vi è mai capitato di dover scrivere più volte lo stesso codice? Ci sono dei casi specifici dove ciò è inevitabile, ma in molti casi risulta sconveniente, e troppo oneroso da gestire.

Scrivere del codice di tipo REUSE non è così semplice come sembra; anzi in molti casi risulta essere più dispendioso del riscrivere lo stesso codice più volte. Tuttavia ci sono una serie di implicazioni logiche da tenere sempre in mente.

Un esempio su tutti la classe auto.

public class tCambio
{
public int _Tipo_Cambio;
public int _Numero_Rapporti;
public int _Numero_Dischi_Frizione;
}

public class tMotore
{
public int _Tipo_Carburante;
public int _Numero_Cilindri;
public int _Emissioni_C02;
}

public class tDettaglio_Interni
{
public Color Colore_Primario;
public Color Colore_Secondario;
public Color Colore_Tappetini;
public Color Colore_Cappelliera;
}

public class tDettglio_Esterni
{
public Color Colore_Carrozzeria;
public Color Colore_Paraurti;
public Color Colore_Maniglie;
}

public class tAuto
{
public int _Numero_Ruote;
public int _Numero_Posti;
public tMotore _Motore = new tMotore();
public tCambio _Motore = new tCambio();
public tDettaglio_Interni _Interni = new tDettaglio_Interni();
public tDettglio_Esterni _Esterni = new tDettglio_Esterni();

public void Accendi()
{

}

public void Spegni()
{

}

public void Sterza()
{

}

public void Frena()
{

}

public tAuto()
{

}

}

Chiaramente si tratta di un esempio, nulla di concreto, però è quanto di più si possa avvicinare ad una descrizione di una macchina generica.

Come è possibile notare molti dei "pezzi" dell'auto sono stati realizzati esternamente alla classe, per semplice motivo,
che la classe motore può essere usata anche da altre entità indipendentemente dal fatto che siano auto o meno.

Una moto per esempio, potrebbe utilizzare nello specifico sia il motore che il cambio, ma a ben pensarci anche un motoscafo, e volendo un aero.

Decisioni, è nell'analasi tecnica che devono essere affrontate queste decisioni. E sicuramente devono essere fatte
prima di scrivere righe e righe di codice che potranno essere poco fruibili.

Naturalmente partendo da quest'esempio si può arrivare a considerare che questa classe non sia completa e che
a sua volta possa ulteriormente essere estesa, o migliorata.


public class MacchinaTruzza:tAuto
{
public string proprietario;
public string Marca;
public string Modello;
public string Numero_di_Serie;

public void Do_Sgommata_InStart()
{
}
public void Do_360_Destra()
{
}
public void Do_360_Sisnitra()
{
}
public void Do_Sgommata_inBreak()
{
}
}

Ecco quello che ne potrebbe venire fuori, estendendo la classe auto.

Rimarrebbero invariate le principali funzionalità della classe auto, ed in più vengono aggiunte altre funzionalità.

Nessun commento: