Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [JAVA] Studiato. Ma ora? Per non perdersi!

    Ciao a tutti ,

    mi mancherebbe un passaggio fondamentale per iniziare a programmare in Java: dopo aver studiato la teoria ed avere sottomano righe e righe di codice di esercizi ed esempi già svolti, vorrei capire come bisogna "agire" per passare dal testo dell'esercizio al codice vero e proprio.

    Per prima cosa leggerei bene il testo dell'esercizio, distinguendo le "azioni" che il programma dovrebbe fare dagli "oggetti" che devo creare, ecc.

    Dopodiché dovrei già sapere più o meno quanti file .java andrò a creare: uno per l'oggetto del contendere, uno che faccia da comparatore di quegli oggetti, un altro contenente la classe main ed i metodi del programma stesso.

    Siccome l'argomento principale del corso di studi riguarda il "collections framework", dovrei individuare uno o più tipo di collezioni che utilizzerò per soddisfare quanto richiesto.

    Avete qualche suggerimento in merito? I miei passi sono corretti? Cosa manca?

    Grazie molte!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Studiato. Ma ora? Per non perdersi!

    Originariamente inviato da alemagno
    Per prima cosa leggerei bene il testo dell'esercizio, distinguendo le "azioni" che il programma dovrebbe fare dagli "oggetti" che devo creare, ecc.
    Beh, certo ma più che altro avere bene idea di quali sono le entità da "modellare". Per esempio se un esercizio ti parla di gestire una lista di studenti letta da un file, allora innanzitutto quasi sicuramente avrà senso creare una classe Studente che "modella" uno studente con le sue varie proprietà.

    Originariamente inviato da alemagno
    Dopodiché dovrei già sapere più o meno quanti file .java andrò a creare: uno per l'oggetto del contendere, uno che faccia da comparatore di quegli oggetti, un altro contenente la classe main ed i metodi del programma stesso.
    Sì e per precisare è bene dire che dovresti in genere cercare di non far fare alle classi troppe cose. Ogni classe dovrebbe essere focalizzata su uno (o eventualmente max pochi aspetti). Questo è uno dei concetti fondamentali: "high cohesion" (alta coesione).
    Se fai una classe es. Studente puoi metterci tutti i metodi setter/getter che vuoi per le proprietà, poi equals/hashCode (se servono), anche compareTo di Comparable o altro. Ma tutto quanto focalizzato solo alla definizione/gestione dei dati di uno studente.
    La classe Studente cioè non dovrebbe mettersi a fare I/O su file, fare input verso l'utente o mostrare una dialog di avvertimento per qualcosa anche se fosse relativo allo studente.

    Originariamente inviato da alemagno
    Siccome l'argomento principale del corso di studi riguarda il "collections framework", dovrei individuare uno o più tipo di collezioni che utilizzerò per soddisfare quanto richiesto.

    Avete qualche suggerimento in merito?
    Qui quale è il dubbio preciso? Ci sono tante collezioni, ognuna ha le sue caratteristiche e lati positivi/negativi. Dipende ovviamente da cosa devi fare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Esempio:

    Per ogni film il programma deve tenere traccia dei seguenti elementi informativi:
    · Titolo del film
    · Casa di produzione
    · Anno di produzione
    · Regista
    · Premi
    Gli elementi informativi hanno le seguenti proprieta’:
    · il titolo del film e’ una chiave univoca, non possono esistere, cioe’, due film con lo stesso titolo;
    · ogni film e’ prodotto una sola volta, non si puo’ quindi verificare la situazione che un film
    possa essere attribuito a piu’ di una casa di produzione o a piu’ di un anno.
    Il programma deve poter:
    1) Leggere un file di dati (nome file da tastiera) formattato come descritto in fondo e inserire i dati
    cosi’ ottenuti nello stato corrente del sistema; Il numero di record per file non e’ noto a priori; i
    record all’interno del file non sono ordinati in alcun modo, possono appartenere a case di
    produzione ed anni diversi.
    2) Stampare una lista di tutti i film memorizzati nel sistema, raggruppati per anno di produzione,
    all’interno dei film di una stesso anno di produzione i film devono essere ordinati per casa di
    produzione e, a parita’ di casa di produzione, alfabeticamente per titolo.
    3) Effettuare ricerca con chiave alla casa di produzione e stampare la lista di tutti i titoli pertinenti
    a quella casa di produzione ordinati per anno di produzione e, a parita’ di anno, per titolo.
    4) Effettuare ricerca con chiave uguale all’anno di produzione e stampare la lista di tutti i titoli
    pertinenti a quell’anno di produzione ordinati per casa di produzione e, a parita’ di casa, per
    titolo.
    Non e’ necessario che il programma sia in grado di gestire uno stato persistente da un’esecuzione
    all’altra.
    Formato dei files dati.
    File di testo, un campo per linea, zero o piu’ campi per file.
    Ogni record e’ costituito dai seguenti campi:
    INIZIO
    <titolo>
    <casa di produzione>
    <anno di produzione >
    [REGISTA: < nome del regista>]*
    [PREMI: <nome dei premi attribuiti>]
    FINE

    Farò una classe per il film, uno per l'elenco dei metodi, una classe per la comparazione di film... ma poi? Passi successivi?

  4. #4
    io farei un bel DB
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da bomberdini
    io farei un bel DB
    Originariamente inviato da alemagno
    Non e’ necessario che il programma sia in grado di gestire uno stato persistente da un’esecuzione
    all’altra.





    @alemagno: inizia col farti qualche diagramma UML (class diagram, sequence diagram...), in questa fase sono molto d'aiuto
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Originariamente inviato da Alex'87
    non necessario non significa vietato

    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da bomberdini
    non necessario non significa vietato

    Certo, ma la richiesta di alemagno era un'altra, ben diversa: lui chiedeva qualche consiglio su come organizzare l'architettura del suo progettino/esercizio. E dirgli "io farei un bel DB" sinceramente non c'entra molto , tutto qua ^^
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Originariamente inviato da Alex'87
    Certo, ma la richiesta di alemagno era un'altra, ben diversa: lui chiedeva qualche consiglio su come organizzare l'architettura del suo progettino/esercizio. E dirgli "io farei un bel DB" sinceramente non c'entra molto , tutto qua ^^
    non c'entra perche' lui non mi ha risposto : ok

    altrimenti gli avrei proposto come organizzare l'architettura usando appunto un db.

    comunque magari non ha nemmeno studiato i db e puo fare la progettazione usando uml

    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da alemagno
    Farò una classe per il film, uno per l'elenco dei metodi, una classe per la comparazione di film... ma poi? Passi successivi?
    Allora:

    1) Sicuramente una classe es. Film per modellare il film con tutte le proprietà che hai citato (chiaramente dovrai valutare tu come rappresentare certe proprietà es. i "Premi").

    2) Ti consiglierei di fare una classe es. LettoreFileFilm che si occupa solo di leggere i film da file. Visto che il numero di film è arbitrario e non noto a priori, personalmente ti suggerisco di fare un metodo di istanza che legge e restituisce un film per volta.

    Non so se conosci la classe java.io.BufferedReader, essa ha un metodo readLine() che legge 1 riga per volta e se non ci sono più righe restituisce null. Ecco, in modo similare puoi fare un metodo es. Film leggiFilm() e se non ce ne sono più (end-of-file), restituisci null.
    E internamente a questa classe puoi benissimo sfruttare proprio un BufferedReader!
    Se c'è qualcosa di "malformato", puoi lanciare una eccezione, generica o magari specifica che definisci tu.

    3) Per il resto, cioè la gestione dell'insieme dei film e delle ricerche, dipende molto da come vuoi gestire tali ricerche, nel senso: se ti basta fare sort su una lista e ricerche "lineari" su una lista o vuoi creare un tuo "insieme" che sia più "indicizzato" e/o che offra metodi es. getFilmPerAnno(int anno)

    Per il momento non mi viene in mente altro, qualche dritta comunque te l'ho data, spero.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10

    Re: Re: [JAVA] Studiato. Ma ora? Per non perdersi!

    Originariamente inviato da andbin
    Beh, certo ma più che altro avere bene idea di quali sono le entità da "modellare". Per esempio (cut)
    Ti ringrazio molto.

    Come ci si esercita e si "impara"? Facendo inizialmente esercizi "semplici", magari guardando lo svolgimento, cercando di capire perchè lo sviluppatore ha fatto quelle scelte, dopodichè farne di proprie finchè non si ottiene lo stesso risultato?

    Guardando la soluzione proposta ci capisco abbastanza (o meno di abbastanza), ma mi verrebbe male (come il complesso dello scrittore, che non sa cosa scrivere davanti ad un foglio bianco ) partire da zero, anche se mi sa che è l'unica strada per capire.

    Tu ad es. come hai fatto ad impratichirti così bene?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.