Introduzione alla Programmazione: Vettori e Record in Java
Concetti Fondamentali
- Vettori: Strutture dati che contengono un insieme di elementi dello stesso tipo. Ogni vettore è un puntatore a un'area di memoria che contiene i dati.
- Record: Strutture che possono contenere diversi tipi di dati, utilizzate per rappresentare informazioni complesse. In Java, i record sono implementati tramite classi. Per una comprensione più approfondita delle classi in Java, puoi consultare l'"Introduzione alla Classe File in Java: Gestione dei File e Directory".
Vettori
- I vettori sono dichiarati con un tipo specifico (es.
int[] numeri
), e ogni elemento è accessibile tramite un indice. Per ulteriori dettagli sui fondamenti della programmazione in Java, ti consiglio di dare un'occhiata al "Java Course Introduction: Mastering Coding Fundamentals and Data Structures". - La memoria per i vettori è allocata dinamicamente, e il loro utilizzo richiede attenzione alla gestione della memoria.
Record e Classi
- Un record è una registrazione di informazioni correlate, come i dati di una persona (nome, cognome, anno di nascita).
- In Java, i record sono definiti tramite classi, dove ogni campo della classe rappresenta un attributo del record. Se desideri approfondire la struttura e la configurazione delle classi, puoi consultare il "Java Programming Course: Introduction, Structure, and Setup Guide".
- Le classi possono contenere variabili primitive e strutturate, e ogni oggetto creato da una classe è un'istanza di quella classe.
Creazione di Oggetti
- La creazione di un oggetto in Java avviene tramite l'operatore
new
, che alloca memoria e inizializza i campi dell'oggetto. - È importante comprendere la differenza tra la definizione di una classe e la creazione di un oggetto, poiché la classe è solo una definizione, mentre l'oggetto è un'istanza concreta in memoria. Per una panoramica completa su Java e i suoi concetti, puoi leggere "Java Programming: A Comprehensive Guide to Understanding Java and Its Concepts".
Conclusione
- Comprendere i vettori e i record è fondamentale per gestire dati complessi in programmazione. La distinzione tra classi e oggetti è cruciale per una corretta implementazione in Java. Se sei all'inizio del tuo percorso di apprendimento, potresti trovare utile anche "Java Basics: Outputs, Variables, and User Input Explained".
Allora cominciamo un nuovo argomento non non c'è tutta tutta sta distinzione
tra la parte di diamo di informatiche di tpsi su tpsi Bisognerebbe andare avanti su altre cose
legate sempre alle codifiche eccetera che sì sono importanti ma secondo me visto che tra l'altro è l'ultimo anno
che che ci sono bene cosa chiete L'anno prossimo E comunque mi sembra che stiamo andando abbastanza bene perlomeno quelli
che seguono seriamente ho pensato in tpsi di fare un'altra parte di legato sempre alla
programmazione e questo magari se non ci mettiamo tantissimo a farlo potrebbe anche essere che più avanti in tpsi si
possono usare queste competenze che abbiamo per fare qualcosa che invece è più inerente
quindi mentre in informatica Abbiamo cominciato ad affrontare i vettori qui passiamo agli altri tipi
di elementi che sono gli oggetti e diciamo che con queste due tipologie di di
informazioni avremo le basi per poter praticamente gestire quasi qualsiasi cosa Allora quello che vi ho spiegato è
che nei vettori abbiamo un insieme di elementi tutti dello stesso tipo quindi se io faccio un
vettore int numeri Eh così se questo ha poi dentro eh int di
10 avrà numeri che è una variabile di tipo
No la variabile numeri che è un vettore in realtà è un indirizzo memoria Quindi è
un puntatore Ricordatevi questa cosa del concetto di puntatore è una delle basi della
programmazione informatica in qualsiasi linguaggio quindi le variabili se sono primitive hanno dentro il valore se sono
diciamo in modo più generico strutturate cioè fatte da più elementi la variabile è sempre un
puntatore a un area di memoria ok perché non può contenere tutti i valori quindi in questo
caso questo qua sarà un indirizo di memoria di un blocco di memoria che contiene tutti G elementi tutti dello
stesso tipo e questo è il vettore Invece noi affrontiamo il caso in cui abbiamo una struttura che in
informatica che in generale prende il termine di record Ok Quindi il concetto informatico che affrontiamo adesso è il
record Record letteralmente in inglese vuol dire registrazione ok Quindi anche quando uno
dice ha fatto un record si chiama così perché è il miglior risultato e viene registrato Ok Quindi il termine di
record è quello ehm anche quando uno registra un un audio sta facendo Recording cioè
record vuol dire registrare [Musica] ehm nel caso
dell'informatica il record è un contenitore che diciamo poi in una fase più
avanzata servirà per scrivere tutti questi dati su disco Ok però lo vedrete l'anno prossimo Speriamo
Sta di fatto che il record è una registrazione in cui metto una serie di informazioni legate a
un concetto del problema che sto risolvendo ok Quindi quando Io affronto un
problema non banale quindi un po' complesso normalmente cosa c'è c'è una macro informazione so i dati della
persona ok Quindi questa macro informazione quindi G dati delle persone in realtà se poi vado a vedere in
dettaglio Da cosa è fatto è fatto da tante singoli valori elementari che contengono il dettaglio
Ok il record è l'insieme di tutte queste informazioni e praticamente Quindi si sceglie un una registrazione un record
associato a un macro a una macro informazione m all'interno di questo però non non è
detto che siano tutte variabili sto tipo ok perché perché se registrare i dati delle persone magari c'è cognome e nome
che sono una stringa l'hanno di nascita che è un intero il fatto che sia maschio femmina che è un
Buriano che so l'indirizzo dove abita e è un è una striga di nuovo il codice di avviamento postale è un numero di cin
cifre e così quindi il record è fatto da campi Ok che in inglese si chiamano
Fields e vi metto già in realtà l'associazione in
Java in Java si fa tutto con le classi Quindi il nostro record è fatto comunque con una classe ok e i
campi in Java sono le properties ok Oppure si chiamano anche campi Eh però
diciamo più propriamente le property di una classe E questi campi possono essere
Allora hanno un hanno il tipo e il nome ok Quindi come tutte le normali
variabili questo tipo come ogni tipo di ogni variabile può essere primitivo
primitivo oppure in generale si dice strutturato vuol dire che non è un
singolo valore Ma è un valore complesso Eh ok quindi sia i re sia i vettori che i record sono variabili strutturate
Perché Perché non hanno un valore solo le variabili primitive hanno un valore solo le variabili strutturate
hanno più valori quindi posso Ho la libertà di poter
determinare all'interno del record campi voglio e di qualsiasi tipo li voglio mettere
Ok siccome in Java è fatto con una classe vuol dire che tendenzialmente io devo creare una
classe per ogni diciamo macro informazione io devo che ne so gestire un problema in cui dico devo
memorizzare i dati del delle persone e anche del prodotto che che comprano Ok allora sono due macro
informazioni quindi saranno due classi diverse e poi mi vado a concentrare sul dettaglio di ciascuna macro informazione
da che cosa è fatto la persona cavà cognome nome eccetera eccetera il prodotto che compra il nome del prodotto
la marca il prezzo rivenditore eccetera quindi per ogni macro informazione faccio una
classe e nel 99,9% di casi deve essere distinta dal main Ok Quindi il mio main è quello che fa partire il
programma diciamo gestisce l'interazione con l'utente eccetera
e anche lui è una classe peré in Java si fa tutto con le classi Ma lì è unae tendenzialmente basata sul codice Qui
invece partiamo Poi vedremo che si può aggiungere qualcos'altro partiamo da una classe che fondamentalmente è fatta da
dati ok Quindi queste classi diciamo le classi normalmente sono fatte in due modi una classe a due componenti che
sono i dati il codice ok
fino adesso abbiamo visto delle classi in cui ci abbiamo messo solo il codice Ok come dati non vado a intendere il
fatto che voi usate dentro al Codice delle variabili sono delle variabili interne al codice
ok questa parte di dati sono dati che caratterizzano proprio la classe e quindi come vi ho detto adesso
facciamo un esempio se io ho una classe Public Class
persona e mettiamo un po' di Campi E mettiamo String
cognome String nome Int
anno nascita adesso fermiamoci qua ok Quindi questa è una classe in cui io mi sono concentrato sull'aspetto dei
dati la diciamo dichiarazione quindi la scrittura della di come è fatta la classe ok
Quindi questa dovrebbe essere la caratteristica di tutte le informazioni adesso mettiamo limitate ma di tutte le
informazioni che nel mio problema si riferiscono a questa categoria di dati che chiamo persona
Ok la determinazione della classe e dei suoi dati in realtà non sta creando nessuna variabile sta solo determinando
come è fatta quindi sto definendo una categoria di informazioni quindi non
ho creato una variabile persona ho solo detto potranno esistere delle variabili di tipo persona
se esisteranno saranno fatte in questo modo Ok quindi la scrittura di una classe con i suoi
dati è solo una definizione di una tipologia ok e ovviamente nel nello studio che faccio
della soluzione del problema devo andarla a determinare nel modo più preciso possibile
ok come tutti i dati e lo vedremo poi non subito probabilmente porti già la prossima lezione
vediamo dovrò In prima battuta a definirne il tipo corretto ma che è comunque un
anticipo della solita analisi che devo fare sui dati Qual è l'analisi che devo fare sui dati
per studiare Che siano corretti lo studio del dominio Ok quindi la cosa fondamentale è ho un problema riconosco
che nel mio problema c'è una macro informazione gli do un nome che sia rappresentativo di questa macro
informazione poi entro nel di tutti i dati che io voglio gestire Magari nella realtà ne ha tanti di più ma nel mio
problema non servono io vado a mettere solo quelle che sto il mio problema Ok quindi è vero che la persona potrebbe
avere anche il numero di calzature Ma se io studiando un problema in cui mi interessa soltanto sapere dove abita non
vado a interessarmi dei dettagli del colore dei capelli del genere se dovessi fare l'archivio dei dati del comune per
la carta identità invece mi può interessare il colore dei capelli i colore degli occhi e quant altro perché
sono caratteristiche che sono registrate nel documento quindi di per sé la l'informazione nel nella realtà
potrebbe avere anche più dati io devo concentrarmi su quali sono di competenza del problema che io devo risolvere Ok su
questi faccio la prima catalogazione della macr categoria dei dati quindi testo S una stringa se è un
numero devo capire se è un numero relativamente piccolo un intero Se è molto piccolo basta uno short se è molto
grande Un long sarà virgola al solito no poi in realtà come tutte le variabili dovrei
avere un controllo del dominio più preciso dicendo ok l' di nascita può essere un intero va benissimo Però non è
che può esserci 30.000 o Men 5000 Ok che negli interi è lecito dovrò fare un controllo di dominio più preciso E
questo lo vedremo però un po' più avanti ok Eh detto questo quindi Ribadisco questo
definisce una tipologia assolutamente non esiste ancora davvero nulla presente in memoria ho solo determinato
come fatto come si fa a utilizzare una classe Quindi qui Parliamo di una classe quindi
la classe è la tipologia ciò che noi usiamo nel programma sono gli
oggetti Ok Quindi nel mio programma principale se io devo creare un elemento fatto in quel
modo dovrò definire una variabile in cui metto il tipo che è il il nome della classe poi scelgo una una variabile
qualsiasi che ne so utente utente di tipo persona Lab
utente è di tipo primitivo o no no ok perché perché il tipo un elett maiuscola e quindi è associato a una
classe Quindi la variabile utente di che tipo è sì e in memoria
è un puntatore ok Quindi questo è un indirizzo di memoria quindi sempre Ricordatevi tutte le variabile che non
sono primitive quindi sono del tipo che inizia maiuscola sono dei puntatori quindi degli indirizzi di memoria quindi
sono alla fine dal punto di vista della memorizzazione tutte identiche Eh questo
appunto cerco di spiegarvelo anche diversamente ma la base di tutto se non capite questo non c'è niente da fare
allora quando tu magari finisco il discorso perché magari lo si capisce finendo
no Come si fa a utilizzare come avete usato fino adesso tutte le variabili che vi ho detto usatele così e basta tipo
scanner scanner adess maiuscola no Come facevate a usarlo facendo la new ok Quindi in realtà qui dopo creato la
variabile dovrò fare utente UG New [Musica]
persona Eh no allora adesso finisco discorso così vediamo cosa fa New persona fa tre operazioni che dovete
memorizzare assolutamente memoria quindi new Allora
cerca memoria RAM
sufficiente a contenere tutti i
campi della classe e questo Non è amente detto cioè ovvio che voi adesso usate dei programmi
molto piccoli con elementi piccoli il problema del fatto che non ci sia RAM abbastanza È
assolutamente impossibile che succeda però già anche adesso se voi faceste un vettore di Long ci mettete come numero
di elementi 1 milione in realtà probabilmente sono poi Eh sono poi
16 me quindi probabilmente non ci sono problemi avere 16 me di RAM occupa se metteste una dimensione ancora
estremamente più grande potreste anche solo con un vettore riempire la RAM che avete a disposizione
ok Eh sì sì quindi diciamo l'uso di del dell'operatore New va a cercare qualcosa nella RAM Potreste avere una
situzione di cui esaurite quindi già questo prima fase potrebbe dare errore se quello che chiedete è più grande di
quello che avete a disposizione Ok Anche perché poi il vostro programma non usa tutta la RAM che avrà il vostro computer
Cè il computer usa quando parte la Java vir machine prende un pezzo di RAM non tutta in genere parte con avete una
macchina con 8 G a dir tanto parte con un gigabyte suo perché deve funzionare
anche tutto il resto della macchina non solo il vostro programma no quindi la prima operazione è Cerca
RAM sufficiente per tutti i campi come fa a sapere quant'è va a vedere Comè fatta la
classe e per ciascuno di questi Eh va a vedere quanto è grande i Prim per esempio in questo caso
qua Quanto è grande la prima variabile la prima variabile Che cos'è È un Eh ma c' la s maiuscola la variabile
cognome l'oggetto è quando poi tu lo crei quello che stiamo arrivando è un puntatore quindi un puntatore la vostra
immaginiamo la vostra macchina la RAM a 32 bit Anzi adesso ormai diciamo stanno a 64
bit quindi gli indirizzi di memoria Sono indirizzati a 64 bit e vuol dire che occupa 8
Byte Ok Il secondo Idem 8 Byte e l'intero 4
Byte Quindi tiro la riga 16 20 questo occupa 20 Byte bene quando fa New del quando voi fate l'operazione New persona
va a cercare se ci sono 20 Byte a disposizione Ok bene ovviamente sarà piutosto facile trovarli quindi prende
questi 20 by che saranno divisi in questo caso in tre aree ok Quindi questo è il puntatore al
cognome questo è puntatore al nome e questo è anno di nascita questa memoria che ha trovato si trova
in un certo punto della RAM Ok che avrà un indirizzo come nel caso del vettore ricordate quando facciamo New vettore
andav a cercare di memoria e quella aveva un certo numero invento a 711 Quindi cosa succede che la seconda
operazione che viene fatta assegna l'indirizzo
iniziale della memoria al
puntatore quindi il puntatore quando voi create la variabile iniziale eh Con questa operazione di
no con questa operazione qua e da evidenziato con questa operazione persona utente avete determinato la
variabile qua sotto e questa variabile qua sotto all'interno
a tutti zeri che in java viene etichettato con la parolina nll null che vuol dire che sono tutti
Zeri ma dal punto di vista dell'indirizzo di memoria Quindi è un puntatore che non punta niente che sì
Vot Cioè non punta nulla perché l'indizio memoria Zero non è utilizzabile ok Quindi è uno di quei
famosi utilizzi del fatto che un numero è fuori dal dominio Ok quindi sapendo che Gli inizi memoria sono tutti diversi
da zero posso usare lo zero come un modo per dire il valore non ha senso
non non è utilizzabile Ok potevano anche usare tutti a un che
sarebbe stato fffff poi gli dai l'etichetta che vuoi per esempio in altri linguaggi l'indirizzo vuoto Non è
scritto null ma è scritto in certi casi in certi casi null con una l sola quindi l'etichetta che dà il linguaggio di
programmazione all'indirizzo Nullo può cambiare da un linguaggio all'altro ma il concetto è ho un puntatore che non
punta niente e quindi non lo posso usare quindi attenzione sempre che quando io ho una variabile di questo tipo Ok
quindi strutturata la variabile è un puntatore e fin io assegno qualcosa se la uso schianto con un
errore quindi dicevo dopo aver fatto la ricerca della R memoria e dentro non ci mette nulla a questo punto ho trovato
l'indirizzo e questo indirizzo Lo va mettere qua dentro ok Quindi in realtà dal punto di
vista ho creato un puntatore a quel blocco di memoria ma in realtà è realizzato
semplicemente scrivendoci il numero Ok quindi l'unica cosa è che qui ci mette il numero e basta Poi concettualmente
quello è un puntatore perché quello è un riferimento a quell'area di memoria
Ok la terza operazione che però non vediamo stasera ma ve la dico qui perché sono le tre cose che dovete memorizzare
la terza operazione esegue il codice
del costruttore Ok lo vediamo non non adesso ma eh esegue il codice del
costruttore Ok quindi la cosa che dovete adesso non so se andando avanti n esempio l'hai
capito Cioè la variabile primitiva int
numero c'ha una cella in memoria e qui dentro c'è il valore quindi se ci metti 7 è qua se metti 10 e qua quindi la
variabile è grande a sufficienza da contenere il tipo di dato che hai scelto quindi Long è il doppio int così short
la metà è un B solo eccetera no e lì dentro c'è il valore Invece tutte le variabili che hanno il
tipo con la iniziale maiuscola qualsiasi sia il tipo sono dei puntatori in memoria quando definisci la variabile
sono Nulli solo facendo New viene creata la memoria preso l'indirizzo E Gì dentro gli viene messo l'indirizzo e da quel
momento in poi è utilizzabile prima se lo utilizzi si schianta
Dimmi si può fare invece di fare per solo utente Sì sì io in realtà l'ho fatto separato
proprio perché a parte che a volte è separato davvero ok perché a volte hai la
variabile e il valore non fai ma ti arriva da da un'altra variabile cose di questo genere Sol questo sì primo
dichiara Quindi dice la variabile è fatta così ed è fatta così Vuol dire che cioè non è che non esiste esiste ed è un
pun se nono Niente Vale null Ok se tu lo fai praticamente metti
insieme le due operazioni certo la prima parte chea la variabile poi mettendo uguale New
persona fa la seconda parte Ok allora la classe serve solo per dire Comè fatta questa roba ma Esiste la
variabile Ok di la persona è fatta così il prodotto è fatto con nome del prodotto marca del prodotto il prezzo
che è un Flo lo scaffale in cui si trova che Che ne so una stringa a che piano si trova che è un numero ok Quindi è una
determinazione di una tipologia di informazione ma non esiste ancora niente per poter creare
diel tipo lì definisce un tipo una categoria di informazion per poterlo creare davvero
si deve fare in questo modo cioè definisco una variabile e poi con New si dice che creo l'oggetto quindi Qualcuno
dice che in questo caso dice che utente è un oggetto io preferisco sempre dare una bella distinzione perché
altrimenti poi ci si confonde l'oggetto è questo qua che creo con New Ok la variabile è un puntatore all'oggetto Poi
se qualcuno sentirete dire l'utente è una Tip oggetto sappiate che in realtà non è
così variabile è di tipo puntatore e l'oggetto è quello che viene creato dinamicamente Poi in alcuni
linguaggi tipo il C è un po' diverso forse anche linguaggio è possibile che una definizione di
questo tipo automaticamente crei lo spazio di memoria insieme alla variabile quindi
non si deve fare l'operazione New Ok quindi alcuni linguaggi non hanno l'operatore
New e è possibile creare la variabile che ha tutti i dati
direttamente associati alla variabile stessa ok E comunque sempre possibile farlo
dinamico Allora la variabile la posso definire faccio l'esempio in C non so se lo userete ma per esempio se io ci metto
l'asterisco di davanti Quindi se io non metto l'asterisco direbbe che l'utente ha associato tutti i dati se metto
l'asterisco diventa un puntatore E allora devo fare l'equivalente della New in C che è la memory aloc eccetera no
però restiamo con con come il funzionamento di Java che non ha
la possibilità di avere variabili strutturate direttamente associate alla variabile le variabili sono sempre tutte
puntatori Leti di no no Invent dei numeri sì sì sì sì
sì allora lo scrivo con in decimale perché è il modo in cui normalmente vengono rappresentati perché
se lo mettessi in B 1 diventa lungo in decimale è ancora abbastanza lungo in genere gli indizi
memoria sono presentati in es decimale perché è più compatto un un numero es decimale questo sarebbe
a a 16 bit in realtà se c'hai una macchina a 32 bit avrà altri numeri qua altri due numeri qua Questo 32 se è 64
bit [Musica] altri quattro qua e altri quattro qua ok
perché ogni in Esa decimale come l'avete visto nella conversione ogni
coppia va da 00 a FF Quindi da 00255 che sono le alternative del Byte quindi se hai in decimale 4 cifre
equivale a 2 Byte ok se hai in realtà due coppie quattro coppie
sono 16 bit OT coppie sono 64 bit Ok io siccome è solo un modo per
rappresentarlo scrivo dei numeri decimali che inventati No ma solo per Rendere l'idea di del fatto che che sono
indirizzi di memoria ok Dimmi se non abbiamo definito un
costruttore se un costruttore Sì ma poete il costruttore ne parlo più avanti Quindi per
adesso l'ho scritto qua perché vorrei che memorizzate questa Terna di operazioni quindi l'operatore New fa
queste tre cose dovete saperle tutte e tre memorizzarle senza
dimenticarle il primo step passo di cercare la RAM è più o meno come il vettore che anche certo uguale Sì solo
che nel vettore tu dici il singolo tipo e quanti sono e quindi lui cosa fa Fa la moltiplicazione tra la dimensione di
quel tipo singolo moltiplicato per Quanti elementi tu chiedi l'intero è sono 16 bit e quindi 2 Byte ne voglio 10
sono 20 Byte Ok Ne voglio 100 sono du modificare più avanti ince qua
modificare quanto prende il vettore Ah Quanti elementi prende lo puoi creare dinamicamente Sì però una
volta creato non lo puoi cambiare Eh quindi se l'hai creato da 10 e da 10 Se lo vuoi da 20 devi buttare via quello e
crearne uno da 20 può modare Eh no nel senso che qui lo spazio è dato dal D dimensione dei campi che ci messo Se tu
vuoi mettere degli altri campi ce li metti Ma devi ripartire da zero cioè devi il programma Non puoi cambiarlo
mentre sta andando Cioè non puoi mentre il vettore tu puoi dire allutente di Quanti elementi vuoi e Quanti elementi
lo sceglie lui qui l'utente non può scegliere lui se aggiungere dei campi Ok A meno che per esempio siccome si può
mettere qualsiasi cosa qui potresti anche avere un che ne so eh int
Eh che ne so la persona cos che potrebbe avere beh ma quello sarà uno solo no
Volevo mettere un vettore di di interi immaginiamo che Eh sì se qui fosse uno studente
potrebbe essere dei voti tanto per dire E quindi voti poi non saranno degli interi ma fa lo
stesso sarà un vettore e quindi a questo punto Poi nel programma ci sarà un voti uguale New int
di Quanti sono i voti che devo mettere chiaro cioè la variabile è sempre un puntatore perché essendo una
struttura complessa voti è un indirizzo Quindi Nel mio conteggio se macchina è 64 bit Saran
di nuovo 8 by e quindi il mio vettore Scusate la mia struttura diventa d28 Ok però sto cambiando il programma
cosa succede che il vettore può avere Quanti elementi vuole ma questa struttura non cambia Perché Perché voti
è solo il puntatore del vettore quindi dinamicamente poi andrò a creare una cera voal voal voti Ma la struttura
persona avrà sempre 28 by perché voti è un puntatore No perché questo è l'indirizzo
di memoria di Dove si trova il vettore se abbiamo una macchina a 64
bit sono 8 by cioè la dimensione dell'ind memoria Dipende da dall'architettura che stai usando adesso
non mi ricordo se sono a 32 o 64 bit quelli dentro laet credo
64 e quindi non è che se io ho un vettore con 10 vti o 5 vti cambia la dimensione di questo perché Perché voti
ha una dimensione fissa che è quella di un computatore vo indirizzo voti all indirizzo e quando creo quindi
dinamicamente posso determinare il numero di voti ma non Quanto è grande il record quindi la l'oggetto persona Ok la
classe è così l'oggetto viene fatto come la classe quando userò questo Class persona
Eh da parte del del vettore che posso scegliere Quante Celle vuoi giusto m poi la prende la prende
successivamente Eh sì Non volevo arrivare subito adesso ve l'ho accennato solo per perché stiamo parlando del
fatto che comunque la dimensione record non cambia e perché non ha lui non ha la dinamicità
perché vorrebbe dire aggiungere dei campi e mentre in in esecuzione non posso aggiungere campi Quindi se li
aggiungo è perché io programmatore ho aggiunto un campo Oppure ne ho tolto uno e poi il programma deve ripartire Ok ma
non può mentre sta girando il programma l'utente decidere alla persona aggiungo un certo Campo
Ok come Eh adesso ci arriviamo Quindi per adesso siamo arrivati a
dire come si comincia a creare l'oggetto Ok quindi la cosa importante è avete capito la differenza tra classe e
oggetto Eh quindi la classe è una determinazione generica di una tipologia di informazione ma non esiste ancora
niente davvero per creare qualcosa devo creare un oggetto che si dice in letteratura si dice che
l'oggetto è una istanza di una
classe Quindi istanziare vuol dire creare come se fosse non perché in realtà vuol dire che esiste già una cosa
ne faccio una copia l'istanza è da una matrice creo l'elemento quindi ecco considerate la classe come se sia una
matrice e la matrice non c'è ancora niente c'è solo la matrice la matrice Mi genera gli
elementi ogti fan parte delle i ter fanno fanno parte non so se è un termine corretto diciamo
sono degli sono [Musica] fatti a immagine della classe No cioè la
classe è lo stampo per creare gli oggetti Ok dire che fanno parte come se tu
avessi questi oggetti stanno dentro la classe In realtà non è così cioè la classe ha detto come sono e poi gli
oggetti stanno dentro o al main o una variabile globale o parte Ok di per sé l'oggetto vero e proprio è nella RAM
perché tu hai creato un puntatore Che punta all'oggetto quindi l'oggetto di per sé è un qualche cosa di dinamico che
viene messo nella RAM dove E dove la trova Java Cerca spazio è quello è il posto dove c'è
l'oggetto c'è una domanda No volevo direi come il disegno Teo una
macchina Sì sì diciamo lo stampo no lo stampo quindi di per sé lo stampo Non è l'oggetto che
vuoi e l'oggetto lo genera lo stampo Sì lo schema di determinazione quindi le tre operazioni
che fa la new sono queste quindi cerca la memoria una volta che l' trovata c'è un indirizzo indizio va nel mettere nel
puntatore quindi la variabile è sempre puntatore e e poi esegue un codice che poi vedremo Che cos'è questo
codice eh non lo mette Infatti quello che mette da parte è quello che ho spiegato qua come fatto se io definisco
la variabile adesso consideriamola parte non qua se io ti scrivo int
[Musica] voti così questo definisco quello che abbiamo visto l'altro giorno questo
qua è associato a un indirizzo che inizialmente vale nulla Quanto è grande questo indirizzo dipende dalla memoria
quindi tendenzialmente immaginiamo ragioniamo sui nostri 64 bit uguale 8 Byte Ok quindi questo sono 8 byte
dopo questo VB laza di no non sai ancora dovrai poi fare gestire quel campo lì come un vettore
quindi devi fare New cioè gli elementi che sono diciamo primitivi tipo l'anno di nascita lì c'è
già lo spazio e lì ci puoi scrivere direttamente l' rinascita il cognome in realtà è un indirizzo e quindi in realtà
Quando farai cognome uguale Rossi in realtà implicitamente va a fare la new della stringa Cerca i 5 Byte sufficienti
per Tiere Rossi e poi mettere l'indirizzo dentro al campo cognome e cambierà ogni volta che segni
una Stiga diversa e cambierà l'indirizzo come se prendesse quattro indizi mettesse un accanto all'altro in
realtà li va prendere ognuno cioè sulle variabili dinamiche ogni elemento poi magari combinazione la memoria è libera
vicina la metti cioè dove riesce a essere vicino lo mette vicino ma normalmente non è così cioè l'unico caso
in cui è obbligato a mettergli vicino è quello dei vettori Perché Perché come vi ho spiegato per andare a prendere il
vettore usa l'indice ma l'indice è dato dal prodotto della moltiplicazione del C somma l'indirizzo
iniziale più la dimensione di un elemento moltiplicato per L'indice che hai
messo invece in questo caso può essere il cognome da una parte il nome dall'altra l'anno di nascita invece è lì
dentro i voti di Nuo potrebber essere un'altra parte ancora Facciamo così almeno lo capiamo
facciamo Andiamo avanti a fare il nostro esempio qui dentro se abbiamo aggiunto anche abbiam detto il quarto campo che è
voti Ok quando io ho fatto New cosa abbiamo qui c'è null qui c'è null qui perché Java lo Inizializza c'è Zero a me
piacerebbe di più che voi immaginaste che che qui non sapete che cosa c'è Ok di per sé sarebbero da inizializzare
anche gli altri E allora facciamo così adesso mettiamo a zero ma poi immaginate che tutti siano poi da
inizializzare Ok però sappiamo vi dico già che Java ve lo Inizializza così e quindi questi qui
questo è quello che voi trovate se voi fate New Ok 8 Byte Nulli 8 Byte Nulli lo zero nell'intero da da 2 Byte altri 8
Byte Nulli quindi devo fare io delle operazioni per poterlo usare una volta creato Ok quindi qui ho
fatto l'operazione di creazione dell'oggetto ok o il puntatore Che punta l'oggetto A questo punto per usarlo
metto il puntatore punto il campo quindi utente punto cognome uguale Ross
Sì poi faccio utente nome uguale Mario
utente Punto anno nascita ugale
2000 e poi utente voti uguale così immaginate che non ci
sia questa parte qua davanti Ecco quindi pensate il singolo coso come fatto quindi questo devo fare
New int di quanti so Adesso lo metto come esempio potrebe chiedere all'utente
quanti voti c'hai da inserire cin Allora la risposta la vado a mettere dentro mettiamo qui numero
voti Ok ho letto questa variabile c'è il numero voti e quindi qui sarà utente
punto voti uguale New int numero voti vediamo cosa è successo dentro alla nostra Cella di memoria
scrivo verticale perché va bene no quando io ho fatto uguale Rossi cosa ha fatto l'equivalente di New String rossi
rossi sono cinque caratteri è andato a cercarsi cinque caratteri per metterci Rossi ok Questo è un indirizio di
memoria 1422 ok qui dentro ci scrive 4 2 che equivale
poi non è che lui c'ha una freccia No ma equivale ad avere un puntatore Che punta a dove c'è effettivamente questo e
quindi vedete che io potrei avere un cognome di cinque caratteri o o 50 caratteri la dimensione
dell'oggetto di tipo persona non cambia perché è un puntatore e solo quando poi vado a metterci dei dati dentro avrà un
indirizzo una cella di memoria che sarà più o meno grande a secondo del testo che ci devo scrivere stessa cosa No non
è questo che devo fare stessa cosa succederà qua Eh se c'è marioo
64.000 qui c'avrà un altro indirizzo che ne so BC
D1 non pu ma ell eh no Certo che no Non può essere non solo uguale a questo ma neanche uguale a questo più i Byte che
usa quindi questo va da 1 4 2 2 2 3 4 5 6 fino a 1 4 2 6 e quindi sarà se fosse se fosse
attaccato sarebe 27 Ok se combinazione fosse subito dopo e quindi qui C scve 27 che equivale
a fare questo invece 2000 dove lo mette l'anno di
nascita direttamente qua perché questo qui è un dato primitivo e quindi il 2000 finisce qua
dentro invece il nostro voti farà 5 per
4 Ok CH Cerca 20 Byte Quindi questi sono 20 Byte questo è a
700 va da a 700 a 7 Dunque 19 ma 19m è
ok E quindi qui Ci scrive a 700 che equivale a questo Cosa c'è nel
vettore non si sa è vuoto L'ho creato ho solo lo spazio Quindi anche qui se io lo volessi usare
andando nel modo in cui avete imparato a usare i vettori se devo mettere il primo voto come
scriverò utente punto aperta quadra 0 UG
7 Ok quindi applico il solito ragionamento non pensando che c'è questo è un vettore Come uso il vettore nome
del vettore aperta quadra l'indice Ma essendo il campo di una di una struttura ci devo mettere prima
questo come abbiamo iniziato conore con 8 by e dopo quando abbiamo scelto cinque
Celle e ha fatto 20 byte in totale 20 non centrano niente non c'entro niente con l'altro infatti l'
l'ho disegnato apposta così vedi questa è la struttura dell'oggetto persona Queste sono le
stringhe questo è vettore che ho creato dinamicamente avendo detto che ci sono
cinque voti e quindi ho disegnati troppo è chiaro non avanti aggiungere altre cose
soo che ne ho già messe un po' eh Le lasciamo sedimentare ok E va bene
Heads up!
This summary and transcript were automatically generated using AI with the Free YouTube Transcript Summary Tool by LunaNotes.
Generate a summary for freeRelated Summaries

Introduzione alla Classe File in Java: Gestione dei File e Directory
Il video fornisce un'introduzione alla classe File in Java, spiegando come interagire con il file system e gestire i file e le directory. Viene discusso il concetto di oggetti File, i costruttori, e i metodi principali per verificare l'esistenza di file e directory, oltre a come crearli.

Gestione delle Date in Java: Utilizzo di SimpleDateFormat e File
Il video tratta della gestione delle date in Java, focalizzandosi sulla classe SimpleDateFormat per la conversione tra stringhe e oggetti Date. Viene spiegato come memorizzare le date in formato numerico per un confronto più efficiente e come utilizzare metodi relativi ai file, come lastModified e setLastModified.

Analisi dei Metodi di Gestione dei File in Java
Il video fornisce un'analisi dettagliata dei metodi di gestione dei file in Java, spiegando le differenze tra metodi statici e dinamici, e come utilizzarli per operazioni sui file. Vengono presentati vari metodi, come 'createTempFile', 'exists', 'canExecute', e altri, con esempi pratici e spiegazioni sui diritti di accesso ai file.

Gestione dei File e dei Processi in Informatica: Un'Introduzione Completa
Il video tratta la gestione dei file e dei processi in informatica, evidenziando l'importanza di salvare i dati in modo permanente e le differenze tra memoria RAM e dischi rigidi. Viene anche discusso il funzionamento dei file system e la frammentazione dei dati.

Java Programming: A Comprehensive Guide to Understanding Java and Its Concepts
Explore Java programming concepts including OOP, exception handling, and collections. Learn how to build robust applications!
Most Viewed Summaries

A Comprehensive Guide to Using Stable Diffusion Forge UI
Explore the Stable Diffusion Forge UI, customizable settings, models, and more to enhance your image generation experience.

Pamaraan at Patakarang Kolonyal ng mga Espanyol sa Pilipinas
Tuklasin ang mga pamamaraan at patakarang kolonyal ng mga Espanyol sa Pilipinas at ang mga epekto nito sa mga Pilipino.

Pamamaraan at Patakarang Kolonyal ng mga Espanyol sa Pilipinas
Tuklasin ang mga pamamaraan at patakaran ng mga Espanyol sa Pilipinas, at ang epekto nito sa mga Pilipino.

Kolonyalismo at Imperyalismo: Ang Kasaysayan ng Pagsakop sa Pilipinas
Tuklasin ang kasaysayan ng kolonyalismo at imperyalismo sa Pilipinas sa pamamagitan ni Ferdinand Magellan.

Ultimate Guide to Installing Forge UI and Flowing with Flux Models
Learn how to install Forge UI and explore various Flux models efficiently in this detailed guide.