Design OOP in php

0

Quindi devo creare un oggetto design per questa applicazione, è solo un problema per esercitarsi.

You are building application that will load data from several different advertising systems and then store the data into database, so it will be possible to analyze them.

You need to take in mind that every advertising system has different structure of report: Different named columns, different order of columns, different date formats Also data from ad systems are in different data formats(JSON,CSV,XML),

Reports from each system contains different amount of columns, our application is interested only in some of them(in every system they have different name)

Ho scritto questo, solo ciò che manca è il metodo per selezionare solo le colonne di cui ho bisogno. Questa buona struttura? Sono nuovo o OOP.     

class Report {

    protected $data = [];
    protected $dataTypes = [];

    public function loadReport($adSystem){ return $data}

    public function loadAllReports($adSystemCollection){ return $data}

}

class Decode{

    protected $data = [];
    protected $dataTypes = [];

    public function getType($data){ return $dataTypes};
    public function getAllTypes($data){ return $dataTypes};
    public function getColumns($data, $columns){ return $data}
    public function convertToString($data,$dataTypes){ return $data}
    }
}

class Query{

    $databaseConnection = "";

    public function __construct(){
    //get database connection
     return void;
    }

    public function save($data){ return null};
    public function loadData($key){ return $data};
}

class Collection 
{
    private $items = array();

    public function addItem($obj, $key = null) {
    }

    public function deleteItem($key) {
    }

    public function getItem($key) {
    }
}
    
posta rtom 16.10.2016 - 20:00
fonte

1 risposta

2

Quando si tratta di analizzare la descrizione del requisito / problema e di tradurlo in un design OOP decente e pratico, l'approccio migliore consiste nell'identificare i nomi e i verbi propri nella dichiarazione data:

Ad esempio, qui abbiamo un sistema pubblicitario con diversi rapporti . E ogni rapporto ha un diverso formato e ogni rapporto contiene colonne e formati di data.

Quindi il passo successivo è identificare le relazioni tra loro:

Nel tuo scenario, poiché ogni sistema pubblicitario aggrega diversi report. Quindi qui abbiamo l'aggregazione (da una a molte relazioni).

Studia questo tutorial qui per ulteriori e precisi dettagli: Tutorial OOAD

Identifica la relazione "is a" e "has a" tra le classi, quindi dovunque ti imbatti in una relazione "is a" ti occorrerebbe una sub-classe, ovvero devi ereditare a classe figlio dalla classe base . Nel tuo caso, non ce n'è bisogno. La relazione "ha a" indica aggregazione o composizione. E questo è quello che posso vedere nel tuo scenario come è stato affermato: "Il rapporto ha un formato " , "Il rapporto ha un colonna ".

Per una spiegazione più chiara, segui questo esempio: Aggregation

E nella fase finale, devi identificare gli attributi di ogni classe. Ad esempio, qui hai il numero di colonne che ti consiglierei di includere nella tua relazione .

Ma alla fine della giornata tutto dipende dai requisiti fondamentali della tua applicazione su come dovrebbe essere la tua progettazione OOP.

    
risposta data 16.10.2016 - 21:52
fonte

Leggi altre domande sui tag