Napredno programiranje izpit
Temeljna lastnost sekvenc je to, da:
Lahko predstavijo katerokoli kolekcijo podatkov
Lahko predstavijo podatke katerega koli tipa
Jih lahko implementiramo na več načinov
Omogočajo zgolj branje na več načinov
C# ukaz finally zagotavlja:
Prostor za kodo, ki naj se izvrši samo v primeru, če ne pride do izjeme
Vrstni red izjem v kodi
Izvedbo kode ne glede na sprožene izjeme
Prenos izvajanja na izbrani nivo ulovljene izjeme
Zakaj C# poleg delegatov uvaja še dogodke?
Ker so hitrejši
Ker omogočajo stvari, ki jih delegati pač ne
Ker preprečujejo določene napake pri delu z delegati
To sta dva nepovezana koncepta
Deklaracija objekta z zakasnjenim izvajanjem pomeni:
Da ima objekt čas, da se sinhronizira s pripadajočo koleracijo
Da bo rezultat izračunam ob potrebi in ne takoj zdaj
Da se bo rezultat takoj pričel izračunavati v vzporedni niti
Da se bo iretator prestavil na prvi element sekvence
Kdaj uporabimo Dependency Inversion princip?
Ko želimo optimizirati izvajanje kode
Ko želimo spremeniti odvisnost dveh kosov kode
Ko želimo preprečiti večkratno uporabo vmesnikov
Ko potrebujemo kodo brez zunanjih odvisnosti
Kaj naredi Dependency Injection
Objekt pridobi iz višjega nivoja
Razred spremeni v vmesnik
Funkcijo ustvari v vmesnik
Ustvari vmesnik za potrebe funkcije
Kdaj bo razred B rahlo sklopljen z razredom A, če vemo, da A impelentira vmesnik?
Class B : A {}
Class B {A a;}
Class B { I x; }
Class B {}
Kateri principi so uporabljeni v tej kodi?
Zakasnjeno izvajanje
Ugrabitev spremenljivke in generični tipi
Obkroži vse razvidno iz legalne kode: C c = new C (new A(c));
A je rahlo sklopljen z E
A je tesno sklopljen z E
A je neodvisen od E
C je neodvisen od E
E je vmesnik
E je rahlo sklopljen z A
Privzeti konstruktor mora biti javen?
True
False
Dinamični polimorfizem zahteva dedovanje?
True
False
Dinamični polimorfizem zahteva enkapsulacijo?
True
False
Enkapsulacija zahteva dinamičen polimorfizem ?
True
False
Nekatere logične napake lahko spremenimo v sintaktične?
True
False
Razred je podatkovni tip?
True
False
Abstraktni objekt ne obstaja?
True
False
Velikost objekta je odvisna izključno iz metod?
True
False
Vsak razred mora imeti privzeti konstruktor
True
False
C# lastnost omogoča več nadzora kot field
True
False
Dinamična polimorfna koda je hitrejša od statične
True
False
Privatna metoda lahko uporablja tudi javne atribute
True
False
Smisel privatnega konstruktorja je v tem, da:
Prepreči nastanek kakaršnegakoli objekta tega tipa
Navzven prepreči uporabo določenega načina kreiranja objekta
Omogoči avtomatsko destrukcijo objekta
Kontruktor ne sme biti privaten
Kateri od naštetih principov je dejansko kriterij za uporabo dedovanja?
Single Responsibility Principle
Open Close Principle
Liskov Substitution Principle
Interface Segregation Principle
Katera rezervirana beseda je namenjena kreiranju novega tipa?
Interface
Class
Virtual
New
Objekti so razredi brez konstruktorja?
True
False
Garbage collection je nujni del objektnega programiranja
True
False
Virtualna metoda je klicana glede na tip objekta in ne reference?
True
False
Abstraktni objekt je nesmisel
True
False
Rahla sklopljenost razredov je boljša od tesne sklopljenosti?
True
False
Mehanizem abstrakcije omogoča programerju:
Pisanje bolj splošne kode
Pisanje bolj specializirane kode
Deklaracija private označuje dostopnost kode za operacijski sistem:
True
False
Katera trditev je pravilna?
polimorfne metode omogočajo klice metod brez proženja izjem
vmesnik določa česa izpeljani razred ne sme delati
konstruktor je prva metoda, ki je klicana nad objektom
polimorfne metode omogočajo dostop do privatnih vsebin nadrazreda
Katera rezervirana beseda je namenjena kreiranju novega objekta?
Interface
Class
Konstruktor
New
Polimorfna koda je v primerjavi z generično kodo:
Počasnejša
Hitrejša
Enako hitra
Če imamo class B : A{} in metodo foo(B b), je veljavno ukazati:
Foo(new A())
Foo(new B())
Oboje, a + b
Nic od nastetega
Plitva kopija (shallow copy) objekta pomeni, da se kopirajo:
Vsebina objekta in reference na vezane objekte
Vsebina objekta in vezani objekti
Samo referenca na objekt
Samo vsebina objekta, reference bodo null
Deklaracija virtual pred imenom metode pomeni:
Metoda potrbuje definicijo v vsakem podrazredu
Metode v podrazredih ni mogoče spreminjat
Metoda bo polimorfna v vseh izpeljanih razredih
Metoda je lahko tudi abstraktna
Zakaj imajo programski jetiki konstrukte za pisanje generične kode?
Ker ni zahtevno za prevajalnik, je pa modna muha.
Ker omogočajo uporabo iste kode z različnimi tipi objektov
Ker omogočajo uporabo različnih metod v okviru istega objekta
Ker omogočajo uporabo istega objekta v različnih metodah
Zakaj ima C# rezervirano besedo interface?
C# interface je izboljšava rezervirane besede class
C# interface je edini način kako ustvariti abstraktne objekte
C# interface je logična razširitev koncepta abstraktni razred
C# interface je nujen prevajalniški trik, kako približno doseči večkratno dedovanje
Katera lastnost kode se NI nujno izboljšala z vpeljavo OOP?
Vzdržljivost
Nadgradljivost
Berljivost
Hitrost
Izberi NEPRAVILNO trditev
Več metod ima lahko isto ime
Vsak razred potrebuje konstruktor
Razred lahko ima več destruktorjev
Razred ima lahko več konstruktorjev
Kaj od naštetih principov najbolj poudarja pomen dedovanja?
Lisk Substitution Principle
Dependency Inversion Principle
Single Responsibility Principle
Interface Segregation Principle
Avtomobil a = new Porche911() Avtomobil b = a; Koliko referenc in objektov?
2 referenci in 1 objekt
1 referenca in 1 objekt
2 referenci in 2 objekta
3 reference in 2 objekta
Če imamo legalno kodo X x = new Y(); to pomeni, da imamo tudi:
Class X {} class Y : X {}
Class Y {} class X : Y {}
Class Y {} class X { Y y; }
Class X {} class Y { X x; }
Pravilnost uporabe tipov v generični kodi se ugotavlja:
Pri preverjanju kode
Med preverjanjem in med izvajanjem kode
Med izvajanjem kode
Nikoli
Kateri mehanizem omogoča prevajalniku generiranje kode, ki bo šele v času izvajanja programa poiskala in klicala pravo metodo glede na tip objekta?
Generiki
Polimorfizem
Izjeme
LINQ
Tipska varnost generičnih kolekcij pomeni, da:
Lahko kolekcijo uporabimo le v generičnih metodah
Lahko v kolekcijo varno damo tudi objekte drugačnega tipa
Bodo med izvajanjem avtomatsko prestrežene vse izjeme zaradi uporabe objektov napačnega tipa
Uporabo objektov napačnega tipa prepreči že prevajalnik
Zakaj je pri pisanju catch handlerjev pomemben njihov vrstni red?
Ker tega prevajalnik ne zmore sam
Vrstni red ni pomemben, saj ga razreši prevajalnik
Zaradi poenostavitve sicer zelo kompliciranega izvajalnega procesa
Ker bi sicer prišlo do konfliktov med izjavami
Iretator:
Je sposoben shraniti sekvenco objektov
Obvlada multicast način za klic več metod v sekvenci
Je sekvenca elementov
Se zna sprehajati po zaporedju drugih objektov
OOP ponuja različne stopnje vidljivosti/dostopnosti (private, public…) ker:
Otežijo napačno uporabo objekta
Omogočajo boljšo zaznavo sintaktičnih napak
Preprečujejo sintaktične napake v kodi
Preprečujejo branje kode tretji stranki
Eden od ciljev vpeljave razrednih hierarhij je ta, da lahko:
Lahko za pomnilnik sedaj skrbi Garbage Collector
V kodi uporabljamo generične konstrukte ne glede na število tipov
Prevajalnik generira hitrejšo kodo
Veliko kode namesto človeka napiše kar prevajalnik
Kaj NI cilj enkapsulacije?
Omejevanje dostopa podatkov
Omejevanje načinov spreminjanja podatkov
Manjša verjetnost logičnih napak
Avtomatsko klicanje virtualnih funkcij s strani prevajalnika
Zakaj je OOP poleg funkcijske notacije klica metode z objektom – npr. foo(a); uvedel še objektno notacijo a.foo();?
Ker je funkcijska notacija zastarela
Ker včasih boljše izraža namen ukaza
Ker objektna omogoča hitrejše izvajanje kode
Ker objektna omogoča hitrejše prevajanje kode
Kateri mehanizem se sproži pri nastanku vsakega objekta?
Kontruktor
Izjema
Finally
Destruktor
Če želimo v kodi hkrati uporabiti več razredov z istim imenom , moramo uporabit
Polimorfizem
Interface
Namespace
Iterator
Overload metode pomeni, da imata dve metodi lahko isto/i :
Ime
Vsebino
API
Podpis
Sintaktično pravilna koda X x = new Y (); x.foo(); bo klicala metodo foo() :
Glede na tip reference, razen če je foo virtualna metoda v Y
Glede na tip reference;
Glede na tip reference, razen če je foo virtualna metoda v X
Glede na tip objekta
Kako najhitreje definiramo funkcijo?
Statična funkcija
Generična funkcija
Polimorfna funkcija
Lambda funkcija
Označite pravilno trditev!
Privzeti konstruktor mora biti javen
Izjeme so nadomestilo za goto stavek
Iterator je primerek abstraktnega razreda
Konkretni razred se lahko udejanji v objekt, abstraktni ne
Kaj lahko dosežemo z definicijo lastnih podatkovnih tipov?
Hitrejše prevajanje kode
Zaščito programov pred hekerskimi vdori
Spremembo logičnih v sintaktične napake
Enostavnejšo uporabo objektnih kolekcij
Kaj lahko prevajalniku povemo, da lahko pri klicu metode foo(A a); namesto objekta tipa A izjemoma uporabi objekt tipa B?
Z izjemami
Z dedovanjem
Z generiki
Z sekvencami
Kaj je eno od bistev objektno-orientiranega programiranja?
Hitrost prevajanja in izvajanja
Možnost sintaktičnega barvanja izvorne kode
Prevajalniku razumljiva hierarhija razredov
Strogo tipizirana izvorna koda
Če imamo: Class Vozilo { X motor; … } Kdaj bo razred Vozilo rahlo sklopljen z razredom X?
Ko bo X konkreten tip, npr. V6Motor726 motor;
Ko bo motor privaten znotraj razreda Vozilo, npr. private Motor motor;
Ko bo X abstrakten tip, npr IMotor motor;
Ko bo x generičen tip, npr. Motor motor;
Označi najboljši način definicije metode foo(), ki potrebuje en parameter:
Void foo() { .. } // X obj je globalna spremenljivka
Void foo() { X obj } // sprejme točno določen tip objekta
Void foo(IX obj) { .. } // sprejme objekt z znanim vmsenikom
Void foo(object obj) { …} // sprejme katerikoli objekt
Zakaj se priporoča uporaba generičnih podatkovnih kolekcij?
Zaradi tipske varnosti elementov v kolekciji
Zaradi polimorfizma
Zaradi možne uporabe sekvenc
Zaradi možne uporabe lambda izrazov
Kaj vse lahko uporabljamo v lambda izrazu?
Vse objekte in metode, ki bi jih sicer lahko uporabili na istem mestu
Vse objekte vendar le metode iz razreda Object
Samo objekte, ki so paramteri lambda izraza, in metode iz razreda Object
Samo objekte, ki so parametri lambda izraza, in vse metode nad njimi
Kateri ukaz se izvede samo včasih?
Throw
Using
Catch
Finally
Označi vse kaj je razvidno iz spodnje, sintaktično pravilne kode;
Class C:B {}
C je iterabilen razred
Class B : C {}
A je iterabilen razred
B je iretabilen razred
Označi pravilne trditve:
Objektni programski jezik lahko uporabimo tudi na ne-objektni način
Izjema je kot return čez več kontekstov izvajanja
Uporaba izjem zahteva poznavanje iteraterjev
Dva generična objekta je vedno mogoče sešteti
Funkciji je mogoče poslati tudi funkcijo, ne zgolj podatkov
Generični tip lahko ima poljubno oznako/ime
Izberi napačno trditev
Sekvenca je način, kako lahko elemente kolekcije pošljemo v neko funkcijo ne da bi funkcija poznala kolekcijo
Sekvenca omogoča pregledovanje kolekcije, ne pa tudi hranjenja podatkov
Sekvenco lahko pričnemo uporabljati takoj, ko je prvi element na voljo, medtem ko mora kolekcija vsako operacijo zaključiti v celoti, preden se lahko program nadaljuje.
Funkcija, ki uporablja sekvenco, lahko spremeni izvorno kolekcijo elementov sekvence
V OOP velja, da je vse objekt. Kaj torej lahko predstavimo z objektom?
Sekvenco(npr. 1,2,3)
Ukaz (npr. return)
Funkcijo (npr. Console.WriteLine)
Iteracijo (npr. for)
Razred (npr. int)
Podatke (npr. 41)
A pomeni, da je B :
Generični razred
Generična kolekcija
Kolekcija
Poljuben podatkovni tip
Kako določamo vrstni red catch ukazov?
Glede na kontekstno globino, v kateri se lahko izjema sproži
Glede na tip izjeme
Vrstni red ni pomemben, prevajalnik že ve kaj in kako
Glede na verjetnost izjeme
Kaj od naštetega NIMA povezave s sekvencami podatkov?
Iretatorski razredi
Dependency inversion princip
Standardne kolekcije
Yield return
Kaj pomeni zakasnjeno izvajanje ( Deferred execution)
Da se bo koda dotična koda takoj pričela izvajati v vzporedni izvajalni niti
Predstavitev iteratorja na začetek sekvence
Da bo dotična koda izvedena enkrat v prihodnosti
Da bo dotična koda izvedena, ko bodo na razpolago vsi podatki
Čemu služijo lamdba izrazi?
Enostavnemu klicu statičnih funkcij
Enostavni definiciji funkcij znotraj kode
Hitremu klicu katere koli funkcije
Enostavnemu klicu funkcij znotraj kode
Kaj predstavlja objekt?
Način kreiranja podatkovnega tipa
Način naslavljanja podatkov
Enkapsulacijo virtualne metode
Grupacijo podatkov
Kaj je osnovna lastnost sekvence?
Tipska varnost
Iterabilnost(for, foreach, neko zaporedje brez preskokok)
Generičnost
Rahla sklopljenost
Označite pravilne trditve, napačen odgovor razveljavi CELOTNO nalogo *
Sekvenca je kolekcija brez konstruktorja
Nalogo delegatov lahko opravimo tudi z vmesniki/polimorfizmom
Tesna sklopljenost je boljša od rahle sklopljenosti
Vsaka funkcija, ki sprejme sekvenco, mora tudi vrniti sekvenco
C# vmesnik določa programerski vmesnik objekta
Zakaj ima C# možnost razširitvenih metod
Zaradi hitrejše izvedbe kode
Za dostop do sicer privatnih lastnosti objektov
Za lažje ustvarjanje sekvenc elementov
Za enostavnejšo notacijo klica funkcij
Označite pravilne trditve:
Generiki omogočajo preverjanje tipov v času izvajanja programa
Delegat je način kako shraniti funkcijo v objekt
Funkcijo shranimo v delegatski objekt vedno s pomočjo lambda izraza
Delegat je pravzaprav omejen event
Kaj je sekvenca?
Zaporedje elementov
Nabor metod za delo s podatki
Iteratorski podatkovni tip
Generični razred za delo s kolekcijami
V C# imamo ob delegatih dodatno še evente. Zakaj?
Eventi so nekaj čisto drugega kot delegati
Ker so eventi hitra izvedba delegatov
Ker eventi omogočajo več kot delegati
Ker eventi preprečujejo določene možne težave pri delu z delegati
Kaj vse lahko uporabimo v okviru generične metode?
Vse objekte
Vse reference
Označite pravilne trditve:
Sekvenca objektov potrebuje dedovanje
Funkcija, ki sprejme sekvenco, tudi vrne sekvenco
Iteratorji so privatni delegat
Rahla sklopljenost je boljša od tesne sklopljenosti
Kolekcijo podatkov lahko predstavimo kot sekvenco
Označite pravilne trditve:
Razred mora imeti privatno vsebino
Vsaka kolekcija je tudi sekvenca
V sekvenci je lahko več objektov
V sekvenci je lahko več delegatskih objektov
V sekvenci je lahko več sekvenc
V sekvenci je lahko več kolekcij
Kolekcija je drugo ime za iterator
Kolekcija je drugo ime za iterator
A pomeni, da B ne more biti:
Razred
Objekt
Sekvenca
Kolekcija
Kateri ukaz zaključi izdelavo sekvence?
Yield break
Yield return
Catch
Try
Na koliko načinov lahko v jeziku C# izdelamo sekvenco?
0
1
2
3
C# razširitvene metode so uporabne pri:
Generičnih
.NET
Uporabniških
A+b+c
Tipsko varnost kolekcij zagotavlja mehanizem:
Generikov
Lambda izrazov
Dedovanja
Castov
Generiki omogočajo _______ tipov v času _______ programa:
Izdelava/prevajanja
Izdelavo/izvajanja
Preverjanje/preverjanja
Lambda je uporaba za inicializacijo:
Delegata
Iteratorja
Sekvence
Hierarhije
Kaj je event?
Privatni delegat
Javni delegat
Omejen delegat
Nič od tega
Kaj ni cilj enkapsulacije?
Manjša vrjetnost logičnih napak
Omejevanje dostopa do podatkov
Avtomatsko klicanje virtualnih funkcij s strani prevajalnika
Omejevanje načinov spreminjanja podatkov
Temeljna funkcionalnost objektnih programskih jezikov je:
Izjeme
Delegati
Polimorfizem
Enkapsulacija
Izberi pravilne trditve:
Objekti so razredi brez konstruktorja
Garbage collection je nujni del objektnega programiranja
Virtualna metoda je klicana glede na tip objekta in ne reference
Abstraktni objekt je nesmisel
Rahla sklopljenost razredov je boljša od tesne sklopljenosti
Označi vse tipične lastnosti objektnih programskih jezikov:
Hitrejše pisanje programov
Ne potrebuje prevajalnika
Večja stopnja varnosti kode
Zagotavlja tesno sklopljenost komponent
Večja berljivost in izraznost
Hitrejše izvajanje
Izpostavljajo polimorfizem kot ključno objektno lastnost
Edini primerni za varnostno-kritične aplikacije
Z njimi je mogoče napisati tudi slabo kodo
Omogočajo funkcijsko programiranje
Označi pravilne trditve:
Destruktor je klican avtomatsko s strani prevajalnika
Prevajalnik avtomatsko kliče privzeti konstruktor
Kolekcije lahko hranijo zgolj vgrajene tipe podatkov
Generiki so avtomatski način pretvorbe CAST objektov
Generiki so način kako shraniti razred v objekt
Izjeme so izboljšana oblika goto stavka
Semantične napake se v strojni kodi pokaže kot sintaktična napaka
{"name":"Napredno programiranje izpit", "url":"https://www.quiz-maker.com/QPREVIEW","txt":"Temeljna lastnost sekvenc je to, da:, C# ukaz finally zagotavlja:, Zakaj C# poleg delegatov uvaja še dogodke?","img":"https://www.quiz-maker.com/3012/CDN/92-4502182/zajeta-slika.png?sz=1200-00000000001000005300"}