Sto tentando di apprendere la programmazione orientata agli oggetti progettando una semplice applicazione web relativa al calendario liturgico cattolico. Ho pochissimo addestramento formalizzato in programmazione, ma sono stato in grado di apprendere più o meno con successo i concetti di programmazione di base e gli scopi / la sintassi di un paio di lingue.
Speravo di ricevere feedback sul seguente progetto che ho elaborato e implementato nei test. Il caso di utilizzo di base è quello di essere in grado di trovare i dettagli del calendario di qualsiasi data e ora attraverso la logica dell'applicazione e alcune query di database. Ho sviluppato le classi in quanto tali:
class Year
create several DateTime objects for important movables feasts for a year
class Season extends Year
create several properties for each liturgical season based on the DateTime
objects from Year and additional application logic
class Day extends Season
contains an array of Hours objects since a liturgical day is not necessarily
the same as a 24 hour temporal day
class Hour extends Day
determines the liturgical hour details including the feast being celebrated
and DateTime objects representing the start and stop times of the hour since
and "hour" <> a temporal hour of 60 minutes
Con questo design, posso creare un'ora passando un singolo parametro ($ date). L'ora deve sapere quale stagione liturgica è per qualche logica applicativa, quindi crea un oggetto Stagione basato su $ date. L'oggetto Stagione, tuttavia, non può essere creato finché non sa quando si verificano determinati giorni festivi in un dato anno (ad esempio, Pasqua determina le date di inizio e di fine per diverse stagioni liturgiche), quindi crea un oggetto Anno. Si tratta di un modello "desiderabile" tale che per creare un singolo oggetto desiderato (Ora) vengono creati altri due oggetti (Stagione e Anno)? È "corretto" estendere le classi per riflettere una relazione gerarchica come la mia (il periodo temporale più grande è "in cima", seguito dalla più grande suddivisione di quella, ecc ... fino al più piccolo periodo di ora) ?
Lo scopo principale di questa applicazione web sarà quello di mostrare fatti religiosi e letteratura basati sull'attuale ora liturgica. Quindi, l'ora è il pezzo più importante per l'utente finale - ma questo non può essere determinato con successo senza i periodi "più grandi" della stagione e dell'anno. L'oggetto del giorno sarà utilizzato solo per scopi di navigazione / informazione (ad esempio, quali sono gli eventi religiosi importanti in tutte le ore liturgiche di oggi?) E probabilmente non includerà alcun evento eseguibile al suo interno.
Nel test, ho creato un anno di oggetti Date che si traducono in 2.920 ore, stagioni e anni (365 * 8 per ogni tipo di oggetto = 8.760 oggetti totali). La logica dell'applicazione è corretta e produce i risultati dei dati desiderati. Tuttavia, questo sembra un numero incredibilmente alto di istanze di oggetti per un sistema così semplice, quindi mi piacerebbe sapere se sto usando male gli oggetti o fraintendendo totalmente il loro scopo. Penso che sia più desiderabile essere in grado di creare un singolo oggetto Year che generi 13 oggetti Season che potrebbero essere referenziati da ogni Hour che ho bisogno di creare ... creando così solo 2.934 oggetti (2.920 Hour, 13 Season e 1 anno).
Ogni pensiero sarebbe apprezzato!