Podcast
Questions and Answers
Kaj se zgodi, ko konstruktorji v razredu niso definirani?
Kaj se zgodi, ko konstruktorji v razredu niso definirani?
- Prevajalnik priskrbi privzeti konstruktor, ki kliče privzeti konstruktor nadrazreda. (correct)
- Prevajalnik ne naredi ničesar in pusti razred brez konstruktorja.
- Prevajalnik ustvari abstraktni konstruktor.
- Prevajalnik ustvari vmesnik namesto konstruktorja.
Kateri izraz pravilno opisuje 'garbage collection' v Kotlinu?
Kateri izraz pravilno opisuje 'garbage collection' v Kotlinu?
- Je funkcija, ki samodejno odstrani objekte, na katere ne kaže več nobena referenca. (correct)
- Je ročno upravljanje s spominom, kjer mora programer eksplicitno sprostiti objekte.
- Je tehnika za optimizacijo kode med prevajanjem.
- Je proces validacije kode, preden se zažene program.
Kaj pomeni, da je razred v Kotlinu označen kot final
?
Kaj pomeni, da je razred v Kotlinu označen kot final
?
- Iz razreda ni mogoče izpeljati podrazredov. (correct)
- Razred ne more biti instanciran.
- Razred se lahko uporablja samo znotraj istega modula.
- Razred je shranjen na disku in ga je mogoče naložiti med izvajanjem.
Kako lahko v Kotlinu omogočimo, da se metoda v podrazredu prepiše?
Kako lahko v Kotlinu omogočimo, da se metoda v podrazredu prepiše?
Kaj je namen rezervirane besede this
v Kotlinu?
Kaj je namen rezervirane besede this
v Kotlinu?
Katero od naslednjih trditev pravilno opisuje vmesnike (interfaces) v Kotlinu?
Katero od naslednjih trditev pravilno opisuje vmesnike (interfaces) v Kotlinu?
Čemu služi ključna beseda override
v Kotlinu?
Čemu služi ključna beseda override
v Kotlinu?
Kaj je značilno za parametre v Kotlinu?
Kaj je značilno za parametre v Kotlinu?
Kaj je prekrivanje (overloading) v Kotlinu?
Kaj je prekrivanje (overloading) v Kotlinu?
V Kotlinu, kaj pomeni, da je metoda virtualna
?
V Kotlinu, kaj pomeni, da je metoda virtualna
?
Kakšna je uporaba razreda Any
v Kotlinu?
Kakšna je uporaba razreda Any
v Kotlinu?
Katera od naslednjih pretvorb tipov v Kotlinu je varna in ne vrže izjeme, če pretvorba ni možna?
Katera od naslednjih pretvorb tipov v Kotlinu je varna in ne vrže izjeme, če pretvorba ni možna?
Kaj vrne funkcija v Kotlinu, če ne določimo eksplicitnega povratnega tipa?
Kaj vrne funkcija v Kotlinu, če ne določimo eksplicitnega povratnega tipa?
Kakšna je razlika med razredoma Unit
in Nothing
v Kotlinu?
Kakšna je razlika med razredoma Unit
in Nothing
v Kotlinu?
Kaj preverjamo z operatorjem is
v Kotlinu?
Kaj preverjamo z operatorjem is
v Kotlinu?
Kaj so podatkovni razredi (data classes) v Kotlinu?
Kaj so podatkovni razredi (data classes) v Kotlinu?
Kaj je enum class
v Kotlinu namenjen?
Kaj je enum class
v Kotlinu namenjen?
Kaj so sealed
razredi v Kotlinu in čemu služijo?
Kaj so sealed
razredi v Kotlinu in čemu služijo?
Kakšna je posebnost abstraktnih razredov v Kotlinu?
Kakšna je posebnost abstraktnih razredov v Kotlinu?
Kaj omogočajo razširitvene funkcije (extension functions) v Kotlinu?
Kaj omogočajo razširitvene funkcije (extension functions) v Kotlinu?
Kakšen je namen ključne besede object
v Kotlinu?
Kakšen je namen ključne besede object
v Kotlinu?
Kaj je companion object
v Kotlinu?
Kaj je companion object
v Kotlinu?
Kaj so lambda funkcije v Kotlinu?
Kaj so lambda funkcije v Kotlinu?
Kaj je funkcija višjega reda (high-order function) v Kotlinu?
Kaj je funkcija višjega reda (high-order function) v Kotlinu?
Kaj dosežemo z uporabo inline
funkcij v Kotlinu?
Kaj dosežemo z uporabo inline
funkcij v Kotlinu?
Kako Kotlin obravnava izjeme?
Kako Kotlin obravnava izjeme?
Kaj je namen generikov v Kotlinu?
Kaj je namen generikov v Kotlinu?
Kaj so paketi (packages) v Kotlinu?
Kaj so paketi (packages) v Kotlinu?
Kako lahko uporabimo komponente paketa zunaj tega paketa v Kotlinu?
Kako lahko uporabimo komponente paketa zunaj tega paketa v Kotlinu?
Kaj so moduli v Kotlinu?
Kaj so moduli v Kotlinu?
Čemu so ekvivalentne .jar
datoteke v Kotlinu?
Čemu so ekvivalentne .jar
datoteke v Kotlinu?
Katero datoteko prebere JRE (Java Runtime Environment) ob zagonu .jar
datoteke?
Katero datoteko prebere JRE (Java Runtime Environment) ob zagonu .jar
datoteke?
Kaj je namen prevajalnika JIT (Just-In-Time)?
Kaj je namen prevajalnika JIT (Just-In-Time)?
Za kaj se uporablja orodje Gradle?
Za kaj se uporablja orodje Gradle?
Katero kodo je potrebno napisati za nastavitev jvmTarget
na verzijo 1.8
?
Katero kodo je potrebno napisati za nastavitev jvmTarget
na verzijo 1.8
?
Kateri od naslednjih izrazov pravilno opisuje, kako objekti delujejo v Kotlinu v povezavi s spremembami?
Kateri od naslednjih izrazov pravilno opisuje, kako objekti delujejo v Kotlinu v povezavi s spremembami?
Ali lahko metodo znotraj vmesnika prepišemo?
Ali lahko metodo znotraj vmesnika prepišemo?
Naštej nekaj funkcij, ki jih avtomatsko generirata Kotlin in zmanjšujejo količino boilerplate kode:
Naštej nekaj funkcij, ki jih avtomatsko generirata Kotlin in zmanjšujejo količino boilerplate kode:
Ali Kotlin podpira večkratno metodo main()
?
Ali Kotlin podpira večkratno metodo main()
?
Flashcards
Kaj je 'this' v Kotlinu?
Kaj je 'this' v Kotlinu?
Rezervirana beseda, ki se nanaša na trenutni objekt.
Kaj vsebujejo vmesniki v Kotlinu?
Kaj vsebujejo vmesniki v Kotlinu?
Vmesniki vsebujejo samo spremenljivke in signature metod (implicitno public).
Kaj so 'object' v Kotlinu?
Kaj so 'object' v Kotlinu?
So specifičen način za definicijo podatkovnega tipa, ki ima samo eno pojavitev.
Kaj so razširitvene funkcije?
Kaj so razširitvene funkcije?
Signup and view all the flashcards
Kaj je modul v Kotlinu?
Kaj je modul v Kotlinu?
Signup and view all the flashcards
Kaj so JAR datoteke?
Kaj so JAR datoteke?
Signup and view all the flashcards
Kaj je Enum class?
Kaj je Enum class?
Signup and view all the flashcards
So razredi privzeto final?
So razredi privzeto final?
Signup and view all the flashcards
Kako Kotlin 'pozabi' na objekte?
Kako Kotlin 'pozabi' na objekte?
Signup and view all the flashcards
Kako dosežemo generičnost?
Kako dosežemo generičnost?
Signup and view all the flashcards
Unit je primerljiv z..?
Unit je primerljiv z..?
Signup and view all the flashcards
Kdaj se odstrani referenca?
Kdaj se odstrani referenca?
Signup and view all the flashcards
Kdaj funkcija ne more normalno delovati?
Kdaj funkcija ne more normalno delovati?
Signup and view all the flashcards
Kdaj se uporabi 'is'?
Kdaj se uporabi 'is'?
Signup and view all the flashcards
Kakšen mehanizem vrdenosti se uporablja?
Kakšen mehanizem vrdenosti se uporablja?
Signup and view all the flashcards
Kaj vsebujejo vmesniki?
Kaj vsebujejo vmesniki?
Signup and view all the flashcards
Od česa je klic odvisen?
Od česa je klic odvisen?
Signup and view all the flashcards
Study Notes
Seveda, tukaj so študijske opombe iz podanega besedila:
Prejšnja Predavanja
- Predhodna predavanja so zajemala Kotlinove osnovne in referenčne tipe, vrednosti, izraze, ukaze, ter objektno usmerjen del (razredi, konstruktorji, metode, dedovanje).
Razred in Objekti
- Kotlin zbiranje smeti (garbage collection) uporablja za dealokacijo objektov.
- Objekt odstranijo, ko nanj ne kaže nobena referenca več, ob zaključku bloka.
- Vse reference morajo biti odstranjene, preden objekt dealocirajo.
- Dostop do spremenljivk objekta je z
objectReference.fieldName
. - Metodo kličemo z
objectReference.methodName(argumentList)
aliobjectReference.methodName()
. - Anonimni objekti se ustvarijo z
Bicycle().gear
. - Če konstruktor ni definiran, prevajalnik ustvari privzetega.
Dedovanje
- V Kotlinu so razredi implicitno
final
, kar pomeni, da ni mogoče dedovati od njih. - Z uporabo rezervirane besede
open
se omogoči dedovanje razreda. - Metode so implicitno
final
, razen če so označene zopen
.
Prekrivanje Metod
- Metode se prekrijejo z
override
.
Rezervirana Beseda "this"
- Ključna beseda
this
se nanaša na trenutni objekt, ki je prejel sporočilo. - Pogosta uporaba je, kjer parameter metode ali konstruktorja prekrije instančno spremenljivko.
this
se uporablja za klic drugih konstruktorjev v razredu (explicit constructor invocation).
Vmesniki (Interfaces)
- Vsebujejo samo spremenljivke (implicitno
public
) in podpis metod (implicitnopublic
). - Vmesnikov ni mogoče instancirati.
- Vmesnik lahko razširi več drugih vmesnikov.
- Razredi implementirajo vmesnike.
- Referenca je lahko tipa vmesnik, vendar mora biti prirejen objekt, ki je primerek razreda, ki implementira ta vmesnik.
- Kotlin omogoča dedovanje vmesnikov in implementacijo več vmesnikov.
Parametri
- Označevalec parametra mora biti edinstven v dosegu metode.
- Parameter lahko zakrije instančno spremenljivko, do katere se dostopa prek reference
this
. - Priporočljivo je izogibanje zakrivanja razen pri konstruktorjih in metodah, ki nastavljajo vrednosti instančnih spremenljivk.
- Kotlin uporablja kopirni mehanizem za parametre.
- Objekti se prenašajo po vrednosti, kar zagotavlja, da referenca po koncu metode še vedno kaže na isti objekt.
- Vrednost objekta znotraj metode je mogoče spremeniti, sprememba pa bo vidna.
Prekrivanje (Overloading)
- Kontekstno neodvisno prekrivanje pomeni, da ne moremo imeti dveh metod z enako signaturo in različnimi povratnimi tipi.
Prekrivanje (Overriding)
- Kovariantna sprememba tipa omogoča, da funkcija vrača kovariantni tip.
- Klic metode je odvisen od dinamičnega tipa prejemnika(virtual method invocation).
- Vse metode so virtualne.
- Prekrita metoda lahko ima določila, ki omogočajo več, ne pa manj – zaščitena metoda v nadrazredu je lahko prekrita z javno metodo v podrazredu.
Razred "Any"
- "Any" je super razred vseh ostalih razredov, tudi primitivnih tipov.
- Uporaba "Any" lahko vodi do pogostih napak.
- Razred Any ni možno nastaviti na NULL.
Pretvorbe Tipov (Type Casting)
- "is" in "!is" sta operatorja za preverjanje tipov.
- "as" je operator za nevarne pretvorbe tipov (lahko povzroči izjeme).
- "as?" je operator za varne pretvorbe tipov (vrača null, če pretvorba ni možna).
- V Kotlinu je možnost implicitne in eksplicitne pretvorbe med objekti.
Razred Unit
- Unit se vrne iz funkcije, ki ne vrača ničesar.
- Primerljiv je s tipom void v Javi.
- Takšna funkcija običajno povzroči stranski učinek.
- Enaka možna vrednost kot objekt Unit.
Razred Nothing
- Nothing nima vrednosti.
- Če funkcija vrne Nothing, se ne more normalno izvesti (vrne izjemo ali neskončno zanko).
- Koda, ki sledi funkciji s tipom Nothing je nedosegljiva.
- Razlika med Nothing in Nothing? je, da ima samo vrednost null.
Podatkovni Razredi (Data Classes)
- Namenjeni so shranjevanju podatkov.
- Označeni z rezervirano besedo
data
. - Prevajalnik generira funkcije
equals()
,toString()
itd. samodejno. - Ne morejo biti označeni z
abstract
,open
,inner
, alisealed
. - Zahteve za primarni konstruktor: vsaj en parameter, označene z
val
alivar
.
Enum Razredi
- Naštevajo objekte, ki jih povežemo v tip.
- Spremenljivke tipa
Day
je definirana konstanto vrednost.
Sealed Razredi
- Omejujejo hierarhijo razredov.
- Izpeljani samo znotraj iste datoteke.
- Zapečateni razred ne more biti izpeljan izven datoteke, ki ga deklarira.
Abstraktni Razredi
- Razred je lahko definiran kot abstrakten.
- Uporabljena ključna beseda
abstract
za deklaracijo abstrakcije. - Abstraktnih razredov ni mogoče ustvariti, lahko pa jih dedujejo podrazredi.
- Člani abstraktnega razreda niso abstraktni, razen, če se ključna beseda abstract uporabi izrecno.
Razširitvene Funkcije
- Omogočajo dodajanje metod obstoječim razredom zunaj njihove definicije.
Objekt (Object)
- Ključna beseda za definicijo podatkovnega tipa z eno samo pojavitvijo.
- Podobnost z vzorcem Singleton: zagotavlja, da je ustvarjen samo en primerek tega razreda.
- ustvarjen brez razreda in konstruktorja.
Spremljevalni Objekt (Companion Object)
- Posebna deklaracija objekta znotraj razreda.
- Sintaktično podoben statičnim metodam v Java.
- Člani objekta se pokličejo z imenom razreda.
Lambda Funkcije
- Preprost način za ad hoc zapis funkcij.
- V mnogih primerih so zapisane zelo kratko.
- Uporaba sklepanja o tipu in implementaciji spremenljivke it.
Funkcije Višjega Reda
- Funkcija, ki sprejme drugo funkcijo kot parameter ali jo vrne.
Inline Funkcije
- Funkcija inline izboljša zmogljivost funkcije višjega reda.
- Inline funkcija sporči prevajalniku, naj kopira parametre in funkcije na mesto klica.
- Funkcije so označene s ključno besedo inline.
Izjeme
- Izjeme predstavljajo težave, ki se pojavijo med izvajanjem programa.
- Omogočajo elegantno reševanje težav.
- Kotlin podpira: blok
try-catch
,finally
,throw
,@Throws
. catch
bloke lahko podvajamo.
Generiki (Generics)
- Generiki omogočajo parametrizacijo razredov, vmesnikov in metod.
- Spremenljivke tipa so lahko kateri koli referenčni tip.
- Parameter tipa je lahko omejen.
- Java in Kotlin imata sisteme vrst(type systems), ki se razlikujejo.
Paketi v Kotlinu
- Paket je način za logično organiziranje razredov in vmesnikov.
- Paketi so hierarhično urejeni.
- Ni nujno, da paketi ustrezajo direktorijem, kar je zaželeno.
- Definirajo se z
package my.demo
alipackage kotlin.text
. - Za uporabo komponent je potrebno popolno kvalificirano ime ali
import
izjavo. - Implicitno vsebujejo
kotlin.*
- Določila za dostop določajo vidnost članov znotraj razreda.
Moduli
- Modul je koncept na meji med aplikacijo in kodo, odvisen od obeh.
- Modul v Kotlinu je nabor datotek, ki so medsebojno odvisne in jih je treba med prevajanjem obravnavati skupaj.
- Pomembnii za interno vidljivost.
Datoteke Jar
- Predstavljajo ekvivalent knjižnicam v Kotlinu
*.exe
v C++. - Vsebujejo *.class datoteke, potrebne vire, manifest.
- Manifest opisuje meta podatke arhiva "jar".
Postopek Prevajanja Kode
- Zapis Kode (*.kt) je obkrožen s Kotlinic prevajalnikom.
- Če napak ni, se program zapre z bajt kodo v datoteki (*.class).
- Vmesno kodo obravnava JVM.
- Rezultat Prevajanja se naloži na razredni nalagalec in integrira v JIT.
- Prevajanje vrstice se pretvarja v izvršno kodo, ki se posreduje operacijskemu sistemu.
Prevajalnik JIT (Just In Time)
- Prevajanje izvedeno med samim prevajanjem programa
- Primer optimizacije kode je z vključitvijo tistih paketov, ki jih potrebujemo na programu.
Gradle
- Je orodje, ki zradi rešitev
- Privetno ima Mavenovo strukturo datotek.
- Uporabljajo se za vzdrževanje odvisnosti.
- Naloži izvorne datoteke.
- Podpira prilagodljiva domensko specifične jezike (DSL).
- Uporabljajo ga vtičniki za jezike (kot Java, Groovy, Scala), ki tečejo na JVM.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.