Progetto agenda appuntamenti

di il
19 risposte

Progetto agenda appuntamenti

Ciao a tutti, è la mia prima discussione quindi prima di passare ai problemi mi presento; Mi chiamo Giuseppe e sono uno studente universitario di informatica e da poco ho iniziato a programmare in linguaggio java. Premetto che l'insegnamento è stato un po' scadente, quindi sto cercando da zero di capirci qualcosa. Devo preparare un progetto per l'esame e tra le scelte ho scelto l'agenda di appuntamenti. Vi spiego un po' cosa ho fatto fin'ora:
Ho dichiarato 2 classi:
CLASSE APPUNTAMENTO con campi data, ora, luogo, tipo
CLASSE CONTATTO con campi nome, cognome, telefono, email, città.
Poi ho creato altre 2 classi:
CLASSE AGENDA CONTATTI che contiene un ArrayList di Contatto in cui aggiungo contatti ecc.
CLASSE AGENDA APPUNTAMENTI che contiene un ArrayList di Appuntamento in cui aggiungo appuntamenti ecc.
Di queste 4 classi ho anche le classi per i test di JUnit che funzionano.
Ora il problema che mi perseguita è questo: siccome devo creare dei metodi che dato un contatto devo trovare l'appuntamento, come faccio a concatenare l'arraylist di contatti con l'arraylist di appuntamenti? Perchè fin'ora contatti e appuntamenti non hanno nulla in comune.
Oppure sì può fare dichiarando diversamente le classi? Tenete conto che il prof vuole classi ben distinte, quindi contatti e appuntamenti devono avere classi distinte.
Grazie in anticipo

19 Risposte

  • Re: Progetto agenda appuntamenti

    Giuso ha scritto:


    siccome devo creare dei metodi che dato un contatto devo trovare l'appuntamento, come faccio a concatenare l'arraylist di contatti con l'arraylist di appuntamenti? Perchè fin'ora contatti e appuntamenti non hanno nulla in comune.
    Appunto ... ora non sono in relazione. Ma una relazione ci deve essere tra queste due entità. E dovresti dircela tu.
  • Re: Progetto agenda appuntamenti

    Ci deve essere ma non so in che modo farla. La relazione deve consistere nel fatto che un appuntamento, oltre ai suoi campi deve fare riferimento al contatto con cui è stato preso l'appuntamento. Se io ho ''visita, 12:30, 12/11, ufficio'' e in contatto ''mario, rossi, , bologna''
    devo sostanzialmente creare una classe che mi mette in relazione le altre 2. Non so se è chiaro. Nel caso posso postare i codici.
    Comunque in fin dei conti devo poter inserire un nome di contatto e trovare l'appuntamento relativo. Come faccio?
  • Re: Progetto agenda appuntamenti

    Giuso ha scritto:


    La relazione deve consistere nel fatto che un appuntamento, oltre ai suoi campi deve fare riferimento al contatto con cui è stato preso l'appuntamento.
    Detto così allora vorrebbe dire che in Appuntamento va messo un campo in più di tipo Contatto. Che appunto fa riferimento al contatto.

    Giuso ha scritto:


    Comunque in fin dei conti devo poter inserire un nome di contatto e trovare l'appuntamento relativo. Come faccio?
    Se come detto sopra, e hai una lista di oggetti Appuntamento, allora dovrai scorrere la lista e verificare su ciascuno se il Contatto ha le caratteristiche che cerchi.
  • Re: Progetto agenda appuntamenti

    Se aggiungessi il campo Contatto, nei metodi della classe Appuntamento dovrò passare tutti i campi della classe contatto? Cioè quando creo un appuntamento avrò una.funzione con una decina di parametri in ingresso?
  • Re: Progetto agenda appuntamenti

    Giuso ha scritto:


    Se aggiungessi il campo Contatto, nei metodi della classe Appuntamento dovrò passare tutti i campi della classe contatto?
    No, solo il riferimento ad un oggetto Contatto. Che chiaramente devi avere già creato in precedenza.
  • Re: Progetto agenda appuntamenti

    Ah ok, proverò, anche se in java non ho ben presente come fare. Grazie per ora
  • Re: Progetto agenda appuntamenti

    Giuso ha scritto:


    anche se in java non ho ben presente come fare.
    In Appuntamento:

    private Contatto contatto;

    e poi i relativi metodi getter e/o setter public. Nè più nè meno di quanto hai fatto per gli altri campi.
  • Re: Progetto agenda appuntamenti

    Ok, ho fatto l'aggiunta. Mi ritrovo quindi:

    public class Appuntamento {
    private final String data;
    private final int ora;
    private final String tipo;
    private final String luogo;
    private Contatto contatto;

    public Appuntamento(Contatto contatto, String tipo, int ora, String data, String luogo).....

    Avrei però una domanda per quanto riguarda i test e ciò che devo passare a questi metodi che hanno come parametro un contatto. Ad esempio per fare questo test, cosa dovrei aggiungere?
    assertEquals(appuntamenti.aggiungiAppuntamento("visita", 12, "12/12", "ufficio"), true);
    dove appuntamenti è un tipo Agenda, e Agenda contiene ArrayList di contatti e Arraylist di appuntamenti. Per adesso ho aggiunti (null,"visita", 12, "12/12", "ufficio"),per non avere errori nel test.
  • Re: Progetto agenda appuntamenti

    Giuso ha scritto:


    che devo passare a questi metodi che hanno come parametro un contatto. Ad esempio per fare questo test, cosa dovrei aggiungere?
    Devi passare un oggetto Contatto. Lo devi creare tu. Così come passi dati "fittizi" di test es. "ufficio", dovrai creare un oggetto Contatto con dati fittizi.
  • Re: Progetto agenda appuntamenti

    Quindi il mio metodo aggiungiContatto droverre restituirmi un contatto che potrei salvare nel'oggetto Contatto c. A questo punto nei metodi di appuntamento passo l'oggetto c, giusto? Perchè fin'ora aggiungiContatto mi restituisce true o false a seconda che me lo aggiunge oppure no, me non credo vada bene per la modifica che ho fatto.
  • Re: Progetto agenda appuntamenti

    Giuso ha scritto:


    Quindi il mio metodo aggiungiContatto droverre restituirmi un contatto che potrei salvare nel'oggetto Contatto c. A questo punto nei metodi di appuntamento passo l'oggetto c, giusto? Perchè fin'ora aggiungiContatto mi restituisce true o false a seconda che me lo aggiunge oppure no, me non credo vada bene per la modifica che ho fatto.
    Ma parli di aggiungiAppuntamento o di aggiungiContatto? Se questi, per requisito, devono restituire un boolean ... allora restituiranno un boolean! Non devi cambiare le cose solo perché ti fa comodo o perché magari ti serve (?) per dei test.

    Io purtroppo non ho visione completa dei requisiti né della tua implementazione. Quindi non saprei dire molto di più
  • Re: Progetto agenda appuntamenti

    Se riuscissi a caricare i file daresti un occhiata? Non mi accetta ne file .txt ne file .java, come faccio a postarli?
    intanto ti mando i requisiti:
    • Contatti con cui si prendono appuntamenti, contenenti almeno:
    ? nome e cognome;
    ? altri eventuali dati personali.
    • 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).
    • Un’agenda che raccolga contatti e appuntamenti, e che deve almeno:
    ? poter essere memorizzata e letta da file, in formato leggibile da editor di testo;
    ? provvedere un iteratore che scorra gli appuntamenti in ordine di orario (senza poterli
    cancellare);
    ? aggiungere, modificare e rimuovere contatti e appuntamenti, avvisando in caso si creino
    sovrapposizioni di appuntamenti;
    ? cercare appuntamenti per data;
    ? cercare appuntamenti per contatto.
    • Un interfaccia testuale o grafica
  • Re: Progetto agenda appuntamenti

    Giuso ha scritto:


    Se riuscissi a caricare i file daresti un occhiata?
    Tempo permettendo sì, certo.

    Giuso ha scritto:


    intanto ti mando i requisiti:
    Sono comunque un po' "vaghi", nel senso che lasciano molto spazio ad interpretazioni/implementazioni varie.
    Ad esempio la data, tu l'hai gestita come stringa. Ma fare ricerche con stringhe non è affatto bello/comodo. E se la data è nel classico formato italiano gg/mm/aaaa allora non potresti nemmeno farci ordinamenti.
  • Re: Progetto agenda appuntamenti

    Penso che ripartirò da capo perchè inizio a non capirci più nulla. Metto prima giù uno schema. La data forse potrei implementarla con un formato data fornito da java? forse anche per l'orario esiste qualcosa...
Devi accedere o registrarti per scrivere nel forum
19 risposte