Progetto agenda appuntamenti

di il
19 risposte

19 Risposte - Pagina 2

  • Re: Progetto agenda appuntamenti

    Giuso ha scritto:


    Penso che ripartirò da capo perchè inizio a non capirci più nulla. Metto prima giù uno schema.
    Sì, direi che è meglio. Pianifica bene: a) quali sono le entità coinvolte; b) cosa devono contenere come informazioni; c) in che relazioni devono essere.
    Le implementazioni (cioè proprio lo scrivere le classi) verranno dopo.

    Giuso ha scritto:


    La data forse potrei implementarla con un formato data fornito da java? forse anche per l'orario esiste qualcosa...
    Nel framework di Java Standard Edition ci sono già classi che modellano date/orari. E da Java 8 c'è una nuova Date/Time API molto ben fatta. Bisogna solo vedere se è lecito che le usi nel tuo progetto. Dovresti verificarlo tu.

    Per dubbi, continua pure a chiedere. Tanto sono qui e per Natale non vado da nessuna parte ...
  • Re: Progetto agenda appuntamenti

    Aggiungo alcune considerazioni su cui puoi iniziare a ragionare.

    Giuso ha scritto:


    • Appuntamenti di diversi tipi, tra cui almeno:
    ? appuntamenti con un contatto, fissati per un certo luogo, orario e durata;
    ? un altro tipo di evento in agenda a scelta, per esempio, le deadline (orario entro il quale una
    certa cosa deve essere finita).
    Queste due cose sono ben diverse: uno è un appuntamento che dura un tot di tempo, l'altro è solo un "istante" che fa da deadline ("scadenza").

    Saranno sicuramente da modellare diversamente. Come .. è da valutare. Ma ci sono anche altre cose da valutare: una deadline può essere in mezzo ad un appuntamento? O no?

    Giuso ha scritto:


    ? poter essere memorizzata e letta da file, in formato leggibile da editor di testo;
    La gestione del file di testo è una cosa che puoi vedere anche successivamente. Ci saranno comunque un po' di cose da valutare sul formato e altro.

    Giuso ha scritto:


    ? provvedere un iteratore che scorra gli appuntamenti in ordine di orario (senza poterli
    cancellare);
    Conviene che gli appuntamenti siano già tenuti e mantenuti ordinati per data/orario, così l'iteratore avrà vita più facile. Il fatto che non si possano eliminare dal remove() del Iterator significa che dovrai fare tu una implementazione di Iterator in modo che il remove() sia "innocuo".

    Giuso ha scritto:


    ? aggiungere, modificare e rimuovere contatti e appuntamenti, avvisando in caso si creino
    sovrapposizioni di appuntamenti;
    Questo è uno degli aspetti più critici e su cui dovrai "ragionare" maggiormente. Il fatto di mantenere ordinati gli appuntamenti per data/orario chiaramente aiuterà anche un po' in tal senso. Ma bisogna appunto studiare la logica generale per verificare le eventuali sovrapposizioni.
  • Re: Progetto agenda appuntamenti

    L'idea infatti era quella di mantenere inalterata la classe Contatto, ma aggiungere due differenti classi di Appuntamenti, di cui una accetta come campo anche un contatto, mentre l'altra è un semplice arraylist. A questo punto però direi che è inutile memorizzare i contatti in un array, tanto il contatto devo inizializzarlo solo nel momento in cui ho bisogno quel tipo di appuntamento. Posso ad esempio usare metodi come setNome(nome) ecc. per inizializzare i campi del contatto? Però come faccio a richiamarli passandogli il nome ecc. quando creo l'appuntamento?
    Il mio problema è capire come mettere in relazione le varie cose, perchè fare i metodi è la cosa che meno mi preoccupa. Ti ringrazio comunque, sei molto disponibile. AUGURIII!
  • Re: Progetto agenda appuntamenti

    Giuso ha scritto:


    aggiungere due differenti classi di Appuntamenti, di cui una accetta come campo anche un contatto, mentre l'altra è un semplice arraylist.
    Come ho detto prima, i due tipi di "eventi" sono ben differenti. Quindi presumibilmente saranno da "modellare" in modi differenti e quindi di fatto con due classi distinte.

    Ma bisogna vedere come devono essere trattati e gestiti: devi avere una singola collezione che tiene tutti i tipi di eventi in modo promiscuo? Allora si fa una super-classe es. Evento con sotto-classi es. Appuntamento e Scadenza.
    Oppure no? Allora li potresti gestire separatamente (quindi nessuna gerarchia). Inoltre l'ho detto prima: una scadenza può essere in mezzo ad un appuntamento? Se sì o no, questo cambia la logica di gestione.

    Giuso ha scritto:


    A questo punto però direi che è inutile memorizzare i contatti in un array
    Non è detto .. dipende. Se dovessi stampare tutti i contatti magari tenuti in un certo ordine, allora una collezione mantenuta ordinata sarebbe l'ideale. Devi poter cercare "velocemente" se un certo contatto esiste? Devi poter cercare "velocemente" tutti gli appuntamenti relativi ad un certo contatto? Sono tutte cose da valutare.

    Giuso ha scritto:


    Posso ad esempio usare metodi come setNome(nome) ecc. per inizializzare i campi del contatto? Però come faccio a richiamarli passandogli il nome ecc. quando creo l'appuntamento?
    Crei l'oggetto Contatto, poi chiederai all'utente "Inserisci il nome" (appena letto userai setNome), poi chiederai all'utente "Inserisci il cognome" (appena letto userai setCognome), ecc...
  • Re: Progetto agenda appuntamenti

    In effetti i due diversi appuntamenti dovrebbero stare nella stessa collezione.
    Per i contatti mi hai detto che se voglio scorrerli velocemente per trovare l'appuntamento relativo dovrei memorizzarli in un arrayList. Ma se io ho già l'arraylist di quel tipo di appuntamenti, accedendo al campo contatto.nome ad esempio dovrei recuperare il nome e quindi so se esiste quel contatto, no?

    un altra cosa: io dovrò fare per come lo vuole il prof la classe Prompt in cui dichiaro il main e li dentro con uno switch farò una specie di menù e a seconda del carattere digitato potranno essere eseguite varie funzioni. Ho notato però che se io richiamo un metodo di una classe (ad es. setNome) java mi da degli errori di riferimento ecc, legati al fatto che il main è un metodo statico e le mie classi non lo sono. Penso sia una cavolata, ma non capisco come fare per lasciare le mie classi così e poter richiamare i metodi nel main.

    Per quanto riguarda lo scorrimento di una collezione, non basta un semplice for each sul parametro che mi interessa? cioè scorro tutti i contatto.nome e quando trovo quello che cerco restituisco i campi dell'appuntamento.

    Come ordinamento è richiesto solo quello per orario (che per semplicità sto rappresentando con un intero). Siccome non ho la minima idea di come si faccia, esiste qualcosa di semplice che mi permetta di mantenere l'orario come un intero? Il formato DATE di java preferisco non usarlo, anche perchè va fuori i contenuti del corso.
Devi accedere o registrarti per scrivere nel forum
19 risposte