Visualizzazione dei risultati da 1 a 10 su 23

Discussione: Il reference this

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    8
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Esatto. E alla fine il concetto è tutto qui. Se in C hai già scritto una funzione che riceve un tot di parametri e invoca un'altra funzione passandoli tutti o qualcuno in meno o con qualche dato fisso in più... allora capisci il senso.

    Nel caso dei costruttori, come per i metodi, chiaramente il compilatore verifica che la invocazione sia lecita ed applicabile.

    Se nel costruttore Libro(String titolo) faccio

    this(titolo, "Editore sconosciuto");

    sto cercando di invocare un costruttore che riceve 2 String. Esiste un tale costruttore?
    Certo, il compilatore vede che c'è un

    Libro(String titolo, String editore)

    Stop, punto. Per il compilatore l'altro costruttore è applicabile e la invocazione è quindi lecita.
    A questo punto mi chiedo a cosa serve richiamare un costruttore uno dopo l'altro, sai farmi un esempio ?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Stark89 Visualizza il messaggio
    A questo punto mi chiedo a cosa serve richiamare un costruttore uno dopo l'altro, sai farmi un esempio ?
    Ma l'ho fatto prima l'esempio: voglio permettere di creare un oggetto Libro non solo con titolo+editore espliciti ma anche con solo titolo (e con un editore implicito predefinito).
    Magari voglio gestire tutta una serie di validazioni, ad esempio che il titolo non sia null e non più lungo di 100 caratteri e l'editore non null e non più di 50 caratteri.

    codice:
    public class Libro {
        private String titolo;
        private String editore;
    
        public Libro(String titolo, String editore) {
            if (titolo == null) {
                throw new IllegalArgumentException("titolo non può essere null");
            }
    
            if (titolo.length() > 100) {
                throw new IllegalArgumentException("titolo non può essere lungo più di 100 caratteri");
            }
    
            if (editore == null) {
                throw new IllegalArgumentException("editore non può essere null");
            }
    
            if (editore.length() > 50) {
                throw new IllegalArgumentException("editore non può essere lungo più di 50 caratteri");
            }
    
            this.titolo = titolo;
            this.editore = editore;
        }
    
        public Libro(String titolo) {
            this(titolo, "Editore sconosciuto");
        }
    
        // altro ....
    }

    Tutta la validazione e la assegnazione ai campi la metto nel costruttore generale, il primo. Il secondo è solo una comodità che passa un valore predefinito per l'editore. Ma sfrutta appunto tutta la logica del primo costruttore che invoca.
    NON c'è bisogno quindi di replicare (pessima cosa) la validazione in entrambi i costruttori!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    8
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Ma l'ho fatto prima l'esempio: voglio permettere di creare un oggetto Libro non solo con titolo+editore espliciti ma anche con solo titolo (e con un editore implicito predefinito).
    Magari voglio gestire tutta una serie di validazioni, ad esempio che il titolo non sia null e non più lungo di 100 caratteri e l'editore non null e non più di 50 caratteri.

    codice:
    public class Libro {
        private String titolo;
        private String editore;
    
        public Libro(String titolo, String editore) {
            if (titolo == null) {
                throw new IllegalArgumentException("titolo non può essere null");
            }
    
            if (titolo.length() > 100) {
                throw new IllegalArgumentException("titolo non può essere lungo più di 100 caratteri");
            }
    
            if (editore == null) {
                throw new IllegalArgumentException("editore non può essere null");
            }
    
            if (editore.length() > 50) {
                throw new IllegalArgumentException("editore non può essere lungo più di 50 caratteri");
            }
    
            this.titolo = titolo;
            this.editore = editore;
        }
    
        public Libro(String titolo) {
            this(titolo, "Editore sconosciuto");
        }
    
        // altro ....
    }
    Tutta la validazione e la assegnazione ai campi la metto nel costruttore generale, il primo. Il secondo è solo una comodità che passa un valore predefinito per l'editore. Ma sfrutta appunto tutta la logica del primo costruttore che invoca.
    NON c'è bisogno quindi di replicare (pessima cosa) la validazione in entrambi i costruttori!
    Ah ora è chiarissimo per il secondo costruttore valgono tutte le validazioni del primo si risparmia quindi tempo,g grazie ancora,infine sai consigliare qualche testo da studiare?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Stark89 Visualizza il messaggio
    per il secondo costruttore valgono tutte le validazioni del primo
    Certo, perché lo ripeto, è solo una invocazione di un altro pezzo di codice.

    Quote Originariamente inviata da Stark89 Visualizza il messaggio
    sai consigliare qualche testo da studiare?
    Per me "IL" libro su Java è "Java™ Programming Language, The, 4th Edition", Addison-Wesley Professional, anche se arriva solo fino a Java 5 (è del 2006) ma è ovviamente in inglese e comunque non è "per tutti". Esiste mi pare una traduzione in italiano.

    In italiano e recente, ci sono i libri di De Sio che sono ben citati sui forum. Ma non li conosco personalmente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    8
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Certo, perché lo ripeto, è solo una invocazione di un altro pezzo di codice.


    Per me "IL" libro su Java è "Java™ Programming Language, The, 4th Edition", Addison-Wesley Professional, anche se arriva solo fino a Java 5 (è del 2006) ma è ovviamente in inglese e comunque non è "per tutti". Esiste mi pare una traduzione in italiano.

    In italiano e recente, ci sono i libri di De Sio che sono ben citati sui forum. Ma non li conosco personalmente.
    Ti ringrazio, purtroppo il libro in inglese lo dego passare,faccio fatica ad apprendere questi concetti in italiano figuriamoci in inglese,sto studiando proprio l'ultimo di Claudio De Sio

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Stark89 Visualizza il messaggio
    faccio fatica ad apprendere questi concetti in italiano figuriamoci in inglese
    La documentazione javadoc (del framework di Java SE o di altre librerie) devi però cercare di leggerla ... senza non si va in generale molto lontano ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    8
    Quote Originariamente inviata da andbin Visualizza il messaggio
    La documentazione javadoc (del framework di Java SE o di altre librerie) devi però cercare di leggerla ... senza non si va in generale molto lontano ...
    Si ho dato un occhio,credo che mi serviranno pii avanti, sono arrivato al l'incapsulamento,dopo aver studiato l'ereditarietà credo di poter iniziare a sviluppare qualcosa,per fare un programma con interfaccia grafica devo conoscere qualche altro argomento?vorrei creare un programma che calcoli il codice fiscale

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 © 2026 vBulletin Solutions, Inc. All rights reserved.