Sto facendo un progetto finale in una classe C ++ scrivendo un client / server semplice simile a usenet molto . Immagino che poiché è usenet-like avrò una classe NewsGroup
e una classe Article
, ora sto lavorando sulla mia classe Article
. Non posso davvero decidere un buon design, anche se (questa classe non riguarda i modelli di design e non ne ho presi nessuno).
Questo è quello che ho:
class Article {
public:
const std::string author;
std::string title;
std::string text;
const uint32_t id;
system_clock::time_point timestamp;
Article(const std::string auth&,
const std::string tit&,
const std::string txt&,
const system_clock::time_point&);
private:
Article(const Article&);
void operator=(const Article&);
static uint32_t id_pool;
};
La mia motivazione è questa:
author
non dovrebbe mai cambiare - > const
title
potrebbe cambiare se modificato - > non-const
text
potrebbe cambiare se modificato - > non-const
id
non dovrebbe mai cambiare - > const
timestamp
potrebbe cambiare ma probabilmente non dovrebbe, non sono ancora sicuro di cosa farne.
id_pool
è solo da dove ottengo gli ID. Una specifica è che gli ID non dovrebbero mai essere riutilizzati quindi ho solo incrementato id_pool
nel costruttore dell'articolo.
Venendo da Java con tutti i getter e setter che davvero non mi piacciono, e poi alcuni Python con "Tutto pubblico" e proprietà, che mi piacciono, qui mi sto confondendo un po '.
Voglio dire, potrei rendere i membri privati e avere getter e setter (non riesco a pensare a nessun "verbo-metodo" naturale che un articolo possa "fare"), ma mi sembra che guadagnerei molto poco.
Sarei grato per alcuni suggerimenti su un buon design in questo caso.