Skip to content

pllossi/Info

Repository files navigation

Esercizi svolti a casa e a scuola in C#

Esercizi svolti a casa e a scuola mediante uso di WPF (Windows Presentation Foundation), .NET MAUI, .NET 8 durante l'anno 2025/2026 usando l'OOP e successivamente la struttura di programmazione CLEAN

I vari esercizi

Noleggio

Testo del problema

Vuoi scrivere un programma per gestire un sistema di noleggio di veicoli per una compagnia chiamata "Global Mobility". Il sistema deve essere in grado di gestire diversi tipi di veicoli, come automobili, motociclette e biciclette. Il sistema deve soddisfare i seguenti requisiti: Tutti i veicoli devono avere un prezzo per giorno, un numero di targa e un metodo per calcolare il costo totale del noleggio in base al numero di giorni. Tutti i veicoli, indipendentemente dal tipo, devono essere in grado di stampare una descrizione dettagliata di sé stessi che includa tutte le loro informazioni specifiche. in particolare Automobili: devono avere un attributo aggiuntivo per il numero di posti. Motociclette: devono avere un attributo aggiuntivo per il tipo di casco (integrale, jet, ecc.). Biciclette: non hanno attributi aggiuntivi, ma il loro calcolo del costo totale deve prevedere uno sconto del 10% se il noleggio dura più di 7 giorni. Gestione del noleggio: il programma deve essere in grado di gestire il noleggio di qualsiasi veicolo, calcolare il costo e mostrare la loro descrizione.

Principio di soluzione

Si inizia con una classe di tipo abstract Veicolo dove noi abbiamo i dati che sono in comune con tutti i 3 tipi di veicolo, che poi si specializzano. Nella parte del WPF abbiamo la classe GestoreNoleggio.cs che si interfaccia con la libreria e ci permette di controllare i vari dati e di scriverli in memoria

TestNoleggio

Testo del problema

Testare la libreria di Noleggio

Gestione Animali Domestici

Testo del problema

Si vuole realizzare un piccolo sistema software per aiutare la Sig.ra Maria a gestire i suoi animali domestici Moxa (cane) e Petra (gatto). Tutti gli animali devono avere un nome e per ogni animale deve essere possibile memorizzare le visite veterinarie. Deve essere possibile visualizzare tutte le visite effettuate oppure l'ultima vista effettuata e per ogni animale deve essere memorizzato l'alimento preferito ed il gioco preferito. Nel caso di Moxa si vuole memorizzare anche il masticativo preferito.

Richieste Particolari

  • diagramma dei casi d'uso

ExtensionMethod

Testo del problema

Prepara gli Extension Method per la classe DateTime che implementi i seguenti metodi:

  • un metodo chiamato GetSeason() che restituisca una stringa (o un valore enum, se preferisci) che indichi la stagione in cui cade la data.
  • un metodo IsSummer(). Questo metodo dovrebbe restituire true se la data cade in estate false altrimenti
  • un metodo DaysUntilNextSeason() che calcoli e restituisca il numero di giorni che mancano dalla data corrente fino all'inizio della prossima stagione.

STAGIONI: Estate (Summer): 21 Giugno - 20 Settembre Autunno (Autumn): 21 Settembre - 20 Dicembre Inverno (Winter): 21 Dicembre - 20 Marzo Primavera (Spring): 21 Marzo - 20 Giugno

Considera e testa i casi limite (come il 29 Febbraio negli anni bisestili) e le date di cambio stagione (es. 20 Giugno, 21 Giugno, 20 Marzo, 21 Marzo). Scrivi dei test unitari per assicurarti che i tuoi metodi gestiscano correttamente queste date.

Gattile

Obiettivo

Creare un'applicazione che gestisca le informazioni sui gatti di un gattile

Descrizione del Problema

Si richiede lo sviluppo di un'applicazione per la gestione completa dei gatti presenti in un gattile. L'applicazione dovrà permettere di:

  • registrare nuovi gatti,
  • visualizzare i gatti presenti,
  • gestire le adozioni e gli adottanti
  • tenere traccia delle adozioni fallite.

Requisiti Funzionali

Gatto
  • Ogni gatto deve avere un codice identificativo univoco generato al momento dell'iscrizione. Questo codice sarà composto da:
  • Un numero random di 5 cifre.
  • La prima lettera del mese di registrazione.
  • L'anno della data di registrazione.
  • Tre lettere casuali.

Le informazioni da memorizzare per ogni gatto sono: nome, razza, sesso, data di arrivo al gattile, data di uscita dal gattile (nullable se il gatto è ancora in gattile), data di nascita (nullable se sconosciuta in questo caso si memorizza l'anno presunto di nascita), descrizione

Adozioni
  • Per ogni adozione si deve sapere il gatto coinvolto, la data di adozione, l’adottante
Adottante
  • CF, nome, cognome, telefono, mail, indirizzo, cap, citta
Memorizzazione Dati
  • Tutti i dati devono essere memorizzati in file (JSON)
  • I file devono essere aggiornati automaticamente ogni volta che viene inserito un nuovo gatto o gestita una nuova adozione.
Considerazioni importanti per la progettazione
  • Separazione delle Responsabilità (SRP): Ogni classe e ogni metodo devono avere una singola responsabilità ben definita.
  • Principio Open/Closed (OCP): Le classi dovrebbero essere aperte all'estensione ma chiuse alla modifica.
  • Dipendenza da Astrazioni: Favorire l'uso di interfacce o classi astratte per ridurre le dipendenze concrete.
Gestione degli Errori

Prevedere la gestione di eccezioni per situazioni anomale (es. file non trovati, dati malformati).

  • diagramma dei casi d'uso
  • domain del progetto
  • test del domain
  • se avete ancora tempo impostare il livello application con dto, mapper, interfacce e usecase

About

Esercizi di Informatica Svolti durante la permanenza nell'istituto superiore Blaise Pascal

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages