buongiorno a tutti bentornati episodio numero 14 e il corso di javascript quest'oggi andiamo a introdurre la programmazione orientata agli oggetti oppure opi che sta per object oriented programming allora è un argomento abbastanza è importante ed è un argomento abbastanza delicato da capire questo è ciò che andremo a vedere perché e cos'è lo pi definire un object template parleremo delle classi della strada dell'astrattezza e quant'altro andremo a vedere con la documentazione che riporta delle belle immagini ad esempio andremo a creare il costruttore i nostri costruttori ea farli stanze di un oggetto con questo esempio allora che
cos'è l'object oriented programming e perché si usa da giorni vi parlo di da episodi vi parlo di degli oggetti e di come noi vogliamo prendere gli oggetti che esistono nella realtà e vogliamo portarli nel nostro programma al fine di correlare i dati in modo logico e poterli usare con una certa facilità questa cosa ci permette di far diventare i nostri programmi complessi ma sicuramente più semplici da interconnettere tra di loro quindi inter prometterle varie parti nel nostro programma che continua a crescere col crescere del progetto ma diventa semplice da gestire perché abbiamo dividere il programma
appunto in in oggetti e quindi in parti logiche se così non fosse noi avremo righe righe righe di codice di funzioni che fanno certe cose e tonnellate di variabili che magari proviamo a dividere per logica in file ma sto punto non sarebbero comunque accessibili tramite la notation che abbiamo fatto qui non potremo avere il file per la gestione del database tipo database punto js il file per la gestione in javascript del menu e delle altre cose meno punto js e potremmo avere qualcosa per gestire la tabella del funzionamento quindi immaginate una cosa del genere però
ho scritto come abbiamo visto noi interamente con funzioni e variabili senza oggetti quindi come facciamo poi andare a prendere specificatamente da quella quella cosa diventa un disastro che ne abbiamo accesso a tutto o non abbiamo accesso a niente a volte e diventa veramente difficile soprattutto leggere il codice e gestirlo e mantenerlo se invece voi pensate come abbiamo fatto negli episodi precedenti andando a creare degli oggetti quindi l'oggetto database l'oggetto navigazione noi potremmo accedere a queste funzioni a questi metodi o queste proprietà semplicemente con database punto connetti o database punto trova tabella oppure punto navigazione navigazione
punto vai a e mettiamo il parametro dove vogliamo andare quindi capite che è molto più semplice gestirlo una volta che il nostro programma non è tanto in sé diviso per file coerenti ma è diviso per oggetti coerenti in questo modo possiamo andare a prendere l'oggetto che ci serve quando ci serve e andare a salvare all'interno dell'oggetto le proprietà i metodi chiamarli come vogliamo quindi questo è il motivo per cui andiamo a lavorare in co op abbiamo vedere quindi le basi della opi la prima cosa da fare è definire un template dobbiamo definire un template dell'oggetto
ok quindi cosa devo fare nell'esempio qualche ci riporta vuole andare a creare studenti e insegnanti quindi potremo andare a fare un programma che gestisce studenti e insegnanti potremmo segnare tante cose per consegnare i voti le materie degli insegnanti nella classe quindi avremo tanti tanti oggetti in questo caso abbiamo studenti e classi la prima cosa che abbiamo a fare è l'astrazione ovvero andiamo a prendere il concetto reale studenti insegnanti e andiamo ad astrarre che cosa hanno in comune le due cose sono persone ok sono persone quindi la prima cosa che andiamo a fare è creare un
oggetto o classe vedete che qua comincia a definirlo come classe cominciato a prendere confidenza con il nome classe andiamo a creare un template di un oggetto definito classe in questo caso andiamo ad astrarre il tutto e creiamo una persona ok quindi provate a seguire il ragionamento uno studente e un insegnante sono due entità diverse ok ma sono persone quindi hanno sicuramente qualcosa in comune pur essendo dalla parte opposta della cattedra pur avendo ruoli differenti pur avendo età differenti che cosa hanno in comune le tutte le persone a prescindere dal loro dal loro mestiere da quello
che fanno hanno un nome che qua divide come fares name and last name che sarebbe il nome e cognome io preferirei mettere nome sotto cognome hanno un età hanno un genere di sesso hanno degli interessi qua mette una biografia che va a specificare quello che è la persona una descrizione equa metti dei saluti ovvero ciao sono col mio nome questa è una persona quindi ogni persona a rigor di logica dicevamo a tutte queste proprietà e ogni persona ha una propria descrizione e è in grado di di salutare ciao sono e mette il proprio nome questa
e l'astrazione della persona da questa persona noi possiamo creare delle istanze dell'oggetto ovvero una volta che ne abbiamo questo stampino immaginate letteralmente uno stampino immaginatevi non so neanche come descrive lo provate a immaginare non lo so forse un timbro oppure veramente una stampa in cui mettiamo dentro del materiale stampiamo ed esce fuori in 3d quello che ci interessa o che hai provato immaginarlo così quindi abbiamo il nostro stampino persona ok che ha sempre la stessa forma e noi andiamo semplicemente a mettere dentro dei dati differenti quindi uscirà sempre una persona uscirà sempre un'istanza ogni miniatura
che abbiamo la miniatura tra di ogni miniatura tardi che esce da questo stampino è un'istanza dell'oggetto ok quindi questa è la classe lo stampino è la classe tutto ciò che esce è un'istanza dell'oggetto ok perché la classe altro non è che un oggetto quindi noi stampiamo fuori vedete questa è persone della classe stamo e stiamo stampiamo una volta e facciamo un istanza si chiama letteramente fare un istanza quando stampiamo quindi stampiamo e facciamo un istanza esce la persona 1 e siamo a bob smith ha 32 anni è un maschio eccetera eccetera stampiamo un'altra volta ed
esce daiana coop 28 anni fine il kickboxing browing brooking sarebbe far la birra ok alle sue cose ai suoi saluti e ai suoi interessi alla sua bio e questo è abbiamo stampato due volte potremmo farla all'infinito e generare infinita in miniatura e 3d e spero che la metafora v vi sia d'aiuto scriveremo per fare sotto nei commenti questo è importante quindi che cosa abbiamo fatto abbiamo usato il costruttore abbia usato la funzione costruttrice della classe per creare delle istanze ok dopo il morire che cos'è il costruttore il costruttore è quella funzione che permette alla classe
di essere utilizzato appunto come stampino e generale le istanze degli oggetti per ora vuol dire tutto e niente seguitemi continuate a seguire questa metafora una volta che abbiamo la nostra classe persona vorremmo appunto utilizzare la classe studente e la classe insegnante perché se avete seguito il concetto di proprietà voi capite che l'insegnante ha delle proprietà diverse rispetto allo studente un esempio potrebbe essere la materia che insegna ok la persona tu non puoi andare a una persona per strade di tool che materia insegne no io sono un avvocato non insegna niente aiola voi non magazzino io
non insegna niente quindi la le persone hanno tutti il nome cognome unità e un sesso ma l'insegnante a una materia che insegna quindi voi capite che noi non possiamo generare effettivamente delle entità reali semplicemente dal concetto di persona quindi se vogliamo creare un insegnante dobbiamo andare a creare un oggetto insegnante che ha tra le tante cose nome cognome età sesso interesse eccetera materia che insegna ok oppure classi in cui insegna mentre invece dall'altra parte abbiamo lo studente abbiamo lo studente non sto andando giù per non spoilerarvi niente abbiamo lo studente che ha nome cognome età
classe bla bla voti alla classe di riferimento ai voti e magari potrebbe avere i compagni tutto potuto quello che volete potrebbe avere delle cose determini terminanti esclusivamente per lo studente in questo caso facciamo voti materie preferite mentre invece l'insegnante alle classi era classe mentre invece l'insegnante avrà le classi in cui insegna ok e soprattutto la materia quindi con città voci su materia da una parte e voti dall'altra voi capite che però noi non possiamo andare ogni volta a riscrivere tutto per ogni singolo tipo di entità nuova pensate insegnanti studenti avvocati magazzinieri tutto quello che volete
ogni volta dovremo andare schiere nome cognome età interessi descrizione saluta bla bla bla che cosa facciamo andiamo a creare una sottoclasse o una child class quindi una classe figlio andiamo a creare una classe dalla classe persona che eredita tutto quello che ha la classe persona guardiamo questo esempio qui allora abbiamo la classe persona che sa tutto quello che abbiamo detto che hanno le persone che siano insegnanti studenti avvocati e via discorrendo verranno dei nomi un'età un genere degli interessi e una descrizione l'insegnante l'insegnante automaticamente andando a creare una classe figlia eredità tutto ciò che perché
la persona la persona a tutti siamo persone ma ognuno ha una classe diciamo così lavorativa differente la classe lavorativa prende da quello che siamo come persone ok perché tutti abbiamo un nome e cognome eccetera ma abbiamo una cosa extra quella cosa extra è la classe ed è l'oggetto relativo alla nostra professione specifica in questo caso come vi ho detto l'insegnante ha il subject che la materia che insegna quindi noi andremo creare una nuova classe che è figlia di persona quindi non dobbiamo andare di scrivere tutta sta roba qua in arancione semplicemente viene inherited viene ereditata
e noi possiamo accedere al nome dell'insegnante semplicemente perché essendo una persona è chiaro che ha un nome quindi non dobbiamo per forza andare a definire il nome dell'insegnante nel costruttore nel nuovo stampino ripetiamo lo stampino 3d lo sa già che c'è dentro un nome e un cognome perciò a noi ci basterà ci basterà metterlo dentro c'è un'insegnante mi ha insegnato bene l'insegnante si chiama anna rossi quindi lo date per scontato che l'insegnante abbia un nome e un cognome pur essendo un insegnante perché l'insegnante è una persona e quindi per il semplice fatto di essere una
persona ok che è la cosa che siamo tutti pur essendo un insegnante che non siamo tutti ha un nome e un cognome ok spero di averlo spiegato decentemente quindi questa insegnante ha delle cose particolari che è appunto la materia che insegna e in questo caso va a salutare vedete qua e aggiunge anche sono mi chiamo tal dei tali e insegno questa parte qua greeting non è non è un problema per ora non ve la voglio spiegare però sappiate che noi possiamo andare a definire la stessa funzione e possiamo sovrascrivere la quindi c'è possiamo sovrascrivere andando
a mettere qualcosa in più voglio che per ora vi concentrate solo sulle proprietà e non sui metodi stessa cosa lo studente qua non mette niente sufficiente vedete che rifà il saluto greeting e anziché essere così fiscale nome cognome città dice io bella sono in questo caso bob e basta quindi da una classe abbiamo creato due classi figlie che ereditano le proprietà e alcuni metodi i metodi potrebbero essere sovrascritti perché avrete che qua greeting c'è e lo scrive in un certo modo qua c'è mai scritto in un altro modo per qua c'è ancora qui possiamo andare
a sovrascrivere il modo in cui le persone fanno certe azioni quindi in base alla nostra classe alla sottoclasse andremo a salutare in modi differenti e avremo proprietà diverse proseguiamo e vi faccio vedere non più dalla documentazione ma vi faccio vedere nello specifico dal nostro esempio andiamo a creare il primo oggetto andiamo creare un costruttore a fare delle istanze come ho detto il costruttore è quella funzione che ci permette di andare a costruire un oggetto o in questo caso una classe quindi andiamo abbiamo il nostro oggetto persona mettete il maiuscolo davanti a un oggetto che ne
che sarà poi la nostra classe clima o function persona e sotto potremmo avere se vogliamo avere dei figli function insegnante eccetera per ora restiamo con il costruttore persona voglio renderlo semplice poi nei prossimi episodi andremo a vedere della andremo leader delle sottoclassi l'ereditarietà e quant'altro abbiamo nella nostra persona e nella nostra persona noi dobbiamo passare dei dei riferimenti quindi ma un nome un cognome un'età un genere un interesse che andiamo a passare come vedete vi ricordate this che di persona di snom e che non fa riferimento a questo di snom e vuol dire che questa
persona ha un nome ok non lo andiamo a definire un altro modo insufficiente this nome è uguale a il nome che ci viene passato vi ripeto di poter usare cose qua a casa letteralmente potrei fare così non cambia niente perché questi sono i parametri della funzione quello che interessa a noi è il nome qui ovviamente vogliamo usare una nomenclatura che sia coerente perciò vi troverete più spesso this non uguale nome disponiamo quella cognome però è facilmente leggibile seppur ripetiamo la stessa cosa tre volte e cognome disco gnomo gola cognome ok è così e ridondante ma
va bene lo stesso quindi di snom è uguale al nome che passiamo disco gnome qual è il cognome l'età stessa cosa il genere è un genere gli interessi quando mi chiamò solo interessi perché anch'essa per quello che sappiamo potremo strutturarlo come vogliamo in realtà qua sarà un array va bene quello che abbiamo sotto andiamo a creare subito un metodo quindi il metodo è la bio la biografia la descrizione ok che è una funzione anonima le abbiamo già viste e in questa funzione andiamo andare a schermo qualcosa col console og ci arriviamo subito vi faccio vedere
prima questo che è più veloce abbiamo la funzione abbiamo il metodo saluta quindi la nostra persona andrà a salutare ciao sono di snom è ok quindi vi ricordate che va messo i template literals che cern è tutto più semplice abbiamo me abbiamo quindi usato l'espressione e devo prendere ed il nome quindi di snom e va a prendere questa persona this questa questa persona nome questa persona nome è uguale a questo che a sua volta guarda il parametro che noi passiamo arriviamo invece qua a vedere nella bio nella bio vedete che ci sono tre righe sono
abbastanza lunghi ne ho fatto qualcosa di importante perché volevo già a farvelo vedere allora noi facciamo un console log dove diciamo possiamo formare in questo caso è qua ho sbagliato non mettere disco nome allora di snom e quindi this nome e cognome in questo caso faremo luca rossi per ora è solo generico comunque nome e cognome è equa c'è l'espressione non so se ve la ricordate col turn ha ri operator nella abbiamo visto se non l'avete visto tornate nei nel video iv els e sui e switch cioè il ternario operator alla fine quindi una sorta
di if inline molto comodo quindi questa è l'espressione guardate le parentesi graffe sono la differenza perché sono si confonde con tutto il resto ok guardate queste parentesi graffe this genere quindi vedete che qua c'è la condizione iv è letteralmente se questo genere se il genere di questa persona è maschio punto di domanda mi fai una cosa altrimenti due punti me ne fai un'altra se il genere maschio scrivi un ragazzo 7 altrimenti scrivi una ragazza questo perché noi stiamo dicendo nome e cognome è un ragazzo oppure nome e cognome è una ragazza altrimenti sarebbe scorretto quindi
l'abbiamo l'abbiamo reso dinamico e vi ho detto che avremmo usato i ternani operator tantissimo fin da subito quindi il nome e cognome è un ragazzo o una ragazza di di seta ha quindi anni quindi di vent'anni 18 anni sedici anni 25 anni facciamo facciamo una ragazza un po più in là di 60 una ragazza di 65 anni somma si vede un tante ragazze di 65 anni a cui piace equa volevo mettervi sedicente un'altra espressione di interessi che è un array e andiamo usare un metodo che vi ricordate di quando lo abbiamo lavorato con array e
stringhe joint quindi prende l'array tutti gli elementi e ce li mette come stringa separate esclusivamente da virgola e spazio e adesso vi farò vedere il risultato questo è il costruttore quindi ogni volta che ne andiamo a creare una persona avrà queste proprietà e ve lo faccio vedere non abbiamo bisogno di mandare non abbiamo bisogno di mettere come parametri bio e saluta perché vengono creati automaticamente l'unica cosa che prende una cosa che dobbiamo passare sono le proprietà i metodi restano ora abbiamo il nostro stampino 3d e adesso cosa facciamo andiamo a creare delle miniature 3d continuo
con la nostra metafora ok adesso uso le parole corrette andiamo a creare delle stanze dell'oggetto o classe persona ok quindi creare un'istanza persona 1 persona 1 e sarà new persona ok quindi nuova persona la persona uno è una nuova persona che noi prima non avevamo quindi tecnicamente una nuova persona che ha il nome di luca il cognome di rossi l'età dovrebbe esserci l'età è 23 andiamo a mettere il genere che chiaramente maschio e poi amo mettere degli interessi che ho detto che è un array in commentiamo calcio poi virgola basket e basta ok basket e
questa è la persona 1 andiamo a fare la persona due ci basta semplicemente far persona 2 lei è anna verdi linea 19 è chiaramente una ragazza e facciamo che ha una passione particolare per la letteratura masterchef e poi mettiamo musica generica ok abbiamo queste due persone ora noi io anzi non noi ma io vi faccio un console log vi faccio un console log di persona 1 vedete che ce lo suggerisce già e vi faccio un console og di persona 2 andiamo a vedere quindi ricapitoliamo cosa abbiamo fatto abbiamo il nostro costruttore quindi l'anno il nostro
costruttore di una persona che ha dentro un po di cose e le abbiamo già viste siamo andate a creare un'istanza grazie al costruttore qui abbiamo preso lo stampino ci abbiamo buttato dentro il materiale che ci serve luca rossi maschi 23 bla bla bla l'abbiamo fatto anche per la persona 2 e adesso andiamo a vedere il risultato dal console ogg andiamo a vedere f12 allora qua cita due oggetti persona come potete vedere e abbiamo tecnicamente la nostra bio ok questa una funzione dopo dopo usiamo ma come potete vedere abbiamo rossi età giustamente ce lo mette in
ordine di in ordine alfabetico delle proprietà quindi cognome rossi nome come vedete luca genera è maschio età 23 interessi calcio e basket alle funzioni ha già i metodi bio e saluta lo vedete qua ci da f come console se passo sopra rete con sull'out ciao sono di snom e stessa cosa qua e poi abbiamo anna verdi che una ragazza di 19 anni quindi come potete vedere siamo andati a creare due oggetti totalmente diversi da un unico stampino abbiamo creato due miniature due istanze dell'oggetto totalmente diverse e indipendenti con le loro proprietà con i loro nomi
c'è il loro nome i loro cognomi loro interessi quindi sono effettivamente se noi fossimo nella realtà sarebbero due persone totalmente diversi con i loro interessi il loro nome il loro cognome e la loro vita nel nostro programma sono semplicemente due oggetti persona differenti a cui possiamo fare riferimento in maniera differente e possiamo utilizzare in modo diverso ora andiamo a mandare a schermo andiamo utilizzare la funzione di entrambi quindi facciamo persona punto persona 1 facciamo saluta ok facciamo salute lo facciamo anche per la 2 cominciamo così vi faccio vedere come come cambia sono sono due persone
diverse che utilizzano lo stesso metodo che hanno ricevuto dal costruttore quindi dal loro stampino andiamo a vedere ciò sono luca ciao sono anna è vero perché sono due persone totalmente diverse andiamo a vedere invece non ha senso che lo faccio vedere per entrambi voglio solo farvi vedere la bio che è molto complessa la bio abbastanza complesse voglio far vedere risultato ve lo voglio far vedere perché non tanto per vedere cos'è il metodo che abbiamo già visto con saluta ma perché come so tanta roba e vi voglio far vedere qual è il risultato luca rossi è
qua sono nato a capo vedete che io sono nato a capo qua e usano i template e literals mi prende la capo se non volessi andare a capo dovrei riportare tutto in linea ma ho scritto talmente tanto codice che saremmo dovuti andare a destra quindi questa formattazione qua è semplicemente perché io nei template literal sono andato a capo e ola come si chiama e ho lasciato la tabulazione quindi questa tabulazione qua che vedete in blu è letteralmente questa tabulazione quindi lasciate perdere la formattazione del testo concentriamoci sul risultato luca rossi è un ragazzo di 23
anni a cui piace calcio.basket qua c'è una piccola cosa noi potremmo mettere le virgole per tutti gli interessi tranne l'ultimo dove mettiamo è però andremo a fare un lavoro che in questo specifico video non serve quindi ho fatto a sufficiente uno split un joint scusatemi dove prendo tutti gli arredi tutti gli elementi dell'array li mette in una stringa le di video da virgola e spazio se vi ricordate andiamo a vedere anche persona due perché si vede proprio la differenza del ternari operator quindi anna verdi è una ragazza 19enne che piace letteratura massa chef e la
musica ok quindi come avete visto due persone diverse stesso stampino otteniamo due risultati diversi in base a i metodi quindi il metodo fa esattamente la stessa cosa ci dalla loro descrizione salutano ma in base alle loro beta che sono diverse abbiamo risultati diversi e il fatto questa qua la parte più bella un ragazzo e una ragazza dipende appunto da alternare operator che noi abbiamo messo qui dove andiamo a dire se il nostro oggetto persona è maschio fai una cosa altrimenti ne fai un'altra quindi questa era l'introduzione non così veloce al alla programmazione ad oggetti se
avete capito questa lezione state cominciando a capire perché dovremmo suddividere il nostro programma in oggetti ma vi verrà più chiaro quando andremo avanti perché un conto è creare delle persone un conto e comincia ad avere l'oggetto come vi dicevo della navigazione del database e di altre cose che sono maledettamente astratte nel mondo reale non esiste un oggetto database non esiste un oggetto navigazione quindi può essere più difficile da capire come strutturarlo e vi posso capire perché ci sono passato anch'io per ora va bene così se avete capito che cos'è una persona una classe le istanze
di una classe le classi figlie che poi vedremo che cosa sono i metodi le proprietà i costruttori voi siete a posto e possiamo andare avanti col nostro corso se avete problemi potete scrivermi in privato se avete fatto l'abbonamento al canale potete commentare sotto tranquillamente senza problemi potete scrivere nel gruppo d telegram che è sotto in descrizione ripeto per supportare il canale c'è la vetrina amazon sedicente comprando le vostre cose o ciò che è consigliato se vi interessa io ottengo un supporto in percentuale e in più ci sono gli abbonamenti attivi io ringrazio ne scegliamo prossimo
video ciao ciao