Sadržaj
Jedna od najvažnijih stvari koje nam pomažu u definiranju naše aplikacije je korištenje klasa, jer pomoću njih možemo definirati objekte modelirane iz stvarnog života i njihov prolaz u digitalni svijet postaje mnogo lakši.U CoffeeScript izgradnja klase i njezino stvaranje vrlo je jednostavno, zapravo je njezina sintaksa toliko minimalistička da nam je vrlo lako zapamtiti je, umjesto da definiramo klase izravno u JavaScript To je nešto malo nezgrapnije i moglo bi nam potrajati duže nego što smo očekivali.
ZahtjeviDa bismo dovršili ovaj vodič, moramo imati funkcionalnu instalaciju CoffeeScript, potrebna su nam i dopuštenja za pisanje datoteka i izvršavanje CoffeeScript na računalu na kojem radimo udžbenik. Potreban nam je uređivač teksta da bismo mogli napisati kôd koji ćemo izvesti tako da imamo nešto trajno, a ne sve u konzoli.
Klasa nije ništa drugo do naziv i neka svojstva koja definiraju njezino ponašanje, na temelju tog koncepta možemo definirati klasu CoffeeScript kako slijedi:
razred UčenikTo je sve što trebamo učiniti, na jednostavan način već smo izgradili svoju prvu klasu CoffeeScriptŠto se događa ako želimo uključiti svojstvo da bismo ga mogli koristiti, jer jednostavno napravimo instancu i dodamo to svojstvo, da vidimo:
student = novi Student () student.name = "Carolina"Pogledajmo sada kako na sljedećoj slici CoffeeScript transformirati sav naš kôd u JavaScript čisto pri sastavljanju, sjetimo se naredbe za ovo koja bi bila kava -c naziv datoteke.kava:
Tada primjećujemo kako sintaksa od JavaScript pure je mnogo opsežniji i složeniji od tri retka koda u kojima smo radili CoffeeScript, ovo je moć ovog jezika koja nam omogućuje da se doista posvetimo našoj aplikaciji.
Jedna od stvari koja se najviše koristi u Objektno orijentirano programiranje je dodavanje metoda u klase, jer će nam, osim svojstava, dati ideju o tome što naš objekt može ili ne može učiniti, na primjer ako nastavimo s Studentski razred Za njega možemo stvoriti metodu u kojoj njezin objekt izražava poruku, da vidimo kako to postići:
razred Učenici govore: -> console.log "Hello World!"Ako tada stvorimo objekt iste klase, već bismo mogli koristiti ovu istu metodu. Na primjer:
student = novi Studentstudent.talk ()Time osiguravamo da se naša metoda može koristiti više puta, sve dok napravimo nekoliko instanci, što našem kodu daje jednu od karakteristika orijentacije objekta, a to je ponovna upotreba. Sada ćemo ponovno definirati naš kôd tako da prihvaća argumente, s ovim možemo učiniti mnogo više od jednostavnog ispisa po konzoli, da vidimo:
razred Razgovor učenika: (ime) -> console.log "Zdravo # {ime}!" student = novi Studentstudent.talk ("Carolina")Pogledajmo kako se sve ovo prevodi u kod JavaScript kada sastavljamo:
Nešto važno što možemo učiniti pri izgradnji objekata izvedenih iz klasa je očuvanje njihove vrijednosti tijekom njihova života u našoj aplikaciji, s tim možemo napraviti komponente koje mogu pristupiti njihovim svojstvima putem metoda i na taj način ih koristiti u različitim dijelovima naše aplikacije.
Za manipulaciju unutar imovine CoffeeScript samo moramo koristiti @ operater iza koje slijedi naziv svojstva za korištenje, koji se može kodirati na sljedeći način:
razred Student govori: () -> console.log “Zdravo # {@ name}!” student = novi učenik () student.name = “Carolina” student. govori ()Pogledajmo kako ovo izgleda kada se pokrene izravno u konzoli:
Kad to učinimo, pogledajmo kako izgleda naš sastavljeni kod JavaScript čist:
Razlika u količini koda je izuzetna i samo za napraviti nešto tako jednostavno kao što je definiranje klase s metodom, a zatim je stvoriti i pozvati stvorenu metodu.
Postoje situacije u kojima nas definicija naše klase dovodi do stvaranja metoda koje se moraju pozivati unutar drugih, a ovo kako bismo postigli manje ponavljajuće i funkcionalnije programiranje, da vidimo kako to možemo učiniti pomoću sljedećeg koda napisanog u CoffeeScript.
razred Učenici govore: () -> console.log "Pozdrav, moje ime je: # {@ name}!" @knowAge () knowAge: () -> console.log "Moja dob je: # {@ age}" student = novi Student () student.name = "Vanessa" student.age = "23" student.talk ()Pogledajmo kako u konzoli možemo vidjeti rezultat izvršavanja prethodnog koda:
Do sada smo definirali svojstva objekta nakon što smo ga inicijalizirali, iako je to održiva praksa, kada moramo stvarati objekte s mnogo svojstava, to može biti teško održavati.
Najbolja stvar u slučajevima kada moramo raditi s mnogim objektima i mnogim svojstvima je biti u mogućnosti koristiti moć graditeljiPomoću njih možemo izravno oživjeti naš objekt bez potrebe za definiranjem različitih svojstava na "ručni" način. Za definiranje konstruktora upotrijebite strukturu sličnu sljedećoj:
razred Konstruktor učenika: (ime, dob) -> @ime = ime @starost = dob govore: () -> console.log "Zdravo moje ime je: # { @name}!" @saberEdad () saberEdad: () -> console.log "Moja dob je: # {@ age}"Ako pogledamo definiciju klase, konstruktor nije ništa drugo nego metoda, zanimljivo je to što kada se pozove graditelj već CoffeeScript zna da je to posebna metoda za našu klasu i da će je tretirati kao takvu, zato je prilikom stvaranja instanci naše klase ne moramo eksplicitno zvati. Pogledajmo primjer kako sada možemo definirati naše objekte:
student = novi student ("Carolina", "26") student.speaking ()Vidimo da nismo morali definirati vlasništvo Ime niti imanje dob, jednostavno prosljeđujemo vrijednosti konstruktoru redoslijedom kojim smo ih definirali u našoj klasi, a on obavlja ostatak posla umjesto nas. Naravno da je ovaj primjer vrlo pojednostavljen, ali zamislimo da moramo stvoriti stotine objekata s vrijednostima koje dolaze iz postojanog izvora poput baze podataka.
Pogledajmo na sljedećoj slici kako izgleda naš novi kod nakon što se prevede i prevede JavaScript čist:
U ovom slučaju to vidimo JavaScript ne koristi ključnu riječ graditelj pri izgradnji metode koju definiramo u CoffeeScript, u ovom trenutku počinjemo na izravniji način uviđati razliku između jezika, pored onoga što smo riješili u oko 12 ili 13 redaka koda, u JavaScript postati više od 20 redaka, nešto što treba uzeti u obzir prilikom izrade velikih aplikacija.
Jedna od prednosti rada s objektno orijentiranim programiranjem je ta što možemo nasljedstvo klasa, to znači da možete stvoriti nove klase i preuzeti funkcionalnost klasa roditelji, ovim smanjujemo broj elemenata koje moramo stvoriti od nule, budući da pri nasljeđivanju uzimamo sve metode i svojstva nadređene klase, u podređenoj klasi ili novoj klasi moramo samo definirati metode i svojstva koja ekskluzivni su za njega.
Možda je za one koji su tek počeli programirati ovaj koncept pomalo zbunjujući ili složen, međutim gledajući sljedeći primjer zasigurno ćemo biti malo jasniji o tome što možemo postići.
razred Osoba koju treba znati Doba: () -> console.log "Moja dob je: # {@ age}" razred Učenik produžava Osobu za govor: () -> console.log "Zdravo # {@ name}!" student = novo Student () student.age = "30" student.name = "Jon" student.knowAge ()Analizirajući vidimo kako imamo klasu Osoba a ovaj ima metodu knowAge () s kojim ispisujemo putem konzole dob instance, pri stvaranju klase Student kažemo mu da nasljeđuje od Osoba pa implicitno naša nova klasa već ima metodu knowAge () čak i ako nije definirano u klasi.
Pogledajmo na sljedećoj slici kako izgleda naš novi kod nakon što se prevede i prevede JavaScript čist:
Tada možemo vidjeti da je naš kôd JavaScript prilično je složeno za definiranje nasljedstva, ali kada se koristi CoffeeScript njegova je optimizacija iznimno velika. Ako vidimo uslužni program, zamislimo vrlo složene klase kao aplikacijske komponente koje nam mogu dati više funkcionalnosti u našim novim klasama, bez potrebe za pisanjem više od specifičnog koda koji nam zaista treba.
Ovime smo završili ovaj vodič, jer vidimo svijet nastave u CoffeeScript Nije tako složeno kako se činilo na prvi pogled, sve leži u poznavanju osnova i filozofije objektno orijentiranog programiranja. Ono što možemo uvjeriti je da je upotreba CoffeeScript kao jezik, čini složenost korištenja klasa u JavaScript znatno pasti jer je njegova sintaksa mnogo bliža jezicima poput Piton ili Rubin čine ga mnogo elegantnijim i manje zbunjujućim pri čitanju razvijenog koda.Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod