OOP Test Exam
Kurš no apgalvojumiem par atvasinātajām klasēm NAV patiess?
Ja mantošanas likums ir public, tad apakšklasē visi klases locekļi, kas mantoti no virsklases, nemaina savu pieejamības statusu.
Abstraktajām klasēm, kurās deklarēta kaut viena tīrā virtuālā metode, nevar būt neviena atvasinātā klase (apakšklase).
Atvasinātajā klasē (apakšklasē) tiek mantoti visi bāzes klases (virsklases) mainīgie (atribūti), ieskaitot tos, kas virsklasē deklarēti kā private.
Ja bāzes klases (virsklases) metode deklarēta kā private, tad tai nevar piekļūt arī no šīs klases atvasināto klašu (apakšklašu) metodēs.
Kurš no apgalvojumiem par atvasinātajām klasēm NAV patiess?
No abstraktajām klasēm, kurās deklarēta kaut viena tīrā virtuālā metode, objektus nevar veidot.
Ja mantošanas likums ir public, tad atvasinātajā klasē visi mantotie klases locekļi, saglabā pieejamību, kāda tā bija deklarēta virsklasē (public, protected vai private).
Atvasinātajā klasē (apakšklasē) tiek mantoti visi bāzes klases (virsklases) mainīgie (atribūti) neatkarīgi no tā, vai tie bāzes klasē deklarēti kā public, protected vai private.
Ja bāzes klases (virsklases) metode deklarēta kā private, tad to var izmantot no šīs klases atvasinātās klases (apakšklases) metodēs.
Kurš no apgalvojumiem par atvasinātajām klasēm IR patiess?
Ja mantošanas likums ir protected, tad apakšklasē visi klases locekļi, kas mantoti no virsklases, kļūst par protected.
Atvasinātās klases (apakšklases) metodēs, kas deklarētas kā private, var piekļūt bāzes klases (virsklases) private mainīgajiem (atribūtiem).
Atvasinātajā klasē (apakšklasē) tiek mantoti visi bāzes klases (virsklases) mainīgie (atribūti), izņemot tos, kas virsklasē deklarēti kā private.
Ja bāzes klases (virsklases) metode deklarēta kā protected, tad atvasinātās klases (apakšklases) metodēs to var izmantot.
Abstraktajām klasēm, kurās deklarēta kaut viena tīrā virtuālā metode, nevar būt neviena atvasinātā klase (apakšklase).
Kurš no apgalvojumiem par izņēmuma situāciju apstrādi NAV patiess?
Lai radītu izņēmuma situāciju, programmā jāizmanto operators catch, kurā jānorāda radāmā izņēmuma objekta tips.
Lai varētu apstrādāt izņēmuma situāciju, kas radīta ar operatoru throw, x programmas kods, kura izpildes laikā varētu rasties izņēmuma situācija, ir jāiekļauj try blokā.
Izņēmuma situācijas apstrādi var veikt, izmantojot operatoru catch, kurā nenorāda konkrētu izņēmuma objekta tipu, t. i., lieto operatoru catch(...).
Izņēmuma situācijas apstrādi veic, izmantojot operatoru catch, kurā norādīts izņēmuma objekta tips.
Kurš no apgalvojumiem par izņēmuma situāciju apstrādi IR patiess?
Lai varētu apstrādāt izņēmuma situāciju, kas radīta ar operatoru throw, programmas kods, kura izpildes laikā varētu rasties izņēmuma situācija, ir jāiekļauj catch blokā.
Izņēmuma situācijas apstrādi veic, izmantojot operatoru catch, kurā norādīts izņēmuma objekta tips.
Ja izņēmuma situācija ir radīta ar operatoru throw, bet programmā nav paredzēta tās apstrāde, tad izņēmuma situācija tiek ignorēta un tiek izpildīts nākamais operators aiz throw.
Ja izņēmuma situācija ir radīta ar operatoru try, apstrāde paredzēta ar operatoru catchf...), tad šāds operators catch apstrādās jebkura tipa izņēmuma objektus
Lai radītu izņēmuma situāciju, programmā jāizmanto operators try, kurā jānorāda radāmā izņēmuma objekta tips.
Kurš no apgalvojumiem par izņēmuma Situāciju apstrādi IR patiess?
Lai varētu apstrādāt izņēmuma situāciju, kas radīta ar operatoru throw, programmas kods, kura izpildes laikā varētu rasties izņēmuma situācija, ir jāiekļauj try blokā.
Lai radītu izņēmuma situāciju, programmā jāizmanto operators catch, kurā jānorāda radāmā izņēmuma objekta tips.
Ja izņēmuma situācija ir radīta ar operatoru throw, bet programmā nav paredzēta tās apstrāde, tad izņēmuma situācija tiek ignorēta un tiek izpildīts nākamais operators aiz throw.
Izņēmuma situācijas apstrādi veic, izmantojot operatoru switch, kurā norādīts izņēmuma objekta tips.
Lai radītu izņēmuma situāciju, programmā jāizmanto operators try, kurā jānorāda radāmā izņēmuma objekta tips.
Kurš no apgalvojumiem par šo klasi NAV patiess?
Klases Triangle mainīgos a, b un c nevarēs izmantot apakšklasēs, kas atvasinātas no šīs klases, jo tie ir deklarēti kā private.
Klasei Triangle ir deklarēti 7 locekļi - trīs mainīgie un 4 metodes (klases funkcijas).
Funkcijā Triangle% operator*( Triangle, int) var piekļūt klases Triangle private mainīgajiem a, b un c.
Klase Triangle ir abstraktā klase, jo tajā ir metodes, kas deklarētas kā friend.
Kurš no apgalvojumiem par šo klasi IR patiess?
Klase Triangle ir abstraktā klase, jo tajā ir metodes, kas deklarētas kā friend.
Dotajā aprakstā klasei Triangle ir deklarēti klases locekļi - trīs mainīgie (atribūti) un 4 metodes (klases funkcijas).
Dotajā aprakstā klasei Triangle ir deklarēti kopā 9 klases locekļi - trīs mainīgie (atribūti) un sešas metodes (klases funkcijas).
Klases Triangle private mainīgos a, b un c mantos apakšklasēs, kas atvasinātas no šīs klases, un varēs tiem piekļūt, ja izmantos mantošanas likumu public.
Klases metode (funkcija) ir aprakstīta kā statiska (static). Kurš no apgalvojumiem par šādu metodi IR patiess?
Par statisku klases metodi var deklarēt tikai metodi, kas ir deklarēta kā private.
Lai statiskā metodē varētu piekļūt šīs klases mainīgajiem (atribūtiem), vienmēr jāizmanto rādītājs this.
Statisku klases metodi var izsaukt arī tad, ja vēl nav radīts neviens šīs klases objekts.
Statiskās metodēs nav atļauts izmantot tos klases atribūtus (mainīgos), kas arīir deklarēti kā statiski (static).
Klases metode (funkcija) ir aprakstīta kā statiska (static). Kurš no apgalvojumiem par šādu metodi NAV patiess?
Lai statiskā metodē varētu piekļūt šīs klases mainīgajiem v (atribūtiem), vienmēr jāizmanto rādītājs this.
Statiskās metodēs ir atļauts izmantot tos klases atribūtus (mainīgos), kas arī ir deklarēti kā statiski (static).
Šo statisko klases metodi var izsaukt arī tad, ja nav vēl radīts neviens šīs klases objekts.
Statisku klases metodi var izmantot visās pārējās Šīs klases metodēs.
Statiskā metodē nav atļauts izmantot rādītāju this, lai piekļūtu šīs klases mainīgajiem (atribūtiem).
Kurš no apgalvojumiem par šabloniem (template) IR patiess?
Klases šablons ir otrs termins abstraktās klases apzīmēšanai, jo no klases šablona nevar radīt objektus (klases instances).
Ja šablona parametram ir norādīta noklusētā vērtība, kas vienāda ar 0, tad šāds šablons kļūst par abstrakto šablonu.
Pats šablons kodu neģenerē - tas tikai norāda kompilatoram, kāds kods ir jāģenerē atkarībā no saņemtajiem šablona parametriem.
Ja šablonam nav paredzēts neviens parametrs, tad to var izmantot tikai vienas klases izveidošanai.
Kurš no apgalvojumiem par šabloniem (template) NAV patiess?
Ja ir izveidots klases šablons, tad šādu klasi sauc par abstrakto klasi.
Klases šablonam obligāti ir jābūt vismaz vienam parametram, kuram obligāti jābūt lietotam klases definīcijā.
Šabloni reprezentē formas, no kurām, izmantojot šablona parametrus, kompilators automātiski ģenerē kodu funkcijām un klasēm.
Katrai šablona parametru vērtību kombinācijai tiek ģenerēts unikāls funkcijas vai klases kods, kuru var izmantot programmā.
Kurš no apgalvojumiem par operāciju definēšanu klasēm IR patiess?
Definējot operāciju, kuru varēs izmantot klases objektiem, var noteikt tās prioritāti, kas atšķiras no šīs operācijas standarta prioritātes.
Ja operācija ir definēta abstraktajā klasē (kurā ir vismaz viena tīrā virtuālā metode), tad šo operāciju nevar pārdefinēt klasēs, kas ir atvasinātas no abstraktās klases.
Vienvietīgo (unāro) operāciju (piemēram, ++ vai —) ir iespējams realizēt tikai kā ārēju funkciju, deklarējot to klasē kā friend.
Klasei definētās operācijas, kas realizētas kā klases metodes, manto visas no šīs klases atvasinātās klases.
Kurš no zemāk minētajiem apgalvojumiem NAV patiess?
Atvasināto klasi (apakšklasi) var atvasināt vairākām bāzes klasēm (virsklasēm), izmantojot dažādus mantošanas likumus (private, protected vai public).
Objekts ir klases eksemplārs (instance), un to izveido klases konstruktors.
Atvasinātās klases (apakšklases) metodēs var izmantot bāzes klases (virsklases) locekļus v (mainīgos un metodes) neatkarīgi no tā, kura no piekļuvēm private, protected vai public tiem ir deklarēta bāzes klasē.
Klasē var definēt gan statiskus mainīgos, gan statiskas metodes, ko norāda ar atslēgvārdu static
Ja klases locekļi deklarēti kā private, tad:
tas ir alternatīvs nosaukums protected locekļiem, bet lietojams tikai atvasinātās klasēs.
tos aizliegts izmantot šīs klases funkcijās, bet var lietot tikai klasēs, kas no tās atvasinātas.
tiem var piekļūt tikai šīs klases virtuālajos konstruktoros.
tiem var piekļūt šīs klases metodēs, ieskaitot konstruktorus un destruktoru.
tiem piekļūt var tikai tādās citu klašu metodēs, kas arī deklarētas kā private.
Ja klases locekļi deklarēti kā protected, tad:
tiem nevar piekļūt šīs klases metodēs, bet var lietot tikai klasēs, kas atvasinātas no šīs klases.
šos klases locekļus atļauts izmantot tikai šīs klases konstruktoros, kas rada klases objektus.
tiem var piekļūt šīs klases metodēs un visu no šīs klases atvasināto klašu metodēs.
tas ir alternatīvs nosaukums private klases locekļiem, bet lietojams tikai atvasinātajās klasēs.
Visas iepriekš minētās atbildes ir pareizas.
Neviena no iepriekš minētajām atbildēm nav pareiza.
Ja klases metode deklarēta kā protected, tad:
tām var piekļūt tikai tādās metodēs, kas klasē deklarētas statiskas (static)
to var izmantot citās šīs klases metodēs, t. sk. konstruktoros, kā arī visu no šīs klases atvasināto klašu metodēs un šo atvasināto klašu konstruktoros.
tas ir alternatīvs nosaukums private metodēm, bet tās var izmantot tikai atvasinātajās klasēs.
tās var izmantot tikai no šīs klases atvasināto klašu metodēs un tikai tad, ja mantošanas likums arī ir protected.
Programmā ir šādas deklarācijas mainīgajam p un masīvam y:
int* p;
int y[5] = {0, 2,0, 2,1};
Kurš no zemāk dotajiem programmas fragmentiem uz ekrāna izvadīs skaitli 2?
p = &y[2]; cout << *(p+2);
p=y;cout<<*(p+2);
p=y;cout<<*p+2;
p = &y[0]; cout<<*(y +2);
Programmā aprakstīti divi mainīgie x un y:
int x = 2, *y;
Kurš no zemāk dotajiem programmas fragmentiem uz ekrāna izvadīs skaitli 2?
y=2; cout << *y;
y = &x; cout << *(y+2);
y = &x; cout << *y;
y= *x; cout << y->x;
y=*x; cout<
Objektorientētajā programmēšanā par klases metodi sauc:
klases eksemplāra (instances), kam ir sava identitāte, atribūti un uzvedība, radīšanu.
paņēmienu, kas ļauj veidot atvasinātās klases (apakšklases) no bāzes klasēm (virsklasēm)
klases funkciju. kas realizē algoritmu, kuru izpilda objekts reaģējot uz ziņojumu.
abstrakto klašu veidošanu, deklarējot klasei tīrās virtuālās funkcijas
Dota klase Triangle:
class Triangle {
protected: int a, b, c; // mālu garumi
public: Triangle() (a=b=c=0;); // konstruktors bez parametriem
// MISSING
Triangle(Triangle& t) ( a = t.a; b= t.b; c = t.c; ) // kopijas konstruktors
int Perimeter() ( returna +b +c;)
};
Šī klase jāpapildina ar konstruktoru, kuram kā parametrus var nodot visu trīs trīsstūra malu garumus. Konstruktora definīcija tiks ievietota koda rindiņā, kas atzīmēta ar komentāru //MISSING
Dota klase Rectangle, kas paredzēta darbam ar ģeometrisku figūru taisnstūris:
class Rectangle {
protected: int w, h;
public: Rectangle(int a, int b)(w=a; h=b;)
Rectangle() (h=w=0;)
int perimeter() { return 2*(h+w);}
int area() { return h*w; }
// definīcija metodei, kas realizē operāciju ++
};
Klase jāpapildina ar metodi (funkciju), kas dod iespēju izpildīt prefikso inkrementācijas (palielināšanas) operāciju ++ šīs klases objektiem. Operācijas ++ izpildes rezultātā taisnstūra abu malu garumam jābūt palielinātiem par 1. Piemēram, lai pēc tam programmā varētu rakstīt, piemēram, tā:
Rectangle a(10,20); // taisnstūris ar malu garumiem 10 un 20
++a; // taisnstūra malu vērtības būs 11 un 21
++a; // taisnstūra malu vērtības būs 11 un 21
{"name":"OOP Test Exam", "url":"https://www.quiz-maker.com/QEABVXPBV","txt":"Kurš no apgalvojumiem par atvasinātajām klasēm NAV patiess?, Kurš no apgalvojumiem par atvasinātajām klasēm NAV patiess?, Kurš no apgalvojumiem par atvasinātajām klasēm IR patiess?","img":"https://www.quiz-maker.com/3012/CDN/90-4373589/tt1.png?sz=1200-00000000001000005109"}