struct co_ordinate {
double x;
double y;
};
// ----- > DESIGN 1
class Land {
public:
Land(std::vector<co_ordinate> co) shape_before_plotting(co) {}
// actions
// creates stage 2
// populates shape_after_plotting_outside_boundary
void do_plotting_of_boundary(size_t off_set){
// logic here
// this off_set is used to know where to add new co_ordinates
// in the boundary
// (the beginning and end of boundary is untouched)
}
// creates stage 3
// populates shape_after_plotting_land
void do_internal_plotting(){
// logic here
// adds new co-ordinate where line intersected inside the land after
// stage 2.
}
// getters
std::vector<co_ordinate> get_shape_before_plotting{
return shape_before_plotting;
}
std::vector<co_ordinate> get_shape_after_plotting_outside_boundary {
return shape_after_plotting_outside_boundary;
}
std::vector<co_ordinate> get_shape_after_plotting_land {
return shape_after_plotting_land;
}
private:
std::vector<co_ordinate> shape_before_plotting;
std::vector<co_ordinate> shape_after_plotting_outside_boundary;
std::vector<co_ordinate> shape_after_plotting_land;
};
int main(){
Land my_land(vec);
// stage 2 populates shape_after_plotting_outside_boundary
my_land.do_plotting_of_boundary();
// stage 3 populates shape_after_plotting_land
my_land.do_internal_plotting();
// get co ordinate here
}
// ----- > DESIGN 2
class Land {
public:
Land(std::vector<co_ordinate> co) plotting(co) {}
Land operator=(const Land& other) {// logic for assignment operator}
// actions
// creates stage 2
// populates shape_after_plotting_outside_boundary
void do_plotting_of_boundary(size_t off_set){
// logic here
// this off_set is use know where to add new co_ordinates
// in the boundary
// the beginning and end of boundary is untouched
}
// creates stage 3
// populates shape_after_plotting_land
void do_internal_plotting(){
// logic here
// adds new co-ordinate where line intersected inside the land.
}
// getters
std::vector<co_ordinate> get_shape_co_oridinate(){
return plotting;
}
private:
std::vector<co_ordinate> plotting;
};
int main(){
Land stage_1(vec);
Land stage_2(stage_1);
// plotting is replaced by
// new co-ordinates to store stage 2 co-ordinates
stage_2.do_plotting_of_boundary();
// use assignment operator
//
Land stage_3(stag_2);
// plotting is replaced by
// new co-ordinates to store stage 3 co-ordinates
stage_3.do_internal_plotting();
// get co ordinate here
// Now to get different co-ordinate of stage 1
//
std::vector<co_ordinate> hold_stage_1_co_ordinate = stage_1.get_shape_co_oridinate();
// Now to get different co-ordinate of stage 2
//
std::vector<co_ordinate> hold_stage_2_co_ordinate = stage_2.get_shape_co_oridinate();
// Now to get different co-ordinate of stage 3
//
std::vector<co_ordinate> hold_stage_3_co_ordinate = stage_3.get_shape_co_oridinate();
}
Sto lavorando a un progetto in cui otteniamo la terra e li tracciamo. Rappresentiamo la terra in x, y sistema di coordinate.
fase 1 (rappresentazione coarse):
Per semplicità, diciamo che la terra che abbiamo ha quattro limiti.
confini delle curve: i contorni possono essere curvati in modo da rappresentare i bordi curvi abbiamo bisogno di più coordinate.
confini diritti: per rappresentare i confini diritti sono sufficienti solo due coordinate.
fase 2 (rappresentazione fine):
Una volta ottenuto il terreno, dividiamo il confine (segmento di linea) a un certo intervallo. Diciamo alla lunghezza di 5 metri. Questo procederà all'incremento del numero di coordinate terra usata per ripresentarsi.
fase 3 (rappresentazione fine e interna della coordinata):
In questa rappresentazione disegniamo le linee tra la coordinata sul confine dalla rappresentazione Fine e aggiungi una nuova coordinata che si interseca all'interno del terreno.
Ho bisogno di salvare tutti i coordinati che ripropongono la terra.
La mia domanda è:
Pensi che il modo in cui sto conservando il coordinato in Design 1 sia un buon design? Sto dubitando di me stesso perché il design dell'API sembra troppo prolisso e probabilmente inconsistente.
Ecco perché ho creato Desing 2, la cui API è semplice
std::vector<co_ordinate> get_shape_co_ordinate();
Ma in questo design devo gestire più oggetti. Quale pensi che sia il design corretto? C'è un design migliore di questo?