You are on page 1of 12

T01

Programavimo esmė – aprašyti su uždaviniu susijusius realiojo pasaulio objektus (jų savybes ir elgseną)
bei kas su šiais objektais atliekama.

Klasės ir objektai
Klasė – tai bendrinis vienatipių objektų grupės savybių ir elgsenos aprašymas.
Savybės (objekto charakteristikos) aprašomos duomenų laukais.
Elgsena (objekto atsakas į išorinį poveikį) aprašoma metodais.
Klasė leidžia neaprašinėti savybių ir elgsenos kiekvienam objektui, tik nurodyti jų priklausomybę
klasei.

Objektas–tai klasės konkretus atvaizdavimas kompiuteryje.

Sukurdami objektą, nurodome klasę, kurios aprašymą naudojame objektui sukurti.


Visi tos pačios klasės objektai pasižymi vienoda elgsena.

Esmė
OP idėja – duomenų ir juos naudojančių funkcijų apjungimas į vieną visumą (objektą):

 objekto duomenys išorėje tiesiogiai nepasiekiami, tik per juos perskaitantį objekto
sąsajos metodą
 jei reikia keisti objekto duomenis, kreipiamės į juos įrašantį objekto sąsajos metodą

Duomenų ir juos naudojančių funkcijų apjungimas į vieną visumą ir paslėpimas nuo išorės
vadinamas inkapsuliacija.

Duomenų struktūros
Daug vienos rūšies duomenų: atmintinės laukai nuosekliai išdėstytoms vieno tipo reikšmėms –
masyvai.
Daug skirtingų rūšių duomenų: atmintinės laukai nuosekliai išdėstytoms skirtingų tipų
reikšmėms – struktūros.

Programavimas–tai objektų bei uždavinio sprendimo eigos aprašymas programavimo kalboje.


Programavimo kalba – tai priemonė algoritmo užrašymui kompiuteriui suprantama forma ir jo
įvykdymui kompiuteryje.
Parašius programą, ją reikia kompiliuoti –paversti vykdomu mašininiu kodu.
Programos testavimas - tai, kai net programai pateikus gerus rezultatus, skaičiavimus reikia
kartoti su skirtingais duomenimis visiems galimiems programos panaudojimo atvejams.

T02 bazinės operacijos ir taisyklės


Operandai – tai kintamieji ir/arba konstantos.
Veiksmai atliekami tarp dviejų suderinamo tipo operandų. Operacijos rezultatas tipas yra
suderinamas su operandais.

Varianto operatorius switch

 Išrinkimas, kai daug variantų.


 Išraiškos reikšmė lyginama su pastoviosiomis reikšmėmis.
 Tiek išraiškos, tiek konstantų tipai turi sutapti. Jie gali būti sveikojo tipo (visi galimi
sveikieji tipai, charirgi), išvardijimo tipo arba eilutės tipo.

Komentarai skirti:

 Nurodyti bendrą programos paskirtį


 Nurodyti konstantų paskirtį
 Nurodyti klasių paskirtį
 Nurodyti klasių kintamųjų paskirtį
 Nurodyti pagrindinių programos kintamųjų paskirtį
 Aiškinti kiekvieno metodo:
o paskirtį
o naudojamus parametrus
o grąžinamą reikšmę
 Aiškinti ypatingų programos vietų ir svarbiausių blokų paskirtį

T03 Klasės ir objekto samprata


Klasės elementų matomumas

 Klasės elementų matomumu vadinama galimybė juos panaudoti klasės viduje ir išorėje.
 Matomumo požymis suteikiamas užrašius vieną iš raktinių žodžių private ar public.

Sąsajų esmė

 Skelbti objekto kintamuosius atviraisiais nerekomenduojama, nes pažeidžiamas kertinis


objektinio programavimo principas – inkapsuliacija.
 Objekto elgsenos aprašyme galima numatyti galimybę keistis duomenimis su aplinka.
Tam naudojami specialūs atvirieji metodai –sąsajos, duomenų priėmimui ir išdavimui.

Metodai
 Metodu vadinama specialiai apiforminta objekto elgseną nusakanti programos dalis.
 Metodo aprašymas talpinamas klasėje ir susideda iš vardo, parametrų sąrašo ir
kamieno.
 Per parametrus metodui perduodami duomenys.
 Skaičiavimų rezultatai grąžinami per metodo vardą.

Metodo dalys:
Tipas – metodo vardo (kintamojo) tipas.
MetodoVardas – metodo esmę atspindintis kintamasis, naudojamas kreipinyje ir per kurį
grąžinamas atsakymas.
Parametrai – kintamųjų (metodo parametrų) aprašymas. Parametrai aprašomi kaip paprasti
kintamieji – juos naudosime Kamiene.
Atsakymas – reiškinys, pagal kurį apskaičiuojama atsakymo reikšmė. Operatorius returnšią
reikšmę suteikia reikšmę kintamajam MetodoVardasir užbaigia metodo darbą.
Kamienas – atliekamus veiksmus aprašanti programa.

Objektų konstruktorius
o Konstruktorius – tai specialus metodas, kviečiamas kuriant objektą ir nustatant jo
savybių pradines reikšmes.
o Konstruktorius neturi tipo, vardas sutampa su klasės vardu, jis negrąžina reikšmės.
Konstruktorius dalyvauja kuriant objektus pagal klasės aprašymą:
Prekepr1 = newPreke();
Konstruktorius skirtas:

 Išskirti atmintį objekto savybėms


 Suteikti pradines reikšmes objekto savybėms

Objektų rinkinio sąvoka


 Esant dideliam vienatipių objektų kiekiui, naudojami objektų rinkiniai.
 Objektų rinkinys turi savo vardą. Atskiras objektas ar jo savybė pasiekiami, nurodant
objektų rinkinio vardą, objekto eilės numerį rinkinyje ir, jei reikia, savybės vardą.
Objektų rinkiniai – statiniai masyvai
Pradžioje aprašoma visų objektų bendras savybes ir elgseną nustatanti klasė, kurios pagrindu
bus kuriamas šios klasės objektų rinkinys.
Po to aprašomas objektų rinkinys –statinis masyvas, nurodant maksimalų rinkinio narių –
objektų kiekį (maksimalų masyvo ilgį).
Objektų rinkinio – statinio masyvo tipinis paskelbimas: Klasė[] Masyvas;
Ir atminties prašymas (be atminties negalima): Masyvas = newKlasė [Maksi];

Return sakinys
•Reikšmei grąžinti per metodo vardą naudojamas sakinys: return reiškinys;
•Grąžinamo reiškinio tipas turi atitikti metodo grąžinamos reikšmės tipą.
•Metode gali būti keli return sakiniai.
•Įvykdžius return sakinį, išeinama iš metodo.

Rezultatų grąžinimas per kreipinio argumentus


•Rašome prieš parametrus, kurių pakitusios reikšmės turi grįžti, out arba ref. Tai reikia tik
reikšmės tipo kintamiesiems, to nereikia nuorodos tipo kintamiesiems
•ref naudojamas kintamiesiems, kurių pradinės reikšmės jau yra priskirtos iki kreipinio, taip pat
tokiam kintamajam nėra būtina priskirti reikšmę metodo viduje
•out naudojamas kintamiesiems, kurių pradinės reikšmės priskiriamos metodo viduje
•Šie raktiniai žodžiai turi būti naudojami tiek antraštėje, tiek ir kreipinyje
T04 Operacijų užklojimas ir baziniai algoritmai

Operatorių užklojimo esmė


Tas pats užklotas operatorius (pvz., +,-) kiekvienoje klasėje turi skirtingą prasmę.

Antraštės taisyklės
•Antraštė pradedama public static
•Antraštėje svarbu tinkamai apibrėžti grąžinamos reikšmės tipą. 2rūšys:
–Klasės objektas –operatoriams, kurie nekeičia pirmojo objekto reikšmės. Tai +, *, /ir t.t.;
–bool–palyginimo operatoriams ==, !=ir t.t.
•Toliau –operator operatoriaus_simbolis
•Jei operatorius vienvietis, vienas parametras.
•Jei operatorius dvivietis, visada pirmasis parametras turi formą X pirmas, kur X –vardas klasės,
kuriai užklojamas operatorius, o antrasis parametras –tai su kuo dalyvauja operacijoje pirmasis
parametras.

Objektų rinkinio charakteristika


–Išvestinė (apskaičiuojama) objektų rinkinio charakteristikų funkcija (suma, vidurkis).
–Išrenkamo (pagal tam tikrą kriterijų) iš rinkinio objekto charakteristika (didžiausias, dažnis).
T05 Klasės papildomos savybės
Objektų rinkinio histograma
•Histograma –objektų dažnio rinkinyje skirstinys
•Apribojimai histogramoms reikšmėms
–Sveikosios
–Teigiamos
–Riboto dydžio

Užklojimo apibrėžimas
Užklojimas – tai programavime taikoma praktika, leidžianti pateikti dvi ar daugiau skirtingų to
paties metodo realizacijų toje pačioje apibrėžimo srityje (klasėje). Kitaip tai galimybė naudoti tą
patį vardą dviem ar daugiau metodų.

Metodų skirtingumo nustatymas


•Užklojami metodai gali skirtis:
–Parametrų tipais;
–Parametrų kiekiu.
•Užklojami metodai negali skirtis grąžinamos reikšmės tipu

Kada metodai neturėtų būti užklojami


•Kai metodai, kuriuos ruošiatės užkloti, atlieka skirtingus veiksmus.
•Kai vienas metodas su parametrais su numatytosiomis reikšmėmis gali pakeisti užklojamus
metodus.

Objektai gali būti susieti:


•pagal indeksą;
•pagal reikšmę.

T06 Konteinerinė klasė


Klasė vadinama konteinerine, jei savyje turi objektų rinkinį – masyvą klasėje.
T07 Paveldėjimas
•Paveldėjimas –esamos programinės įrangos panaudojimo forma, kai esama PĮ papildoma
naujais duomenimis ir naujais veiksmais
•Paveldimumas realizuojamas, išvedant naujas klases iš jau esamų klasių.
•Esama klasė vadinama bazine klase.
•Nauja klasė, išvedama esamos pagrindu, vadinama išvestine klase.
•Išvestinė klasė gali būti bazine tolimesnei klasei.

Paveldėjimas naudojamas, kai reikia sukurti naują klasę, kuri nedaug skiriasi nuo kitos, anksčiau
sukurtos.
•Išvestinė klasė paveldi visas bazinės klasės savybes (kintamuosius) ir elgseną (metodus).

Klasių hierarchija
•Klasės, tarpusavyje susietos paveldimumu, sudaro klasių hierarchiją.
•Klasių hierarchijos viršuje yra abstraktesnės klasės, o einant žemyn klasės darosi konkretesnės.
•Klasės, esančios hierarchijos viduryje, yra kartu ir bazinės ir išvestinės.

•Tiesioginė bazinė klasė –tai klasė, iš kurios išreikšta išvestinė klasė paveldi.
•Netiesioginė bazinė klasė –tai klasė, iš kurios paveldima per klasių hierarchiją.
•Klasių hierarchijos pradžioje yra klasė object, kurią kiekviena klasė tiesiogiai ar netiesiogiai
paveldi.
•Vienetinis paveldėjimas –tiesiogiai paveldima tik iš vienos klasės.
•Neišreikštas daugybinis paveldėjimas įmanomas, paveldint sąsajas.

Paveldėjimo ryšio formos dėsniai


Yra (is-a) ryšys – tai paveldėjimo ryšys:

 Išvestinės klasės objektą galima apdoroti kaip bazinės klasės objektą.


o Bazinės klasės objektų aibė didesnė, nei jos išvestinių klasių.
 Bazinės klasės objektai negali būti apdorojami kaip išvestinės klasės objektai
o Išvestinė klasė gali sau adaptuoti paveldėtus bazinės klasės metodus –override.
Konstruktoriai
•Išvestinė klasė nepaveldi bazinės klasės:
–Konstruktorių
•Bazinės klasės konstruktorius visada įvykdomas, kai naujas išvestinės klasės objektas
sukuriamas ar sunaikinamas.

Metodai vienodais vardais


•Metodų užklojimas – tai situacija, kai toje pačioje klasėje yra keli tą patį vardą turintys
metodai, bet skiriasi jų parametrų sąrašai.
•Metodo panaikinimas –tai situacija, kai sutampa dviejų metodų vardai ir parametrų sąrašai ir
vienas iš jų yra bazinėje klasėje, o kitas –išvestinėje.Tiesiogiai kompiliatorius tos situacijos
nepraleidžia.
–išvestinės klasės objektui bazinės klasės metodas įprastu būdu nebepasiekiamas.
–taikomas, kai išvestinėje klasėje to paties pavadinimo veiksmams reikia kitokio skaičiavimo
algoritmo.
–gali kviesti, jei kreipinyje prieš metodo vardą nurodytas raktažodis baseir taškas

Paveldėjimo nauda
•Klasių hierarchijos mechanizmas leidžia bendrąsias panašių klasių savybes ir funkcionalumą
apjungti bazinėse klasėse, o išvestinėse klasėse palikti tik specifines:
–palengvina uždavinio struktūrizavimą;
–leidžia sumažinti kodo pasikartojimą, sutaupyti atminties ir laiko sąnaudas.
T07 Paieška ir rikiavimas
Išrinkimo rikiavimo algoritmas
Kartais vadinamas MinMaxrikiavimo algoritmu.
1. Mažiausią reikšmę surandame visame masyve, t.y. nuo nulinio iki (n-1)-ojo elementų.
Sukeičiame vietomis surastojo element ir nulinio element reikšmes.
2. Surandame mažiausią reikšmę turintį elementą masyvo interval nuo 1-ojo iki (n-1)-ojo
elementų. Sukeičiame vietomis surastojo element ir 1-ojo elemento reikšmes.
3. Surandame mažiausią reikšmę turintį elementą masyvo interval nuo 2-ojo iki (n-1)-ojo
elementų. Sukeičiame vietomis surastojo elemento ir 2-ojo element reikšmes.
Taip darome tol, kol intervale lieka tik viena reikšmė
Atlikus visus veiksmus masyvo elementų reikšmės bus išdėstytos didėjimo tvarka.

Burbuliuko metodas
Jo esmė – lyginti tarpusavyje gretimus narius ir jei jie neatitinka reikiamai tvarkai, sukeisti juos.
Peržiūrėjus poromis visus masyvo narius, vienas jų atsiranda savo vietoje, o pats masyvas tampa
„tvarkingesniu“.
Algoritmas:
•reikšmės lyginamos poromis nuo masyvo pabaigos
•jeigu reikia, sukeičiamos vietomis
•masyvas peržiūrimas n-1 kartą
•jei eilinės peržiūros metu sukeitimų nebuvo, darbas nutraukiamas anksčiau

P10 Polimorfizmas
Polimorfizmas – tai galimybė to paties tipo objektui skirtingai elgtis skirtingame kontekste.
•Galima skirti tokius polimorfizmo tipus:
–operatorių užklojimas,
–metodų užklojimas,
–abstrakčiųjų metodų naudojimas.

Operatorių ir metodų užklojimas – tai statinis polimorfizmas.


Dinaminis polimorfizmas
•Polimorfizmas leidžia visą klasių šeimą, turinčią vieną bazinę klasę, apdoroti lyg visi objektai
būtų bazinės klasės objektai
•Tokią klasių šeimą lengva plėsti, papildant naujomis klasėmis, nes nereikia rūpintis naująja
klase
•Virtualūs bazinės ir išvestinių klasių metodai bei bazinės klasės objektų rodyklės sudaro
dinaminį polimorfizmą.
•Kurį metodą (bazinės ar išvestinės klasės) vykdyti, programą kompiliuojanti ir vykdanti sistema
nusprendžia programos vykdymo metu. Tai vadinama dinaminiu susietumu arba užvėlintu
susiejimu.
•Dažnai dinaminis polimorfizmas vadinamas tiesiog polimorfizmu.

Abstrakčiosios klasės apibrėžimas


•Klasė yra abstrakti, jei ji turi bent vieną abstraktų metodą. Naudojamas raktažodis abstract tiek
klasei, tiek ir metodui.
•Jos naudojamos tik kaip bazinės.
•Abstraktūs metodai neturi įgyvendinimo.
•Abstrakčioje klasėje gali būti ir konkretūs metodai.
•Programoje negalima kurti abstrakčiosios klasės objektų.
•Programoje galima aprašyti abstrakčiosios klasės kintamuosius. Šioms nuorodoms galima
suteikti išvestinių klasių objektų duomenis.

Abstrakčiųjų klasių paskirtis


•Abstrakčiosios klasės naudingos tam tikros rūšies objektų pačioms bendriausioms savybėms
aprašyti.
•Abstrakčiojoje klasėje galima nusakyti, kokias funkcijas gali atlikti objektas, tačiau negalima
pilnai apibrėžti, kaip tos funkcijos atliekamos, kadangi kiekvienam porūšiui tie veiksmai gali būti
skirtingi.
•Abstraktieji metodai parodo tik funkcijas, kurias galima taikyti tos rūšies objektams, tačiau
funkcijos veikimas kiekvienai išvestinei klasei skiriasi.
•Tokie metodai gali būti konkretizuojami, t. y. realizuojami tik išvestinėse klasėse.
•Jei išvestinė klasė nerealizuoja abstraktaus metodo, ji tampa abstrakčiąja.
T11 Tekstas. Bendrieji nuostatai
Sąvokos
•Leksinė analizė: tekstas yra suskaidomas į smulkiausius kalbos elementus (pvz., programavimo
kalbos identifikatorius, operatorius ir kt.).
•Sintaksinė analizė: nagrinėjama, ar pateiktas tekstas atitinka kalbos sintaksės taisykles (pvz.,
programavimo kalboje ar tinkamas skliaustų skaičius, ar rezervuoti žodžiai nenaudojami kaip
identifikatoriai ir pan.).
•Semantinė analizė: nagrinėjama, ar pateiktas tekstas atitinka kalbos semantikos taisykles (pvz.,
programavimo kalboje ar klasė turi tokį elementą, į kokį kreipiamasi, ar priskiriama tinkamo tipo
reikšmė ir pan.).

T12 Tekstas. Reguliarios išraiškos


Reguliari išraiška - tai simbolių seka, suformuojanti paieškos rinkinį, naudojamą "surask ir
pakeisk" operacijoms.
•Paprastas rinkinys: eilutė tik iš skaitmenų – [0-9]+
•0, 9 –konstantos
• [, ], +– metasimboliai
• []–apibrėžia simbolių aibę, atitinka vieną simbolį iš aibės
–[abc] // atitinka a, b, ar c.
–[A-Z] // Atitinka bet kurią raidę nuo A ikiZ.
–[a-zA-Z] // atitinka bet kurią raidę.
•+–kartojama vieną ar daugiau kartų
–a+ // Atitinkaa, aa, aaa, etc.
–(ab)+ // Atitinka ab, abab, ababab, etc.
–ab+ // Atitinka ab, abb, abbb, abbbb, etc.
•Skliaustai () turi specialią prasmę. Jei reikia ieškoti skliaustų arba kitų metasimbolių, turime
naudoti du \\.
•"[0-9]*"// 0 ar daugiau skaitmenų.
–* skiriasi nuo +, nes gali būti 0 kartų
•"(\\+|-)?[0-9]+"// skaitmenų eilutė su nebūtinu + ar -ženklu.
•Galima užrašyti glausčiau:
–"[+-]?[0-9]"
–[]–rodo, kad vienas iš aibės.
–Dauguma metasimbolių praranda prasmę tarp [], tai nereikia \\

Atitikimo simboliai
•. –Atitinka bet kokį vieną simbolį, išskyrus naujos eilutės
• [intervalas] –Atitinka vieną simbolį iš intervalo.
• [^intervalas] –Atitinka vieną simbolį ne iš intervalo.
•\n –Atitinka naujos eilutės simbolį. Reguliarioje išraiškoje turi būti "\\n".
•\t –Atitinka naujos tabuliacijos simbolį.
•\f –Atitinka formos nusiuntimo simbolį.
•\v –Atitinka vertikalios tabuliacijos simbolį
•\r –Karietos grąžinimo simbolį
•\xhh –Šešioliktainis formatas. "\\xf3".
•\uhhhh –Šešioliktainis Unicode formatas. "\\u02f3".
•\d –Skaitmuo. Ekvivalentu [0-9]
•\D –Ne skaitmuo. Ekvivalentu [^0-9]
•\s –Bet koks tarpo simbolis (tarpas, tabuliacija, nauja eilutė)
•\S –Bet koks ne tarpo simbolis
•\w –Skaitmuo, raidė ar pabraukimas.
•\W –Ne (skaitmuo, raidė, pabraukimas).
•\b –Žodžio riba. Žodis turi prasidėti ar pasibaigti šioje pozicijoje. Žodžius sudaro raidės,
skaitmenys, pabraukimai; atskirti tarpais ir skyrikliais.
•\B –Ne žodžio riba
•^ –Eilutės pradžia
•$ –Eilutės pabaiga

You might also like