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

Kateri mehanizem uporablja Kotlin za sprostitev pomnilnika, ki ga zasedajo objekti, ki niso več v uporabi?

  • Štetje referenc
  • Ročno sproščanje pomnilnika z `delete`
  • `Garbage collection` (correct)
  • Samodejno sproščanje ob koncu programa

Ali je v Kotlinu mogoče dedovati iz več razredov hkrati (mnogotera dedljivost)?

False (B)

Kako v Kotlinu označimo razred, da je dovoljeno dedovanje iz njega?

open

Če želimo preprečiti dedovanje iz razreda v Kotlinu, ga označimo s ključno besedo ______.

<p><code>final</code></p> Signup and view all the answers

Povežite tipe izjem v Kotlinu z ustreznimi scenariji:

<p>NumberFormatException = Poskus pretvorbe niza v število, ki ni v pravilni obliki. IllegalArgumentException = Metoda prejme argument, ki ni sprejemljiv glede na njene pogoje. NullPointerException = Poskus dostopa do lastnosti ali metode objekta, ki je <code>null</code>. ArithmeticException = Napaka pri aritmetični operaciji, kot je deljenje z nič.</p> Signup and view all the answers

Kaj pomeni, če je v Kotlinu metoda označena kot final?

<p>Metode ni mogoče prekriti v podrazredu. (D)</p> Signup and view all the answers

Ali lahko v Kotlinu znotraj vmesnika (interface) definiramo lastnosti (properties)?

<p>True (A)</p> Signup and view all the answers

Kako v Kotlinu dostopamo do implementacije metode nadrazreda, če jo prepišemo v podrazredu?

<p>Ključna beseda <code>super</code></p> Signup and view all the answers

V Kotlinu uporabimo ključno besedo ______, da prepišemo metodo nadrazreda.

<p><code>override</code></p> Signup and view all the answers

Povežite koncepte objektno usmerjenega programiranja s pravilno razlago v Kotlinu:

<p>Dedovanje = Omogoča ustvarjanje novih razredov na podlagi obstoječih, pri čemer novi razredi prevzamejo lastnosti in metode. Polimorfizem = Omogoča, da objekti različnih razredov odgovorijo na isti klic metode na svoj način. Inkapsulacija = Skrivanje notranjih podatkov in implementacijskih podrobnosti razreda pred zunanjim svetom. Abstrakcija = Prikazovanje samo bistvenih lastnosti objekta in skrivanje kompleksnih podrobnosti.</p> Signup and view all the answers

Kaj je namen ključne besede this v Kotlinu?

<p>Referenca na trenutni objekt. (B)</p> Signup and view all the answers

Ali lahko v Kotlinu ustvarimo instanco vmesnika (interface)?

<p>False (B)</p> Signup and view all the answers

Kako Kotlin zagotavlja, da se v vmesnikih ne ponavljajo implementacije metod, ki bi lahko povzročile konflikt?

<p>Razredi morajo implementirati metode vmesnikov.</p> Signup and view all the answers

Če želimo, da lahko razred implementira vmesnik, moramo uporabiti ključno besedo ______.

<p><code>:</code> (dvopičje)</p> Signup and view all the answers

Povežite rezervirane besede v Kotlinu s pravilnim opisom:

<p><code>override</code> = Označuje, da metoda prepiše metodo nadrazreda ali vmesnika. <code>open</code> = Dovoljuje dedovanje iz razreda ali prekritje metode. <code>final</code> = Preprečuje dedovanje iz razreda ali prekritje metode. <code>this</code> = Referenca na trenutni objekt.</p> Signup and view all the answers

Katero od naslednjih trditev pravilno opisuje razliko med kopirnim mehanizmom parametrov vrednosti v Kotlinu za osnovne in referenčne tipe?

<p>Kotlin uporablja kopirni mehanizem vrednosti za vse tipe parametrov. (C)</p> Signup and view all the answers

V Kotlinu je možno deklarirati dve metodi z enakim imenom in enakimi tipi parametrov, ki vračata različne tipe.

<p>False (B)</p> Signup and view all the answers

Kako v Kotlinu zagotovimo, da lahko metoda vrne različne tipe, odvisno od prejemnika sporočila, pri čemer upoštevamo vključitveni polimorfizem?

<p>Kovariantna sprememba tipa</p> Signup and view all the answers

V Kotlinu je ključna beseda ______ uporabljena za določitev, da funkcija ne vrne nobene smiselne vrednosti in se uporablja predvsem za stranske učinke.

<p><code>Unit</code></p> Signup and view all the answers

Povežite koncepte razredov Any in Nothing s pravilno razlago v Kotlinu:

<p><code>Any</code> = Nadrazred vseh nerazrednih tipov v Kotlinu. <code>Nothing</code> = Tip, ki ne vsebuje nobene vrednosti in označuje, da funkcija ne bo nikoli normalno zaključila izvajanja. <code>Any?</code> = Razlikuje med tipom, ki vsebovati vrednosti in tistim, ki ima samo vrednost <code>null</code>.</p> Signup and view all the answers

Kateri od naslednjih operatorjev se uporablja za varno pretvorbo tipov v Kotlinu, ki ne povzroči izjeme, če pretvorba ni mogoča?

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

Ali je to veljavna koda v Kotlinu? val myBike: MountainBike = obj // compile-time error val yourBike: MountainBike = obj as MountainBike

<p>True (A)</p> Signup and view all the answers

Kako v Kotlinu preverimo, ali je objekt določenega tipa?

<p>Operatorja <code>is</code> ali <code>!is</code></p> Signup and view all the answers

Podatkovni razredi v Kotlinu morajo imeti vsaj en ______ v primarnem konstruktorju.

<p>Parameter</p> Signup and view all the answers

Povežite naslednje pojme iz razredov enum in sealed v Kotlinu s pravimi opisi:

<p><code>enum class</code> = Razred, ki predstavlja nabor povezanih konstant in ni mogoče ustvarjati novih instanc na runtime. <code>sealed class</code> = Razred, ki omejuje hierarhijo razredov in je primeren za predstavitev algebraičnih podatkovnih tipov.</p> Signup and view all the answers

Kaj je glavna omejitev uporabe sealed class v Kotlinu?

<p>Morajo biti deklarirani v isti datoteki. (C)</p> Signup and view all the answers

Abstraktne razrede v Kotlinu je možno instancirati direktno.

<p>False (B)</p> Signup and view all the answers

Kako v Kotlinu definiramo abstraktno metodo znotraj abstraktnega razreda?

<p>Ključna beseda <code>abstract</code></p> Signup and view all the answers

V Kotlinu ključna beseda ______ omogoča dodajanje novih metod obstoječim razredom brez dedovanja ali uporabe vzorca dekoraterja.

<p>razširitvena funkcija</p> Signup and view all the answers

Povežite razširitvene funkcije v Kotlinu s pravilnimi značilnostmi:

<p>Dodajanje funkcij = Omogočajo dodajanje novih metod obstoječim razredom brez spreminjanja izvorne kode. Obseg veljavnosti = Veljajo v obsegu, kjer so deklarirane ali uvožene. Statična razrešitev = Razrešene so statično, kar pomeni, da se določi katera funkcija se pokliče glede na tip spremenljivke v času prevajanja.</p> Signup and view all the answers

Kakšna je glavna razlika med object in companion object v Kotlinu?

<p><code>object</code> je singleton, <code>companion object</code> pa ni. (B)</p> Signup and view all the answers

Ali lahko v Kotlinu deklariramo lambda funkcijo brez eksplicitne specifikacije tipov parametrov?

<p>True (A)</p> Signup and view all the answers

Kaj je it v Kotlin lambda funkciji?

<p>Implicitno ime parametra lambda funkcije</p> Signup and view all the answers

Funkcija, ki sprejme drugo funkcijo kot parameter ali jo vrne, se imenuje funkcija ______.

<p>višjega reda</p> Signup and view all the answers

Povežite značilnosti inline funkcij v Kotlinu s pravilnimi opisi:

<p>Optimizacija kode = Prevajalnik kopira kodo funkcije na mesto klica, kar zmanjša overhead klicev funkcij. Lambda funkcije = Posebej učinkovite pri uporabi z lambda funkcijami, ker se izogne ustvarjanju objektov funkcij. Povečanje velikosti kode = Lahko povzročijo povečanje velikosti kode, če se pogosto uporabljajo, saj se koda kopira.</p> Signup and view all the answers

Katero od naslednjih trditev najbolje opisuje razliko med try-catch in @Throws v Kotlinu pri ravnanju z izjemami?

<p><code>try-catch</code> se uporablja za zajemanje in obravnavo izjem, medtem ko <code>@Throws</code> deklarira izjeme, ki jih funkcija lahko vrže, in je pomemben pri interoperabilnosti z Javo. (C)</p> Signup and view all the answers

Ali lahko generični tip v Kotlinu omejimo samo na tipe, ki so podrazredi razreda Number?

<p>True (A)</p> Signup and view all the answers

Kotlin pozna ključno besedo [blank] s katero ustvarimo samo en primerek.

<p><code>object</code></p> Signup and view all the answers

Uporaba razširitvene funkcije v Kotlinu omogoča razširitev funkcionalnosti obstoječega razreda brez potrebe po ______.

<p>dedovanju</p> Signup and view all the answers

Povežite različne koncepte paketov v Kotlinu z njihovimi ustreznimi opisi:

<p>Logična organizacija = Paket je namenjen logični organizaciji razredov in vmesnikov. Hierarhična ureditev = Paketi so urejeni hierarhično, kar omogoča ustvarjanje podpaketov. Korenski paket = Če ne uporabimo <code>package</code> stavka, bo razred pristal v korenskem paketu.</p> Signup and view all the answers

Katero določilo za dostop v Kotlinu omogoča, da je član razreda viden samo znotraj istega modula?

<p><code>internal</code> (B)</p> Signup and view all the answers

Flashcards

Kaj sta razred in objekti?

Razred in objekti omogočajo modeliranje konceptov iz resničnega sveta v vašo kodo.

Kako dostopamo do spremenljivk objekta?

Dostop do spremenljivk objekta z uporabo objectReference.fieldName.

Kako dostopamo do metod objekta?

Dostop do metod objekta z uporabo objectReference.methodName().

Kaj je garbage collection?

Kotlin uporablja garbage collection za samodejno sproščanje pomnilnika, ki ga zasedajo objekti, ki niso več v uporabi.

Signup and view all the flashcards

Kako omogočimo dedovanje razreda?

Razredi v Kotlinu so privzeto final, kar pomeni, da jih ni mogoče dedovati. Uporabi open, da dovoliš dedovanje.

Signup and view all the flashcards

Kaj je 'override'?

Za prekrivanje metod uporabimo ključno besedo override.

Signup and view all the flashcards

Kaj je this?

Rezervirana beseda this je referenca na trenutni objekt.

Signup and view all the flashcards

Kaj vsebujejo 'interfaces'?

Vmesniki (interfaces) vsebujejo samo deklaracije spremenljivk in metod (signature).

Signup and view all the flashcards

Kako razred implementira 'interface'?

Razred implementira vmesnik (interface) z uporabo ključne besede :. Razred mora implementirati vse metode vmesnika.

Signup and view all the flashcards

Ali lahko v Kotlinu dedujemo več interface-ov?

Kotlin omogoča dedovanje več vmesnikov.

Signup and view all the flashcards

Kaj je zakrivanje 'shadowing'?

Če imajo parametri enako ime kot instančne spremenljivke, jih lahko zakrijemo. To dosežemo s this.

Signup and view all the flashcards

Kopirni mehanizem parametrov.

Kotlin uporablja kopirni mehanizem za prenos parametrov v funkcijo.

Signup and view all the flashcards

Kontekstno neodvisno prekrivanje

Kontekstno neodvisno prekrivanje je, ko ne moremo definirati dveh metod z enako signaturo, ki vračata različen tip.

Signup and view all the flashcards

Kaj je overriding?

Vključitveni polimorfizem (overriding) omogoča kavariantno spremembo tipa, ki ga funkcija vrača.

Signup and view all the flashcards

Kaj je Any?

Generatorično kodo dobimo z uporabo razreda Any.

Signup and view all the flashcards

Kaj je Unit?

Razred Unit se vrne iz funkcije, ko ne vrnemo ničesar (kot void v Javi).

Signup and view all the flashcards

Kaj je Nothing?

Razred Nothing nima vrednosti in se uporablja za funkcije, ki se nikoli ne zaključijo normalno (npr. mečejo izjeme).

Signup and view all the flashcards

Kako preverimo tip?

Za preverjanje tipa uporabimo operatorja is ali !is.

Signup and view all the flashcards

Kaj so data razredi?

Data razredi so namenjeni shranjevanju podatkov in prevajalnik avtomatično generira metode kot equals(), toString() itd.

Signup and view all the flashcards

Kaj so enum razredi?

Enum razredi predstavljajo naštete objekte, ki jih povežemo v tip.

Signup and view all the flashcards

Kaj so sealed razredi?

Sealed razredi omejujejo hierarhijo razredov in so lahko izpeljani samo znotraj iste datoteke.

Signup and view all the flashcards

Kaj so abstract razredi?

Abstract razredi ne morejo biti instancirani in se uporabljajo kot osnova za druge razrede.

Signup and view all the flashcards

Kaj so extension funkcije?

Kotlin omogoča definicijo razširitvenih funkcij (extension functions), ki dodajo metode obstoječim razredom zunaj njihove definicije.

Signup and view all the flashcards

Kaj je object?

Object je ključna beseda v Kotlinu za definicijo podatkovnega tipa z eno samo pojavitvijo (Singleton).

Signup and view all the flashcards

Kaj je companion object?

Companion object je poseben objekt znotraj razreda, ki ima dostop do zasebnih članov razreda.

Signup and view all the flashcards

Kaj so lambda funkcije?

Lambda funkcije so preprost način za definicijo anonimnih funkcij.

Signup and view all the flashcards

Definicija funkcije visokega reda.

Funkcija višjega reda je funkcija, ki vzame drugo funkcijo kot parameter ali jo vrne.

Signup and view all the flashcards

Kaj so inline funkcije?

Funkcija inline sporoči prevajalniku naj kopira kodo funkcije na mesto klica, kar lahko izboljša zmogljivost.

Signup and view all the flashcards

Kaj so izjeme?

Izjeme so težave, ki se pojavijo med izvajanjem programa.

Signup and view all the flashcards

Kako lovimo različne tipe napak.

Bloke catch v try-catch lahko podvajamo za različne tipe izjem.

Signup and view all the flashcards

Kaj so generiki?

Generiki omogočajo parametrizacijo razredov in metod s tipi (type parameters).

Signup and view all the flashcards

Kotlin Generics.

Uporabimo interface Pair<K, V> za Kotlin Generics.

Signup and view all the flashcards

Kaj so paketi?

Paketi so način logičnega organiziranja razredov in vmesnikov.

Signup and view all the flashcards

Kaj je Internal?

Internal je določilo, ki omogoča dostop samo znotraj modula.

Signup and view all the flashcards

Kaj so jar datoteke?

Jar datoteke so ekvivalent knjižnicam v C++

Signup and view all the flashcards

Kaj je gradle?

Gradle je orodje, ki avtomatizira gradnjo, testiranje, in deployment programske opreme.

Signup and view all the flashcards

Osnova Java prevajalnika.

JVM in JIT, Java byte-code.

Signup and view all the flashcards

Study Notes

  • Predavanje se osredotoča na programski jezik Kotlin.

Prejšnja Predavanja:

  • Kotlin osnove vključujejo osnovne in referenčne tipe, zaloge vrednosti tipov, izraze, ukaze, identifikatorje, rezervirane besede, formalne parametre in argumente.
  • Objektno usmerjeni del vključuje razrede in dedovanje je obravnavano kot tudi konstruktorji (primarni in sekundarni), inicializacijski bloki, set/get metode in privzete vrednosti parametrov.

Razredi in Objekti (ponovitev):

  • Obravnavani so primarni konstruktorji, privzete vrednosti, lastnosti in objekti.

Osnove Razredov in Objektov:

  • Dostop do instančnih spremenljivk se izvaja preko zapisa objectReference.fieldName.
  • Dostop do metod se izvaja preko objectReference.methodName(argumentList) ali objectReference.methodName().
  • Ustvarjanje anonimnih objektov.

Razredi in Objekti:

  • Če konstruktorji niso definirani, prevajalnik doda privzeti konstruktor, ki kliče privzeti konstruktor nadrazreda.
  • Garbage collection se uporablja za dealokacijo objektov v Kotlinu.
  • Objekt se odstrani, ko nanj ne kaže nobena referenca več, v procesu 'garbage collection'.
  • Referenca se odstrani ob zaključku bloka (anonimnega ali poimenovanega).
  • Vse reference morajo biti odstranjene, preden se objekt lahko odstrani v procesu 'garbage collection'.

Dedovanje:

  • Razredi so privzeto final, kar pomeni, da ni možno dodati podrazreda.
  • Razred se odpre za spremembe z uporabo rezervirane besede open.

Dedovanje, Super in Prekrivanje Metod:

  • Metode v Kotlinu so privzeto final in jih ni možno prekriti, razen če so označene kot open.

Prekrivanje Metod:

  • Metode se prekrijejo z rezervirano besedo override.

Rezervirana Beseda this:

  • Rezervirana beseda this je referenca na trenutni objekt.
  • this se uporablja, kadar parameter metode ali konstruktorja prekrije instančno spremenljivko.
  • V konstruktorju se this uporablja za klic drugih konstruktorjev tega razreda (explicit constructor invocation).

Vmesniki (Interfaces):

  • Vsebujejo samo spremenljivke (implicitno public) in signature metod (implicitno public).
  • Vmesnikov ni možno instancirati.
  • Vmesnik lahko razširi druge vmesnike.
  • Razredi implementirajo vmesnike.
  • Referenca je lahko tipa interface.
  • Taki referenci se lahko priredi objekt, ki mora biti primerek razreda, ki implementira ta vmesnik.
  • Kotlin omogoča dedovanje in implementacijo več vmesnikov.

Parametri:

  • Identifikator, ki označuje parameter, mora biti edinstven v dosegu, kjer je metoda definirana.
  • Parameter je lahko enak imenu instančne spremenljivke, pri čemer parameter zakrije instančno spremenljivko (shadowing).
  • Zakrivanje (shadowing) se uporablja v konstruktorjih in metodah, ki nastavljajo vrednosti instančnih spremenljivk.
  • Kotlin uporablja kopirni mehanizem za parametre po vrednosti (call by value).
  • Pri objektih se v metodo prenaša referenca po vrednosti, kar pomeni, da se vrednost objekta lahko spremeni znotraj metode.

Zakrivanje Instančnih Spremenljivk (Shadowing):

  • Zakrivanje (shadowing) instančnih spremenljivk.

Prekrivanje (Overloading):

  • Kontekstno neodvisno prekrivanje (ni možno deklarirati dveh metod z enako signaturo, ki vračata različen tip).

Prekrivanje (Overriding):

  • Kovariantna sprememba tipa, ki ga funkcija vrača (covariant return type).
  • Klic ustrezne metode je odvisen od dinamičnega tipa prejemnika sporočila (virtual method invocation).
  • Vse metode so virtualne.
  • Prekrite metode lahko imajo določila, ki omogočajo večjo dostopnost kot v nadrazredu (npr. protected v nadrazredu in public v podrazredu).

Razred Any:

  • Generična koda se dobi z uporabo razreda Any.
  • Any je nadrazred vseh tipov, vključno s primitivnimi tipi.
  • Any ne more vsebovati vrednosti null.

Pretvorbe (Casting):

  • Uporaba objekta na mestu, kjer se pričakuje objekt drugačnega tipa.
  • Operatorja za preverjanje tipa sta is in !is.
  • Obstajajo pametne pretvorbe (smart casts), nevarne pretvorbe (as) in varne pretvorbe (as?).
  • Implicitna pretvorba (angl. implicit casting)
  • Eksplicitna pretvorba (angl. explicit casting)

Razred Unit:

  • Unit se vrne iz funkcije, ki ne vrne ničesar, podobno kot void v Javi.
  • Takšna funkcija običajno povzroči stranski učinek.
  • Tip Unit ima samo eno možno vrednost, in sicer objekt Unit.

Razred Nothing:

  • Nothing nima vrednosti.
  • Če funkcija vrača tip Nothing, se ne more normalno izvesti, ampak vrne izjemo ali vstopi v neskončno zanko.
  • Koda, ki sledi klicu funkcije s tipom Nothing, je označena kot nedosegljiva.
  • Nothing nima niti vrednosti null.

Podatkovni Razredi:

  • Namen je zadrževanje podatkov.
  • Uporablja se rezervirana beseda data.
  • Prevajalnik avtomatično generira metode equals(), toString() itd.
  • Podatkovni razredi ne morejo biti označeni z: abstract, open, inner, sealed.
  • Zahteve za primarni konstruktor: vsaj en parameter, vsebuje parametre označene z val ali var.

Enum Razredi:

  • Naštevanje objektov, ki jih povežemo v en tip.
  • Spremenljivka tipa enum bo imela neko vnaprej določeno konstanto vrednost.

Sealed Razredi:

  • Uporabljajo se za omejevanje hierarhije razredov (dedovanja).
  • Razred se lahko izpelje samo znotraj iste datoteke (zapečaten).
  • Ni jih mogoče izpeljati izven datoteke kjer so deklarirani.

Abstraktni Razredi:

  • Omogočajo definicijo abstraktnih razredov s ključno besedo abstract.
  • Iz abstraktnih razredov ni mogoče ustvariti objektov.
  • Člani abstraktnega razreda niso abstraktni razen, če so označeni kot abstract.

Razširitvene Funkcije (Extension Functions):

  • Omogočajo dodajanje metod razredom izven njihove definicije.

Object:

  • Uporablja se za definicijo podatkovnega tipa z eno samo pojavitvijo (Singleton).
  • Ustvarja se brez razreda in konstruktorja.

Companion Object:

  • Posebna deklaracija objekta znotraj razreda (spremljevalni objekt).
  • Sintaktično podobno statičnim metodam v drugih jezikih.
  • Člane objekta pokličete z imenom njegovega razreda in metodo.

Lambda Funkcije:

  • So preprost način za ad hoc zapis funkcij.
  • Pogosto so zapisane zelo kratko.
  • Uporabljajo sklepanje o tipu in spremenljivko it.

Funkcije Višjega Reda:

  • Funkcija, ki sprejme funkcijo kot parameter ali jo vrne.

Funkcije Inline:

  • Izboljšajo zmogljivost funkcij višjega reda.
  • Povejo prevajalniku, naj kopira telo funkcije na mesto klica.
  • Označujejo se s ključno besedo inline.

Izjeme:

  • So težave, ki se pojavijo med izvajanjem.
  • Kotlin podpira try-catch bloke, finally bloke, metanje izjem (throw) in anotacijo @Throws.
  • Catch bloke lahko podvajamo.

Generiki:

  • Omogočajo parametrizacijo razredov, vmesnikov in metod s tipi (type parameters).
  • Spremenljivke tipa so lahko kateri koli referenčni tip.

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
39 questions
Use Quizgecko on...
Browser
Browser