Ciao, questo è che non vogliono fare.
E bentornato.
In questo video esamineremo la soluzione per questo esercizio insieme ad almeno una delle migliori pratiche
nell'implementazione di una soluzione.
Pertanto, anche se hai completato correttamente la soluzione, potrebbe comunque essere utile per te guardare questo
video perché discuteremo di questa best practice.
Spero che tu sia in grado di implementare correttamente la soluzione.
In caso contrario, questo video dovrebbe essere davvero molto utile e sicuramente rafforzerebbe i concetti che sono stati
appresi finora.
Nel caso in cui non potessi iniziare, non preoccuparti.
Non devi essere scoraggiato da questo.
Questa discussione dovrebbe essere molto utile poiché siamo ancora agli inizi del corso.
Potrebbero essere necessari alcuni esercizi per familiarizzare con un programma che può accadere se sei completamente
nuovo alla programmazione.
Tuttavia spero che tu abbia fatto del tuo meglio per implementare l'esercizio in quanto questi esercizi sono
stati progettati per testare ciò che hai imparato finora.
Se non è stato possibile completare l'esercizio, implementarlo mentre discutiamo la soluzione qui.
Più ti importa più ti sentirai a tuo agio con la programmazione.
E per quelli di voi che sono in grado di completare la soluzione, come ho detto prima,
raccomanderei comunque WW visto che abbiamo anche discusso almeno di una buona pratica, specialmente nei dump di implementare i costruttori e
questo può essere utile.
Quindi tre cose di cui parleremo qui.
La prima è la soluzione corretta.
Poi vedremo anche l'aggiunta di migliori pratiche in termini di intimidazione e vedremo
anche gli errori comuni che gli studenti stavano facendo.
Devo aver esaminato almeno alcune centinaia di soluzioni finora e ho potuto vedere alcuni errori comuni che sono
stati fatti.
Posso discuterne e questo può aiutare a evitare tali errori in futuro.
Quindi andiamo forte e guardiamo cosa abbiamo qui.
Quindi questo è il mio editor di Eclipse.
Lo sto mostrando nell'editor degli script e questa è la classe dell'istruttore, quindi è stato fornito
un modello di questo e questa è la classe del libro, quindi è stata fornita anche la classe del libro.
Quindi andiamo avanti e osserviamo la classe dell'istruttore.
Quindi questi sono i diversi campi qui.
Fuori dall'istruttore.
Quindi questo è l'ID dell'istruttore.
Questo avrebbe il Dipartimento di titolo medio e i libri che l'istruttore ha scritto in modo che io faccia.
Ecco il titolo dell'istruttore.
Pochi studenti si stavano confondendo con questo.
Pensavano che questo fosse in qualche modo correlato al titolo del libro e
non è il caso perché il titolo dell'istruttore potrebbe essere qualcosa come assistente professore o professore o
professore associato.
OK, ora andiamo avanti e guardiamo i costruttori.
Quindi questi sono i quattro costruttori che abbiamo.
Quindi questi sono tutti i costruttori caricati.
E questo è quello dei costruttori e se interrompi questo costruttore invocherà
questo costruttore usando questa istruzione di invocazione.
Quindi questo particolare il secondo costruttore ha parametri e viene invocato da questo e questo e questo
particolare costrutto che viene invocato da qui.
E l'ultimo è invocato dal terzo e in ciascuno dei costruttori stiamo inizializzando una delle
variabili di istanza.
Quindi i costruttori sono usati per inizializzare le variabili inizializzando lo stato.
Ma il modo in cui lo stiamo facendo mentre stiamo invocando i costruttori sovraccaricati per farlo.
E in ognuno dei costruttori sovraccaricati stiamo iniziando a scappare dalle variabili di istanza.
Ecco cosa sta succedendo qui su questa affermazione.
Noi chiamiamo ciò che deve essere fatto.
Intendevo solo nel costruttore.
Se abbiamo questa dichiarazione di invocazione nel costruttore, deve essere la prima.
E per accedere alle variabili di istanza, stiamo usando questo riferimento.
Pochi studenti come si sono confusi tra questo in posizione su questo riferimento e sono completamente diversi.
Questa interazione è solo per invocare un costruttore e un disordine sovraccaricati.
La Francia è utilizzata per accedere a una variabile di istanza NBP sono necessari solo se esiste una variabile
locale nel costruttore che nasconde la variabile di istanza per esempio qui.
B Come libri.
Quindi questo è il parametro costruttore ed è una variabile locale e nasconde o oscura la variabile di
istanza del libro che qui è definita.
È un array off box.
Quindi, se accedete direttamente ai libri, si riferirà a questa particolare variabile locale perché nasconde
la variabile di istanza.
Quindi avrebbe questa idea se si desidera accedere alla variabile di istanza, quindi si
dovrebbe usare questo riferimento.
Quindi questo è quello che abbiamo qui con i costruttori e torneremo al costruttore alla fine
quando discuteremo delle migliori pratiche.
Ora qui diamo un'occhiata ai metodi ora.
Quindi questo è il primo metodo che ottiene i dati più recenti dei libri e restituisce una stringa.
Quindi si suppone che restituisca il titolo dell'ultimo libro memorizzato nei libri.
OK.
Quindi qui la corte sta andando al codice cliente il codice che sta invocando questa classe creerebbe un oggetto istruttore
e passerebbe tutto lo staff qui su uno di essi come libri e i libri hanno già un mucchio di
libri.
Si suppone che Unbe legga e l'ultimo elemento che è considerato come il libro più recente
che è stato aggiunto in quel particolare libro sia per leggere l'ultimo libro.
Vorremmo vedere i libri presi in prestito meno uno, abbiamo bisogno di meno uno perché l'indicizzazione e Arrius inizia da zero.
Ecco perché abbiamo bisogno di farlo.
Se fosse iniziato da uno, avremmo detto che i libri non sono stati appresi ma poiché inizia da zero.
Dobbiamo dire meno uno.
Se hai appena detto libri non molto, sarebbe fuori dai confini e Ari e sarebbe
scritto a.
OK.
Quindi questo.
OK.
Questa spedizione qui essenzialmente sta restituendo l'ultimo negozio di libri nei libri letti.
Quindi è un oggetto libro.
E dato che dovremmo restituire il titolo del libro, siamo solo in Wilkin, vai al metodo
che restituirebbe una stringa.
Quindi se guardi il libro di classe Djala.
Quindi questa è la classe del libro e questo è il costruttore e c'è solo una singola variabile di istanza
chiamata Titolo.
E possiamo impostarlo da qui e possiamo ottenere che io possa qui.
OK possiamo diventare più ristretti sotto il titolo del libro, quindi puoi farlo oppure puoi anche accedere
direttamente al titolo.
Si può dire.
Preso qui invece di accedere al metodo di acquisizione dei dati.
Quindi puoi farlo anche tu.
Ma non dovresti farlo.
Come apprendiamo più avanti in una o due sezioni successive, quando ci occupiamo di nascondere le informazioni.
Quindi vedremo che dovremmo sempre accedere a quei valori i valori dei campi.
Questi sono tali tipi di metodi.
Questi sono chiamati metodi meno accessibili perché accediamo a qualcosa.
Ma non dovremmo accedere direttamente ai campi e per impedirle di farlo.
Usiamo la parola chiave privata.
Ma dal momento che siamo all'inizio del corso, non entreremo più in pubblico su tutte
quelle cose che sono chiamate modificatori di accesso.
Quindi questo è solo per tua informazione che quando stiamo accedendo allo stato oa un particolare oggetto
dobbiamo usare metodi di accesso come questo invece di accedere direttamente a goofiness.
Quindi è solo per tua informazione.
Quindi non è una buona pratica accedere direttamente alla pipe in campo.
E che idealmente dovrei essere dichiarato privato.
Allo stesso modo tutte queste caratteristiche dovrebbero essere dichiarate come private, ma è qualcosa che le persone
studiano in seguito.
Quindi è così ora.
Pochi studenti in realtà molti studenti hanno fatto qualcosa del genere.
Hanno detto che i libri non vanno meglio perché presumevano che i libri che leggevo avrebbero sempre come solo
tre libri.
Questo perché nella descrizione del problema ho dato un esempio in cui i libri o sono
passati qui aveva tre libri e per qualche ragione hanno pensato che sarà sempre così.
Quindi non è il caso che fosse solo un esempio.
È stato anche menzionato nella descrizione del problema.
Quindi la matrice che viene approvata può avere tre libri e metà dei libri o può contenere 100 libri.
Quindi non puoi fare così non puoi.
Corda calda il valore dell'indice come questo è chiamato come codifica a mano.
In termini di programmazione non dovresti farlo.
Deve essere generico in questo me.
Questo è uno degli errori più comuni fatti da pochi studenti.
Ora diamo un'occhiata al secondo metodo adottato metodo in modo che il metodo di libro sta prendendo
questi due parametri nel prossimo Titan e ha bisogno di aggiornare il titolo del libro.
Questo particolare indice nei libri è così.
La seconda affermazione è così che stai dicendo che i libri non sono indicizzati e vogliamo aggiornare quelle idee.
Quindi stiamo lavorando per impostare un metodo più stretto.
E stiamo passando la nuova presa.
OK, ecco cosa fa
Ma deve restituire il titolo di anatra è stato inserito e che era lì prima.
Questo aggiornamento è stato fatto su Vinita in cui è stata scritta un'istanza di libro qui.
OK.
Quindi quello che stiamo facendo è creare una variabile temporanea e la chiameremo come un vecchio libro.
Quindi il tipo di lettore è rotto e stiamo creando un oggetto nuovo di zecca qui e stiamo assegnando
il titolo del libro a questo particolare indice.
Quindi pensiamo che i libri spesso accanto alla porta ottengano il titolo e che il titolo venga assegnato qui che
viene archiviato nell'oggetto del libro.
E poi, dopo averlo fatto, ci stiamo aggiornando.
Amo questo libro o nella seconda dichiarazione e stiamo tornando al vecchio libro.
Quindi il vecchio libro ha essenzialmente il titolo del libro e questo particolare indice prima di essere aggiornato.
Questo è tutto ciò che stiamo facendo e stiamo usando una variabile temporanea.
Pochi studenti hanno appena avuto questo.
Queste due affermazioni e stavano leggendo i libri nel prossimo anno, ma non sarebbe corretto perché in quel
caso l'oggetto che si sta scrivendo avrà il nuovo titolo.
Quindi non è quello che ci aspettiamo qui.
Quindi è sbagliato.
Quindi è necessario utilizzare variabili temporanee in tali scenari se si desidera memorizzare il valore prima che venga
aggiornato.
Quindi è quello che vorresti fare.
E la seconda cosa è stata che alcuni studenti lo hanno effettivamente implementato e lo sarà.
Quindi è solo un modo in cui lo implementano ma non è corretto.
Quindi le ultime due affermazioni erano corrette e hanno usato una variabile temporanea ma
con una variabile temporanea invece di creare un nuovo oggetto hanno appena assegnato i libri all'indice.
Quindi, una volta che lo facciamo, sappiamo che entrambi i libri offrono indici e builder di libri antichi della stessa istanza
di libri.
Quindi, quando hai aggiunto il titolo qui usando i libri su indice, ti darebbe anche lo stesso titolo.
Se vedrete che solo il cane del libro si sta facendo diking, è quello che la mia migliore ipotesi è discutere perché
stiamo leggendo questo libro.
E quando faccio il vecchio libro non capisco l'idea di leggere il titolo che è stato aggiornato qui.
OK, quindi stiamo avendo lo stesso oggetto libro a cui fanno riferimento due variabili diverse.
Uno è libri e il prossimo uno è orribile.
E questo è quello che abbiamo discusso durante un passaggio per il meccanismo del valore quando siamo in
quella particolare conferenza e anche nella lezione precedente all'esercizio.
Quindi, se sei ancora confuso, torna indietro e guarda quelle due lezioni su di esso dovrebbe essere chiaro per te.
Quindi questo non è quello che dobbiamo fare.
Dobbiamo creare un nuovo oggetto e quindi dobbiamo impostare l'I-T.
OK, questa è la cosa.
Ed ecco una seconda versione del peccato.
OK.
Quindi qui quello che stiamo facendo è che le ultime due dichiarazioni sono le stesse.
Ma invece di lavorare su questo particolare titolo del mistico del costruttore come argomento invochiamo qui il costruttore
di sblocco.
Quindi se ricordi che ho detto che potrebbero esserci dei cambiamenti che devi fare nella classe del libro ma
non è realmente necessario come mostrato da questo particolare metodo.
Ma il cambiamento che puoi fare è introdurre un nuovo o un costruttore qui.
E se lo fai puoi usare questo tipo di logica.
Quindi stiamo creando un oggetto libro vuoto e stiamo impostando un buon titolo con il titolo del libro.
Questo particolare indice.
OK, è solo un modo diverso di implementare.
Ma per questo abbiamo bisogno di aggiungere il costruttore più qui perché il compilatore non agirà in questo modo, sappiamo che se
non c'è alcun costruttore all'interno di quella classe allora il compilatore si inserirà automaticamente nel nostro costruttore
e questo verrà aggiunto in un byte court .
Ma poiché la classe ha già un costruttore, non lo farà.
Quindi se hai bisogno di un r costruttore in tal caso è necessario aggiungere manualmente il costruttore.
Tutto ciò che hai in questo particolare costruttore.
Quindi questo cambia.
Ma non era veramente richiesto.
E finalmente ecco il terzo un grande libro.
Il secondo metodo di aggiornamento che restituisce anche il libro con i vecchi dati.
Quindi ci vuole un indice e prenotare.
In questo caso stiamo creando una variabile temporanea, ma stiamo assegnando libri fuori indice.
OK il libro che è all'indice e poi a quei libri sull'indice stiamo assegnando il libro che è
passato nel metodo.
Quindi, in questo caso, OK a questo dopo la falsa dichiarazione, anche il libro di nascita dei libri fuori indice
sta vedendo spesso lo stesso oggetto.
Ma dopo questa affermazione i libri di indice fanno riferimento a un nuovo oggetto che è una sorta di
amici di bytebook mentre il vecchio libro dice ancora che il vecchio oggetto del libro a cui è stato assegnato è cresciuto in questo modo.
Quindi qui abbiamo due oggetti diversi che offrono questo.
Uno di questi è contro il mio vecchio libro e l'altro è referenziato da libri di indice e
B sono scritti nel libro qui.
Questo ha detto che è un bedacht.
Spero che questo sia anche un corriere.
Quindi, i metodi del libro stanno aggiornando i libri in questo particolare indice.
Ma le meta metriche stesse le istanze di libri scritti che hanno il titolo prima di aggiornare il titolo del libro
in questo allegato prima che venisse aggiornato ora.
Pochi studenti lo hanno fatto e cito un esempio al posto dei libri di indice come fa questo libro
con i cani che poi non è proprio sbagliato, ma non è obbligatorio.
Avresti detto questo non libri.
Quando c'è una variabile locale all'interno di questo metodo che aveva il NE che è stato nei libri.
Ok se questo fosse il caso, allora nasconderebbe la variabile di istanza.
Suppongo che possiamo usare questo riferimento ma qui poiché non esiste una variabile locale chiamata libri, possiamo accedere
direttamente al supporto di istanza.
OK, questa è una cosa.
Anche su Lyneham non è necessario il metodo principale.
Ma fammi vedere più tardi.
Per prima cosa fammi parlare delle migliori pratiche.
Un'altra buona pratica.
Quindi, invece di dichiarare in questo modo, possiamo farlo in un albero leggermente diverso che è una
normale convenzione.
Quindi permettimi di copiare questo OK.
Quindi ora quello che faremo è che abbiamo questo dot book.
Vediamo anche Oppy this
here Nome id tutti i film saranno in stanchly di I verranno inizializzati qui e poi B
come funziona il tuo titolo e questo dipartimento DOT.
Quindi tutti i campi sono inizializzati qui.
OK, questo è come il costruttore principale e possiamo ancora vedere come questi
costruttori, ad esempio, possono capire come questo costruttore qui.
Ma questo invocherà il ferro constrictor per il reparto in cui passerà anche i libri del Dipartimento Buckhart.
Non è come i libri qui perché solo quattro dei parametri qui passerebbe un valore predefinito.
In questo caso possiamo passarlo.
Quindi la stessa cosa può essere fatta per tutti i costruttori.
Quindi in un caso possiamo anche come entrambi.
Fammi solo copiarli.
Questo e questo sarebbe
il tipo 2 e può iscrivere questo costruttore o farlo direttamente nel costruttore principale.
Ma se coinvolge il costruttore principale ha bisogno di passare valori per dipartimento sui libri.
Ancora una volta può passare alcuni valori predefiniti come questo e B può rimuovere la casa e la stessa cosa qui.
Puoi testarlo e ti darà lo stesso risultato.
È solo un modo diverso di inizializzare tutto.
In modo che dette stringhe possano essere assegnate null.
Ed è per questo che stiamo passando NULL.
Quindi tutti questi tre costruttori obiettano nel camminare su questo particolare costruttore di istruttori che
sta facendo tutta l'inizializzazione.
Quindi tutte le inizializzazioni avvengono in un singolo costruttore.
Ma qui non era il caso.
Quindi questo in questo particolare costruttore stava inizializzando due campi e ognuno degli
altri costruttori stava invocando un costruttore sovraccarico, ma stiamo inizializzando solo una delle funzionalità.
Quindi questo sta inizializzando i libri.
Questo è dipartimento e questo è scrivere.
Quindi la cosa bella di questo è che tutti sono fatti in un unico posto.
OK.
Bill, quindi, come tutta la logica qui e tutti gli altri costruttori stiano camminando in quella direzione.
Quindi anche nella libreria Java molte classi sono scritte in questo modo.
Quindi puoi considerarlo come una convenzione, ma rigorosamente. Non devi seguirlo, puoi ancora
farlo, ma questa è la normale convenzione.
Quindi tutti questi diversi costrutti finirebbero di più ma non dovrebbe essere così.
Questo può anche migliorare questo e questo può aiutare a riparare il costruttore.
Anche questo è possibile.
E un'altra cosa da notare è solo perché abbiamo sovraccaricato i costruttori e
quindi non supponiamo che un costruttore sovraccarico invochi un altro costruttore usando questo richiamo che non deve essere necessariamente
le chiavi.
È solo che è così.
In questo caso, a volte è possibile che i costruttori siano sovraccaricati, ma non ci sono dichiarazioni di invocazione
tra di loro.
Quindi non si invocheranno a vicenda e saranno completamente indipendenti l'uno dall'altro.
Quindi puoi anche incontrare questi casi.
OK, questo è uno.
Convenzioni sulle best practice per avere un costruttore principale e tutti gli altri costruttori nel camminare e il gioco
è fatto.
E un'altra cosa è che puoi vedere che non esiste un metodo principale qui.
Quindi per la soluzione se si sta andando a qualcosa che non abbiamo bisogno di un metodo principale, il metodo principale è
necessario solo se si vuole eseguirlo dalla riga di comando.
OK, quindi è principalmente a scopo di test.
Ma per poterlo inserire nella piattaforma come soluzione, non hai nemmeno bisogno di me.
Quindi pensa che questa classe sia usata come parte di un programma più ampio.
Cose che pensano che esista un sistema di gestione universitaria e che il sistema di gestione universitaria
abbia una sorta di interfaccia utente in cui gli istruttori si registreranno nel sito e nel registro dei
fornitori.
Creeremo un'istanza per creare un oggetto di un particolare istruttore e anche per quel processo impostato
e archiviato nel database o qualcosa del genere.
Allo stesso modo, ho un caso di test che ho installato per testare questo programma.
Puoi anche pensare di schivare il programma Petkus nel programma ospite dell'unità AJ come quel Granducato logico.
Quindi creerà anche istanze di questi istruttori su valori diversi passati a questi metodi.
E se si aspettano che l'output dell'output restituito sia lo stesso dell'output previsto, significa che il
metodo ha funzionato correttamente.
Altrimenti dirà che il metodo non è corretto.
Quindi questo è il punto.
E se hai il metodo principale puoi anche pensarlo come il metodo principale che è quel
programma logico dal quale stiamo creando queste istanze fuori dalla classe dell'istruttore.
Quindi questo è tutto.
Spero che tu abbia trovato questa soluzione utile e speriamo che sia utile anche per risolvere gli esercizi
futuri.
Grazie.
Cody infelice.