Kotlin razredi in objekti

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

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?

  • 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?

  • 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?

<p>Metodo je potrebno označiti s ključno besedo <code>open</code> v nadrazredu in <code>override</code> v podrazredu. (B)</p> Signup and view all the answers

Kaj je namen rezervirane besede this v Kotlinu?

<p>Je referenca na trenutni objekt. (D)</p> Signup and view all the answers

Katero od naslednjih trditev pravilno opisuje vmesnike (interfaces) v Kotlinu?

<p>Vmesnikov ne moremo instancirati. (B)</p> Signup and view all the answers

Čemu služi ključna beseda override v Kotlinu?

<p>Za označevanje metode, ki prepiše metodo nadrazreda. (A)</p> Signup and view all the answers

Kaj je značilno za parametre v Kotlinu?

<p>Kotlin uporablja samo kopirni mehanizem parameter vrednosti. (D)</p> Signup and view all the answers

Kaj je prekrivanje (overloading) v Kotlinu?

<p>Je možnost definiranja več metod z istim imenom, vendar različnimi signaturami. (D)</p> Signup and view all the answers

V Kotlinu, kaj pomeni, da je metoda virtualna?

<p>Klic ustrezne metode je odvisen od dinamičnega tipa prejemnika sporočila. (C)</p> Signup and view all the answers

Kakšna je uporaba razreda Any v Kotlinu?

<p><code>Any</code> je nadrazred vseh razredov v Kotlinu. (A)</p> Signup and view all the answers

Katera od naslednjih pretvorb tipov v Kotlinu je varna in ne vrže izjeme, če pretvorba ni možna?

<p>Uporaba operatorja <code>as?</code> (C)</p> Signup and view all the answers

Kaj vrne funkcija v Kotlinu, če ne določimo eksplicitnega povratnega tipa?

<p>Unit (D)</p> Signup and view all the answers

Kakšna je razlika med razredoma Unit in Nothing v Kotlinu?

<p><code>Unit</code> predstavlja odsotnost vrednosti, medtem ko <code>Nothing</code> predstavlja tip, ki nikoli ne vrne (vedno vrže izjemo ali vstopi v neskončno zanko). (C)</p> Signup and view all the answers

Kaj preverjamo z operatorjem is v Kotlinu?

<p>Ali je objekt instance določenega tipa. (D)</p> Signup and view all the answers

Kaj so podatkovni razredi (data classes) v Kotlinu?

<p>Razredi, namenjeni shranjevanju podatkov, za katere prevajalnik avtomatično generira uporabne metode. (A)</p> Signup and view all the answers

Kaj je enum class v Kotlinu namenjen?

<p>Definiranju seznama konstant. (B)</p> Signup and view all the answers

Kaj so sealed razredi v Kotlinu in čemu služijo?

<p>Razredi, ki omogočajo omejevanje hierarhije razredov in so lahko izpeljani samo znotraj iste datoteke. (D)</p> Signup and view all the answers

Kakšna je posebnost abstraktnih razredov v Kotlinu?

<p>Iz abstraktnih razredov ni mogoče ustvariti objektov. (B)</p> Signup and view all the answers

Kaj omogočajo razširitvene funkcije (extension functions) v Kotlinu?

<p>Definiranje metod zunaj definicije razreda. (C)</p> Signup and view all the answers

Kakšen je namen ključne besede object v Kotlinu?

<p>Definiranje razreda s samo eno instanco (Singleton). (A)</p> Signup and view all the answers

Kaj je companion object v Kotlinu?

<p>Objekt, ki je povezan z razredom in vsebuje metode, ki so podobne statičnim metodam v drugih jezikih. (A)</p> Signup and view all the answers

Kaj so lambda funkcije v Kotlinu?

<p>Anonimne funkcije, ki se lahko obravnavajo kot vrednosti. (C)</p> Signup and view all the answers

Kaj je funkcija višjega reda (high-order function) v Kotlinu?

<p>Funkcija, ki vzame drugo funkcijo kot argument ali jo vrne kot rezultat. (D)</p> Signup and view all the answers

Kaj dosežemo z uporabo inline funkcij v Kotlinu?

<p>Izboljšamo zmogljivost s tem, da prevajalnik vstavi kodo funkcije neposredno na mesto klica. (D)</p> Signup and view all the answers

Kako Kotlin obravnava izjeme?

<p>Kotlin uporablja <code>try-catch</code> bloke za obravnavo izjem. (A)</p> Signup and view all the answers

Kaj je namen generikov v Kotlinu?

<p>Omogočanje tipsko varnih operacij s parametričnim polimorfizmom. (C)</p> Signup and view all the answers

Kaj so paketi (packages) v Kotlinu?

<p>Mehanizem za modularizacijo in organizacijo kode. (C)</p> Signup and view all the answers

Kako lahko uporabimo komponente paketa zunaj tega paketa v Kotlinu?

<p>S popolnim kvalificiranim imenom ali z <code>import</code> stavkom. (D)</p> Signup and view all the answers

Kaj so moduli v Kotlinu?

<p>Nabor datotek, ki so medsebojno odvisne in jih je treba obravnavati skupaj med prevajanjem. (D)</p> Signup and view all the answers

Čemu so ekvivalentne .jar datoteke v Kotlinu?

<p><code>.exe</code> datotekam v C++. (D)</p> Signup and view all the answers

Katero datoteko prebere JRE (Java Runtime Environment) ob zagonu .jar datoteke?

<p>MANIFEST.MF (A)</p> Signup and view all the answers

Kaj je namen prevajalnika JIT (Just-In-Time)?

<p>Optimizacija bytecode med izvajanjem. (B)</p> Signup and view all the answers

Za kaj se uporablja orodje Gradle?

<p>Za izdelavo (build) rešitev, upravljanje odvisnosti in avtomatizacijo procesov. (B)</p> Signup and view all the answers

Katero kodo je potrebno napisati za nastavitev jvmTarget na verzijo 1.8?

<p><code>kotlinOptions.jvmTarget = &quot;1.8&quot;</code> (B)</p> Signup and view all the answers

Kateri od naslednjih izrazov pravilno opisuje, kako objekti delujejo v Kotlinu v povezavi s spremembami?

<p>Objekti se posredujejo po vrednosti, toda vrednost objekta se lahko spremenja, kar vpliva na izvirni objekt. (D)</p> Signup and view all the answers

Ali lahko metodo znotraj vmesnika prepišemo?

<p>Da, vendar mora biti metoda v nadrazredu označena z <code>open</code> in v podrazredu z <code>override</code>. (B)</p> Signup and view all the answers

Naštej nekaj funkcij, ki jih avtomatsko generirata Kotlin in zmanjšujejo količino boilerplate kode:

<p><code>toString()</code>, <code>equals()</code>, <code>hashCode()</code> (B)</p> Signup and view all the answers

Ali Kotlin podpira večkratno metodo main()?

<p>Ne, v vsaki Kotlin kodi mora biti natanko ena metoda <code>main()</code>. (C)</p> Signup and view all the answers

Flashcards

Kaj je 'this' v Kotlinu?

Rezervirana beseda, ki se nanaša na trenutni objekt.

Kaj vsebujejo vmesniki v Kotlinu?

Vmesniki vsebujejo samo spremenljivke in signature metod (implicitno public).

Kaj so 'object' v Kotlinu?

So specifičen način za definicijo podatkovnega tipa, ki ima samo eno pojavitev.

Kaj so razširitvene funkcije?

To omogoča definiranje metod zunaj glavnega razreda.

Signup and view all the flashcards

Kaj je modul v Kotlinu?

Modul je nabor datotek, ki so medsebojno odvisne in se obravnavajo skupaj med prevajanjem.

Signup and view all the flashcards

Kaj so JAR datoteke?

Že prevedene datoteke, ki jih Kotlin uporablja kot posamezne.

Signup and view all the flashcards

Kaj je Enum class?

Naštevanje objektov, ki jih povežemo v tip

Signup and view all the flashcards

So razredi privzeto final?

Razredi so v Kotlinu final, kar pomeni, da ni možno dodati podrazreda.

Signup and view all the flashcards

Kako Kotlin 'pozabi' na objekte?

Za dealokacijo objektov Kotlin uporablja garbage collection.

Signup and view all the flashcards

Kako dosežemo generičnost?

Generično kodo dobimo z uporabo razreda Any.

Signup and view all the flashcards

Unit je primerljiv z..?

V Javi je primerljiv tip void.

Signup and view all the flashcards

Kdaj se odstrani referenca?

Referenca se odstrani ob zaključku bloka (anonimnega ali poimenovanega).

Signup and view all the flashcards

Kdaj funkcija ne more normalno delovati?

Če funkcija vrača tip Nothing, potem se ne more normalno izvesti.

Signup and view all the flashcards

Kdaj se uporabi 'is'?

Če je izraz resničen 'is'.

Signup and view all the flashcards

Kakšen mehanizem vrdenosti se uporablja?

Kotlin uporablja samo kopirni mehanizem parameter vrednosti!

Signup and view all the flashcards

Kaj vsebujejo vmesniki?

Vsebujejo samo spremenljivke in signature metod.

Signup and view all the flashcards

Od česa je klic odvisen?

Klic ustrezne metode je odvisen od dinamičnega tipa prejemnika sporočila

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) ali objectReference.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 z open.

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 (implicitno public).
  • 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, ali sealed.
  • Zahteve za primarni konstruktor: vsaj en parameter, označene z val ali var.

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 ali package 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.

Quiz Team

Related Documents

More Like This

Kotlin's Classes and Objects Flashcards
9 questions
Kotlin Gradle Flashcards
20 questions
Overview of Kotlin Programming Language
10 questions
Kotlin: Razredi in Objekti
41 questions

Kotlin: Razredi in Objekti

RevolutionarySatellite avatar
RevolutionarySatellite
Use Quizgecko on...
Browser
Browser