Diciamo che sto creando un'API per la classe University
per creare un Class
.
(Questo Class
ha nome Class
, Teacher
e students
).
es .:
class Class{
..
private:
std::string class_name_;
Teacher teacher_;
std::vector<Student> students_;
};
class University{
public:
//API 1
void CreateClass(const std::string&, Teacher, std::vector<Student>);
//API 2
void CreateClass(const std::string&, Teacher);
//API 3
void CreateClass(const std::string&);
private:
std::vector<Class> classes_;
..
};
Pensa alla classe esattamente come Class
che si trova nella tipica università.
Pensi che sia razionale avere API2 e API3? Ho fatto questa domanda perché quando ho iniziato a creare l'università di classe, ho iniziato con API1. Poi durante la metà del mio progetto ho capito che ho bisogno di API2 e API3 perché, io stava analizzando le informazioni di classe dal file (questo file contiene informazioni sulla classe) e non ho potuto avere tutte le informazioni in una volta durante l'analisi del file. Quindi, ho pensato di creare una classe vuota con solo un nome di classe prima quindi aggiungere studenti e insegnanti a quella specifica classe mentre analizzo ulteriormente il file.
Un'altra domanda: è contro il principio di progettazione orientata agli oggetti avere Classe con giusto
nome? Lo chiedo perché normalmente Class
ha insegnanti e studenti, quindi solo il suo chiamato Class
.
Inoltre, in futuro, qualcuno potrebbe abusare dell'API3 per creare una classe vuota e non preoccuparsi di popolare l'insegnante e gli studenti, lasciando il Class
vuoto.