Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Java] E' corretto questo esercizio?

    Sto seguendo la guida di Claudio De Sio su Java, in questa guida lui parla continuamente delle regole dell'OO e di come fare per non violare tali regole.
    A metà libro viene proposto un esercizio (senza che sia fornita soluzione) per capire da soli se si sono veramente apprese le cose scritte fino a quel punto, vi posto il testo dell'esercizio:
    Il lettore si limiti a simulare la seguente situazione:
    una rubrica contiene informazioni (nome, indirizzo, numero telefonico) su un certo
    numero di persone (per esempio 5), prestabilito (le informazioni sono preintrodotte nel
    metodo main()). L’utente dovrà fornire all’applicazione un nome da riga di comando e
    l’applicazione dovrà restituire le informazioni relative alla persona. Se il nome non è
    fornito, o se il nome immesso non corrisponde al nome di una persona preintrodotta
    dall’applicazione, deve essere restituito un messaggio significativo.
    Il lettore non ha altri vincoli.

    E vi posto anche come io l'ho svolto:
    Rubrica.java:
    codice:
    public class Rubrica{
    public static void main(String args[]){
    int trovato=0;
    String nome = args[0];
    Contatti c[] ={new Contatti("Aldo", "Rossi", 333),
    new Contatti("Giovanni", "Verdi", 444),
    new Contatti("Giacomo", "Bianchi", 555),
    };
    for(int i=0; i<=2; i++){
    if(nome.equals(c[i].getNome())){
      System.out.println(c[i].getNome());
      System.out.println(c[i].getCognome());
      System.out.println(c[i].getNumero());
      trovato = 1;
      break;
      }
    else{
      trovato = 0;
    }
    }
    if(trovato==0)
      System.out.println("Non è stata trovata nessuna corrispondenza");
    }
    }
    Contatti.java:
    codice:
    public class Contatti{
    private String nome, cognome;
    private int numero;
    public Contatti(String nome, String cognome, int numero){
    setNome(nome);
    setCognome(cognome);
    setNumero(numero);
    }
    public void setNome(String nome){
      this.nome = nome;
      }
    public void setCognome(String cognome){
      this.cognome = cognome;
      }
    public void setNumero(int numero){
      this.numero = numero;
      }
    public String getNome(){
      return nome;
      }
    public String getCognome(){
      return cognome;
      }
    public int getNumero(){
      return numero;
      }
    }
    L'applicazione l'ho provata e funziona, piuttosto quello che vorrei sapere io è se viola qualche regola della programmazione orientata ad oggetti, poiché in questo libro si parla veramente tanto della teoria ad oggetti adesso ho paura di sbagliare, poiché è da anni che utilizzo la programmazione procedurale e non so se l'utilizzo del ciclo for e delle condizioni sia dato da questo o esistono metodi alternativi che fanno l'uso dell'OO.
    E' corretto così o esistono altri modi più appropriati?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    99
    secondo me è dura che funzioni se non rivedi l'array nome.

    secondo me poi dovresti riguardare l'array come comando in generale, non c'è bisogno di istanziare una classe per ogni posizione dell'array per ottenere una risposta.


    sopratutto, nell'esercizio, se non erro ti viene richiesto di poter inputare una richiesta.

    Il tuo progetto non lo prevede e a meno che tu non decida a priori quale essa sia (ma mi sembra davvero poco istruttivo) ti consiglio di creare una sys out di input o un'inputbox.
    se mi chiedeste chi è per me un vero amico vi risponderei che è una persona che io considero alla pari di me.

  3. #3
    Non sono molto daccordo con gatsu, l'uso del bean Contatti è corretto in termini di OOP in quanto incapsula il concetto di Contatto e permette di nascondere i dettagli implementativi di quest'ultimo.
    Quello che non mi torna è che prima di tutto, come ti è stato fatto notare, il programma non implementa tutte le funzionalità richiesta dalla traccia (ricerca di un contatto).
    In secondo luogo la funzionalità di ricerca di un contatto io l'avrei inserita in metodo apposito della classe Rubrica, mi sembra più corretto che in una rubrica io possa cercare un con tatto.

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da francesco.muia
    Quello che non mi torna è che prima di tutto, come ti è stato fatto notare, il programma non implementa tutte le funzionalità richiesta dalla traccia (ricerca di un contatto).
    Come no?
    Il metodo main() prende un nome in input e lo cerca nei tre contatti memorizzati.

    Semmai si può fare qualche considerazione di ordine stilistico
    - come ha detto francesco, la fase di ricerca del contatto starebbe bene in un metodo a sé stante, richiamato da main()
    - la condizione di uscita dal ciclo for, invece di testare un brutale 2, dovrebbe testare la dimensione dell'array (i < c.length )
    - il "trovato = 0" nell'else non serve a niente, trovato è già a zero. In ogni caso, per questo dato un tipo booleano sarebbe più indicato
    - per voler proprio trovare il pelo nell'uovo, per la classe che contiene i contatti sarebbe più indicato un nome al singolare (Contatto)

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.