Kartojimas. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.

Similar documents
Parengė ITMM Artūras Šakalys. Macromedia Flash MX

Įvadas į duomenų suvedimą ir apdorojimą

Architektūros projektavimas Pagal I.Sommerville Software Engineering, 9 leidimo 6 dalį

Netesybos, minimalūs nuostoliai, iš anksto sutarti nuostoliai. Privatinės teisės tyrimai 2013 m. vasario 4d. Vilnius Dr.

PĮ testavimas. Temos. Programos testavimas Į testavimą orientuotas programavimas (Test-driven development) Release testavimas Vartotojo testavimas

Dažniausiai užduodami klausimai (DUK) Europos regiono motyvacinė kelionė ir konferencija

Kompiuterių Architektūros konspektas Benediktas G. VU MIF, m (radus netikslumų, turint klausimų rašyti

Duomenų tyrybos sistemų galimybių tyrimas įvairių apimčių duomenims analizuoti

Vilniaus universitetas

INFORMACINIŲ SISTEMŲ PROJEKTAVIMO PAKETŲ GALIMYBĖS IR PRITAIKYMAS PRAKTIKOJE

Įvadas į kiekybinius metodus su R programa

Skaičiuoklė OpenOffice.org skaičiuoklė

AMADEUS BASIC CONTENTS

D E F G. b Atminties kortelė (SD) kortelė)* c Gaminio kodo kortelė. d Priekinio stiklo laikiklis. e Dokumentacijos paketas

Dvigubo elektroninio aukciono modelis ir programinė realizacija

CRIMINALISTIC CHARACTERISTICS OF SOME ARTICLES WITHDRAWN FROM PRISONERS AT RIGA CENTRAL PRISON. Assistant professor Vladimirs Terehovičs

KNORR-BREMSE. Techninio aptarnavimo terminalas ST03A. Naudotojo instrukcija

Navigacijos programinė įranga. Navitel Navigator. Naudotojo vadovas

Nuotolin prekių sand lio kontrol s sistema

a(an) Nežymimasis artikelis Indefinite article

Pa sau lio lie tu vį. Iš lai ky ki me. Šiame numeryje: pasaulio lietuvio svečias. lr seimo ir plb komisijoje. Tėvynėje. PLB kraš tų ži nios

Uždaryto Mickūnų sąvartyno aplinkos vandens kokybė. ir jos kaita m.

Dvynių projekto biudžetas Vilnius Gintaras Makštutis

Turinys. Jūsų saugumui... 3 Sveiki! Čia skaitmeninė palydovinė televizija! Viasat EPG Viasat Ticket ( Viasat bilietas)...

ELEKTROS ENERGIJOS KAINŲ PALYGINIMO SISTEMOS VEIKIMO PRINCIPAI 1. SĄVOKOS

3.1 Membranos instaliavimas

KAS YRA ORP IR KODĖL VERTA APIE JĮ ŽINOTI

VYTAUTO DIDŽIOJO UNIVERSITETAS. Rita Natkevičienė. Magistro baigiamasis darbas

Kondensacijos šilumos nuvedimo nuo tarpfazinio paviršiaus į vandens gilumą tyrimas taikant termografinį metodą

Mountain Trail Revitalization the Sign of the Times or a Significant Effect of the New Designed Forms on the Existing Nature

Nokia 5530 XpressMusic vartotojo vadovas leidimas

Turinys. Turinys Lietuvių k.

STOJAMIEJI EGZAMINAI Į TARPTAUTINIO BAKALAUREATO KLASĘ ANGLŲ KALBOS STOJAMOJO EGZAMINO PROGRAMA IR UŽDUOČIŲ PAVYZDŽIAI

Švietimo panorama. Aka de mi niai skai ty mai. Pa si ra šė ben dra dar bia vi mo su tar tį

Lietuva ir Astana EXPO 2017 : iššūkiai ir galimybės (Pristatymas pirmajame koordincinės komisijos posėdyje, )

VILNIAUS UNIVERSITETAS KAUNO HUMANITARINIS FAKULTETAS

Kiekybinių duomenų internetiniuose archyvuose analizė. Doc. dr. Eglė Butkevičienė Dokt. Aida Vaicekauskaitė

Jūsų Europa, jūsų teisės. Praktinis vadovas piliečiams ir įmonėms apie jų teises ir galimybes ES bendrojoje rinkoje

UAB OKSVIDA siūlo įsigyti Paralelės, Eglutės arba "Karuselės" tipo melžimo aikšteles su Izraelio gamybos bandos valdymo sistema AfiMilk.

Neorganinės druskos protoplazmoje Pr. B. Šivickis

Egidijus Rimkus. Meteorologijos įvadas

Studijos Pelenų, susidarančių šilumos tiekimo įmonėse deginant medieną, panaudojimas ataskaita

Šiame numeryje: pasaulio lietuvio svečias. Tėvynėje. PLB valdyboje. plb kraštų žinios. susitikimai Dailininkė Meilė Sposmanytė...

Register your product and get support at 22PFL3805H/12. Vartotojo vadovas

DAILYLENTĖS VIDAUS APDAILAI. [ Medis kuria namus]

GAMINIO ATITIKTIES APLINKOSAUGOS REIKALAVIMAMS DEKLARACIJA. ECO PLATFORM EPD Nr ROCKWOOL

ECONOMIC IMPACTS OF RURAL TOURISM IN RURAL AREAS OF ISTRIA (CROATIA)

Amadeus Training. Reissue & Ticketing

TARP MIR TIES IR SA VI RAIŠKOS

ŽVILGSNIS Į KOKYBĘ... PRODUKTŲ KATALOGAS

THE INDIUM CORPORATION OF AMERICA \EUROPE \ASIA-PACIFIC INDIUM CORPORATION (SUZHOU) SAUGOS DUOMENŲ LAPAS (SDL)

HP LaserJet M2727 mfp Vartotojo vadovas

Table of Contents. Part I Introduction 3 Part II Installation 3. Part III How to Distribute It 3 Part IV Office 2007 &

VĮ ORO NAVIGACIJA Oro navigacijos informacijos skyrius Rodūnios kelias Vilnius, Lietuva

S. Spurga. POKOMUNIZMAS PO DVIDEŠIMT METŲ... Įvadas

1 SKYRIUS: medžiagos / mišinio ir bendrovės / įmonės identifikavimas

1 SKIRSNIS. Medžiagos arba mišinio ir bendrovės arba įmonės identifikavimas

APLINKOS APSAUGOS AGENTŪRA

Table of Contents. Part I Introduction 3 Part II Installation 3. Part III How to Distribute It 3 Part IV Office 2007 &

CAPTIVA SAVININKO VADOVAS

Dujiniai prie sienos tvirtinami šildymo prietaisai

Projektuotojo ir montuotojo

Setup and Configure the Siteminder Policy Store with Dxmanager

Demokratinė civilinė ginkluotųjų pajėgų kontrolė Lietuvoje

Sapnų mįslės MIRTIES VAIZDINIAI LIETUVOJE IR LATVIJOJE. Asta VIŠINSKAITĖ

SWEN502 Foundations of Databases Session 2. Victoria University of Wellington, 2017, Term 2 Markus Luczak-Roesch

RCSC LAIKO ŽYMOS TEIKIMO VEIKLOS NUOSTATAI

Big Data: Architectures and Data Analytics

Aktualūs nustatyti naudojimo būdai: augalų apsaugos produktas, fungicidas

SAUGOS DUOMENŲ LAPAS

Paleidimo ir techninės priežkiūros instukcija

Kavos aparato JURA Z6 aptarnavimo instrukcija

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

Indaplovė Instrukcijų Vadovas

EUROPOS SĄJUNGA KURKIME ATEITĮ DRAUGE! JŪRINĖ TECHNOLOGIJA. Mokymo medžiaga vadovėlis jūreiviui I DALIS LAIVO SANDARA

Optiniai reiškiniai ir akustika prie žemės paviršiaus

Jūratė Markevičienė, ICOMOS narė

Montažo, techninio aptarnavimo ir naudojimo instrukcija

VISUOMENĖS VAISTINĖSE DIRBANČIŲ FARMACIJOS SPECIALISTŲ PASIRENGIMAS TEIKTI FARMACINĖS RŪPYBOS PASLAUGAS

SPA CENTRŲ TEIKIAMŲ PASLAUGŲ KOKYBĖS VERTINIMAS

Gamtos tyrimų centras Geologijos ir geografijos institutas

Rokiškio rajono Juodymo durpių telkinyje planuojamos veiklos poveikio aplinkai vertinimo

Kavos aparato WE8 naudojimo instrukcija. JURA Type 737

Atvykstančiųjų turistų vidutinės viešnagės trukmės ilginimas. Ramūnas Dzemyda ir Živilė Nečejauskaitė Kurk Lietuvai

Grožio salonas Jūsų namuose

Fisher HP ir HPA reguliavimo vožtuvai

Model Solutions. ENGR 110: Test 2. 2 Oct, 2014

MONSANTO Europe S.A. Page: 1 / 10 Roundup FL 540 Version: 1.0 Effective date:

❷ s é ②s é í t é Pr ③ t tr t á t r ít. á s á rá. Pr ③ t t í t. t í r r t á r t á s ý. r t r é s②sté ②

Montažo, techninio aptarnavimo ir naudojimo instrukcija

Kavos aparato E8/E80 aptarnavimo instrukcija

PROJEKTO ŠVARUS VANDUO IR APLINKA SVEIKA VISUOMENĖ (LT-BY) CLEAN WATER AND ENVIRONMENT HEALTHY SOCIETY (LT-BY)

LIETUVOS VANDENS TIEKĖJŲ ASOCIACIJOS INFORMACINIS LEIDINYS. Nr SPALIS

Ir at leisk mums mū sų kal tes...

FARMACIJOS SPECIALISTŲ POŽIŪRIO Į FARMACINĖS PASLAUGOS KOKYBĘ, ETINĮ KLIMATĄ IR PASITENKINIMĄ DARBU TYRIMAS

PublicVue TM Flight Tracking System. Quick-Start Guide

Šiluma su nepaskirstytu karštu vandeniu kas tai?

KARPIŲ AUGINIMO TECHNOLOGIJA LAUKYSTOS ŽUVŲ VEISLYNE

Kavos aparato J6/J600 naudojimo instrukcija

II. ŠIUOLAIKINĖS SPORTININKŲ RENGIMO TECHNOLOGIJOS 4. Antanas Skarbalius. Trenerio filosofija 13

Transcription:

Kartojimas Lekt. dr. Pijus Kasparaitis pkasparaitis@yahoo.com 2008-2009 m. m. pavasario semestras

Objektai Java kalboje Objektai turi tapatybę, būseną ir elgseną Java kalboje objekto tapatybė realizuojama nuorodomis, būsena - klasės kintamaisiais, o elgsena - metodais. Objektas yra atitinkamos klasės (angl. class) pavyzdys (angl. instance). O klasė dažnai vadinama abstrakčiu duomenų tipu (ADT). Klasė nusako bendras visų klasės objektų savybes. Kiekvienas objektas gali turėti skirtingą būseną. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 2

Programos elementai Klasės aprašymas saugomas faile, kurio vardas sutampa su klasės vardu. Klasės struktūroje yra kintamieji, konstruktorius(-iai), metodai, pagrindinis metodas (jei tai pagrindinė klasė). Programa vykdoma pagrindiniame metode main: public static void main (String [ ] args) { 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 3

Duomenys Duomenys saugomi kintamuosiuose Duomenys gali būti dviejų tipų Objektiniai Primityvieji Objektinio tipo kintamajame saugoma nuoroda į objektą Primityvaus tipo kintamajame saugoma reikšmė 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 4

Primityvūs duomenų tipai Primityvūs duomenų tipai dar vadinami įdiegtais (angl. built-in) tipais. Tipų dydžiai yra fiksuoti visoms platformoms. Primityvieji tipai boolean {true, false} byte, short, int, long float, double char 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 5

Kintamųjų deklaravimas Deklaravimas - tai naujo kintamojo vardo įvedimas programoje. Visi kintamieji turi buti deklaruoti. Inicializavimas - tai pradinės reikšmės suteikimas kintamajam. Bendra deklaravimo forma: tipas kintamasis1, kintamasis2; tipas kintamasis1 = reikšmė1, kintamasis2 = reikšmė2; Primityvaus tipo kintamieji inicijuojami su reikšmėmis pagal nutylėjimą (default values). Objektinio tipo kintamieji inicijuojami su null reikšme. Konstantos deklaruojamos papildomai naudojant raktinius žodžius static final. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 6

Primityvių tipų objektiniai apvalkalai Kiekvienam primityviam tipui egzistuoja objektinis tipas (angl. Wrapper). Primityvių ir objektinių tipų atitinkamybė boolean Boolean char Character 16 bitų byte Byte 8 bitai short Short 16 bitų int Integer 32 bitai long Long 64 bitai float Float 32 bitai double Double 64 bitai char simbolis ='a'; Character C = new Character('a'); 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 7

Masyvas - sudėtinis duomenų tipas Masyvas yra indeksuota to paties tipo reikšmių seka. Pavyzdys: boolean[] mas = new boolean[skaicius]; Elementai indeksuojami sveikais skaičiais nuo 0 iki SKAICIUS-1 Jei vienas masyvas priskiriamas kitam, iš tikrųjų kopijuojama nuoroda į masyvą Deklaruojant masyvą, galima priskirti elementų reikšmes: pvz., int[] mas = {{2,2},{3,3}}. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 8

String tipas Java kalboje eilutės yra String tipo objektai. Eilutės nurodomos tarp dvigubų kabučių. Eilutės kuriamos arba kaip primityvūs tipai tiesiogiai String s = "az09"; arba kaip objektai konstruktoriumi String t = new String("az09"); Eilutėje saugomus skaičius galima paversti skaitine reikšme naudojant atitinkamus statinius apvalkalinių klasių metodus, pvz., String g="32"; int m = Integer.parseInt(g); 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 9

Lyginimai Primityviems tipams == lygina reikšmes. Objektiniams tipams galima lyginti reikšmes, o galima lyginti nuorodas į objektus. Išraiška == skirta nuorodoms tikrinti, o metodas equals skirtas lyginti turiniui. Šį metodą galima perrašyti savaip. Naujoms klasėms pagal nutylėjimą egzistuojantis equals metodas ekvivalentus ==. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 10

Objektinio tipo kintamieji Neinicializuoti, be priskirtų reikšmių objektinio tipo kintamieji turi reikšmę null. Galima nustatyti, ar objektas be priskirtos reikšmės, t. y. a == null Galima objektui panaikinti priskirtą reikšmę, t. y. a = null Daug kintamųjų gali rodyti į tą patį objektą. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 11

Tipų konvertavimas Java kalboje naudojamas tipų konvertavimas (angl. casting). Kur logiška, kintamojo tipas bus konvertuotas automatiškai. Pvz., slankaus tipo kintamajam priskyrus sveikąją reikšmę, ji bus automatiškai paversta į slankaus kablelio formatą. Konvertavimą galima/reikia nurodyti ir programoje, tam prieš išraišką skliausteliuose tereikia nurodyti tipą. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 12

Komandos Priskyrimas Metodo iškvietimas Kontrolės struktūros: nuosekli žingsnis po žingsnio šakojimo išrinkimo, pvz. if-else, switch, break, continue ciklo iteratyvi, pvz. while, for 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 13

Metodai Visos funkcijos ir procedūros yra metodai Java kalboje. Metodai dažnai skaito arba keičia klasės objekto būseną. Metodo deklaracijoje yra: grąžinama reikšmė (void, int, float,..., objektiniai tipai) metodo vardas (žodžiai, kurie prasideda raide) formalūs parametrai (tipas ir vardas kiekvienam) Taigi bendras metodo formatas: GrąžinamasTipas metodovardas(/*formalūs parametrai*/){return GrąžTipoKint;} Reikšmės grąžinimui metodo bloke naudojamas raktinis žodis return. Galimi keli išėjimai iš metodo realizuoti keliais return sakiniais 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 14

Parametrų perdavimas metodams Primityviųjų tipų parametrai perduodami pagal reikšmę, t. y. reikšmė nukopijuojama į atitinkamą kintamąjį. Perduodant objektus nukopijuojama nuoroda į objektą, bet ne pats objektas, taip objektą galima modifikuoti prieinant per nuorodą. Tikrieji (angl. actual) parametrai naudojami kviečiant metodus, formalieji (angl. formal) naudojami metodo viduje. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 15

Metodų perkrovimas Metodai gali buti perkraunami (angl. overloaded), t.y. kuriami keli metodai su tuo pačiu vardu, tuo pačiu grąžinamu tipu, bet skirtingų tipų įvesties parametrais. Java metodai atskiriami pagal vardą ir įvesties parametrus. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 16

Java klasės savybės Java klasė apgaubia (angl. encapsulates) aibę savybių (metodų ir kintamųjų). Kai kurios savybės yra paslėptos. Kitos savybės yra klasės sąsaja (angl. interface). 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 17

Objekto tipas ir sąsaja Kiekvienas objektas turi tipą ir sąsają (angl. interface). Pvz., Aibe yra tipas, o metodas iterpti() - sąsaja Objektas kuriamas naudojant konstruktorių, t. y. metodą su tipo vardu, pvz. Aibe a = new Aibe(); Manipuliavimas objektais vykdomas kviečiant sąsajos metodus, pvz. a.iterpti(5); 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 18

Konstruktoriai Konstruktorius yra specialus metodas, kuriame inicializuojami naujai kuriamo objekto laukai. Klasė privalo turėti konstruktorių. Pagal nutylėjimą egzistuoja konstruktorius be parametrų. Konstruktoriaus vardas sutampa su klasės vardu. Konstruktorius nieko negrąžina. Konstruktorius gali buti perrašomas (angl. overloaded). Konstruktorius gali kviesti kitus metodus (bet ne atvirkščiai!) Konstruktorius gali kviesti kitus konstruktorius, panaudodamas this. Jei klasėje aprašytas konstruktorius ir jis turi parametrus, tada neegzistuoja konstruktorius be parametru. Klasėje galima aprašyti ir konstruktorių be parametrų. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 19

Naujo objekto kūrimas Dinaminis vietos išskyrimas (angl. instantiation). Vieta išskiriama tuščiam objektui, naudojant konstrukciją new. Objekto pirminių reikšmių priskyrimas (angl. initialization). Laukams priskiriamos reikšmės. Tai atliekama konstruktoriuose. Objektą galima kopijuoti - klonuoti (angl. cloning), kviečiant metodą clone. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 20

Objekto naikinimas Java turi šiukšlių surinkėją (angl. garbage collector), kuris naikina objektus, kai jie nereikalingi. Galima kviesti specialiai surinkimą metodu System.gc(); Specialus metodas finalize kviečiamas prieš pat sunaikinimą. Savybės: neturi parametrų ir nieko negrąžina, (void) galima jį perrašyti, galima naudoti, pvz, atidarytiems failams uždaryti. Nėra garantijų, kad finalize bus kada nors iškviestas (jei užteks atminties) Šiukšlių surinkėjas tik valo atmintį. Jis neuždaro atidarytų failų, užmegztų ryšių su duomenų baze ir pan.. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 21

Statiniai ir dinaminiai kintamieji/metodai Dinaminis kintamasis (klasės kintamasis) yra duomenų deklaravimas klasėje. Kiekvienas klasės objektas turi savo dinaminio kintamojo versiją. Statinis kintamasis yra bendras visiems klasės objektams. Statinius metodus galima pasiekti nekuriant objektų, todėl jie negali prieiti prie dinaminių klasės kintamųjų. Tik klasės kintamieji yra dinaminiai arba statiniai. Kitų (metodo) kintamųjų neskirstome. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 22

Java paketai Objektinė paradigma leidžia atskirti besikeičiančius dalykus nuo dalykų, kurie nekinta - lieka tokie patys. Tokia savybė Java kalboje realizuojama naudojant Java paketus. Java paketai (angl. packages) - tai programų bibliotekos, kurias galima naudoti kitose programose. Dalis Java paketų yra standartinės Java bibliotekos, o dalis yra programuotojų sukurtos bibliotekos. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 23

Nauji Java paketai Pagal nutylėjimą, nenurodžius paketo vardo, klasės priklauso paketui be vardo, tiesiog dabartiniam katalogui. Kiekvienas paketas yra klasių rinkinys. Kuriant paketo klases pirmoje eilutėje reikia nurodyti paketą, pvz., package naujasrinkinys; Paketas realizuojamas hierarchiškai, panaudojant failinę sistemą. Paketas atitinka katalogą (ir pakatalogius). 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 24

Java paketo panaudojimas I Jei klasė yra pakete, tai ji pasiekiama nurodant kelią paketo hierarchijoje atskiriant taškais, pvz. zmones.finansai.apskaita Vengiant pilnų kelių rodymo daug kartų, galima naudoti import sakinį ir nurodyti, iš kur klasę importuoti, pvz., import zmones.asmuo; Jei iš paketo naudojamos kelios klases, galima naudoti * vietoj klasės vardo ir vietoj kelių import sakinių naudoti vieną, pvz. import zmones.*; 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 25

Java paketo panaudojimas II Jei yra dvi klasės vienodais vardais iš skirtingų paketų, reikia naudoti pilną klasės vardą su paketais Java standartinis paketas java.lang visada importuojamas pagal nutylėjimą. Sisteminis kintamasis CLASSPATH nurodo kelią iki paketų, kuriuose yra reikalingos klasės. Kelią galima nurodyti ir kompiliavimo bei paleidimo metu -classpath c:... 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 26

Paketo informacijos prieinamumas Sąsajos (angl. interface) atskyrimas nuo realizacijos. Klasės naudotojui prieinama dalis. Patartinos taisyklės: duomenys (kintamieji) turėtų būti privatūs (angl. information hiding); bent vienas konstruktorius turėtų būti viešas; dalis metodų turi būti vieši 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 27

Prieinamumo tipai Private - metodas arba kintamasis prieinamas tik klasės viduje. "Draugiškas" (angl. package access) - paketo prieinamumo, viešas pakete, bet privatus išorinėms klasėms. Raktinio žodžio neturi. Protected - metodas arba kintamasis prieinamas klasėje, vaikinėje klasėje bei visose klasėse tame pačiame pakete. Public - metodas arba kintamasis prieinamas visoms klasėms. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 28

Prieinamumas klasei Private Java kalboje nėra. Veikia tik vidinėms klasėms. Protected Java kalboje nėra. Public - klasė matoma ir kitiems paketams. Viename faile - viena vieša klasė. "Paketo" - klasė prieinama paketo ribose. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 29

Paveldimumas Naujus objektus galima gauti apjungiant turimus (agreguojant). Objektinėje paradigmoje naudojama paveldimumo (angl. inheritance) sąvoka. Paveldimumas leidžia sukurti naują klasę panaudojant ankstesnės klasės savybes. Tėvinės klasės savybės būdingos ir vaikinei klasei. Pridedamos naujos savybės. Naudojant paveldimumo savybes išvengiama kodo kartojimo. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 30

Konstruktoriai ir paveldimumas Konstruktoriai nėra paveldimi. Tėvinės klasės kintamieji turi buti inicijuoti vaikinėje klasėje. Galima kviesti tėvinės klasės konstruktorių iš vaikinės klasės konstruktoriaus. Kuriant vaikinių klasių objektus, yra tokia veiksmų seka: Išskiriama vieta. Statiniai kintamieji inicializuojami pradžioje tėvinėse klasėse, paskui vaikinėse. Konstruktorius kviečiamas pradžioje tėvinėms klasėms, paskui vaikinėms. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 31

Konstruktoriai Tėvinės klasės konstruktorius kviečiamas su super() nurodant parametrus. Kuriant objektus, pradžioje kviečiamas tėvinės klasės konstruktorius, o tik tada vaikinės klasės konstruktorius. Taip būna net tada, jei programoje neparašyta, kad reikia kviesti tėvinės klasės konstruktorių. Kviečiant tėvinės klasės konstruktorių, negali būti jokio kito žingsnio vaikinės klasės konstruktoriuje prieš šį žingsnį. Tos pačios klasės konstruktorius kviečiamas panaudojant this. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 32

Perrašomi metodai ir kintamieji Metodo perrašymas (angl. overriding) - tai metodo kūno (angl. body) perrašymas vaikinėje klasėje. Perrašyti metodai ir kintamieji turi tokį pat aprašymą kaip tėvinėje klasėje. Vaikinėje klasėje abi versijos yra pasiekiamos. Prie tėvinės klasės kintamojo arba metodo galima prieiti panaudojant super. Perrašant metodus, jų priėjimo teisių negalima sumažinti. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 33

Raktas final Raktas final prie kintamojo reiškia, kad kintamojo reikšmė nekis - galutinė. Raktų pora static final rodo, kad tai konstanta visiems klasės objektams. Jei metodas yra final, jo negalima perrašyti paveldėtose klasėse. Privatūs metodai ir taip yra final net nerašant raktinio žodžio. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 34

Klasių hierarchija Visos klasės paveldi klasės java.lang.object savybes. Jei nėra nurodyta tėvinė klasė, tai pagal nutylėjimą paveldės Object savybes. Jei kokia nors tėvinė klasė nurodyta, tada paveldės Object savybes per tėvinę klasę. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 35

Polimorfizmas Polimorfizmas -galimybė turėti skirtingas elgsenas skirtingose situacijose naudojant tipus. Polimorfizmas dar vadinamas dinaminiu surišimu (angl. dynamic binding). Kiekvienas objektas gali būti naudojamas kaip savo tipo objektas arba kaip tėvinės klasės objektas. Upcast ir downcast yra dvi priešingos savybės, kurios parodo, kaip keičiamas objekto tipas. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 36

Upcast ir Downcast savybių privalumai ir trūkumai Privalumai Programinis kodas lengvai rašomas ir skaitomas. Klasės sąsaja vienoda, tipų specifika svarbi realizacijoje. Neįtakojamos klasės - naudotojos. Naudojama daug kur, net standartinėse Java klasėse, pvz. upcast į Object tipą. Trūkumai Jei reikia vaikinės klasės savybių, klasėsenaudotojose reikia būtinai panaudoti downcast savybę. Figura a = new Kvadratas(); Kvadratas b = (Kvadratas)a; 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 37

Statinis ir dinaminis tipas Statinis tipas yra deklaruojamas tipas: Pvz., K1 a; Dinaminis tipas yra tipas, su kuriuo kintamasis siejamas. Pvz., a = new K2(); 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 38

Tipų tikrinimas Polimorfizmas leidžia kintamiesiems skirtingu metu rodyti į skirtingų tipų objektus. Pvz., K1 a = new K1(); K2 b = new K2(); a = b; Priskyrimas a=b yra įmanomas, jei statinis b tipas yra K1 arba K1 vaikinė klasė (angl. subclass). Tai statinio tipo tikrinimas, kuris atliekamas kompiliavimo metu. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 39

Metodo surišimas Metodo kvietimo susiejimas su metodo realizacija (angl. body) yra vadinamas surišimu (angl. binding). Dinaminis surišimas (angl. dynamic binding) vyksta, kai dinaminis tipas nurodo, kuris metodas kviečiamas. Statinis surišimas (angl. static binding) vyksta, kai statinis tipas nurodo, kuris metodas kviečiamas. Java naudoja dinaminį surišimą, išskyrus atvejus, kai metodai yra static arba final (o privatūs metodai ir taip visada yra final) 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 40

Abstrakti klasė Abstrakti klasė (angl. abstract class) parūpina bendrą sąsają klasėms, kurios paveldi abstrakčios klasės savybes. Abstrakti klasė turi bent vieną abstraktų metodą. Abstraktus metodas bei klasė žymimi raktiniu žodžiu abstract. Abstraktus metodas turi deklaraciją, bet neturi realizacijos. Abstrakčios klasės objektai nekuriami - kompiliatorius neleis šito daryti. Abstraktūs metodai realizuojami vaikinėse klasėse. Abstrakti klasė taip pat gali būti vaikine abstrakčios klasės klase. Abstrakti klasė gali turėti konstruktorius. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 41

Interface klasė Abstrakti klasė leidžia turėti abstrakčius metodus, kurie neturi konkrečios realizacijos. Interface klasė yra visiškai abstrakti klasė, t. y. visi metodai yra abstraktūs (pagal nutylėjimą!). Interface klasė įgalina daugybinį paveldimumą (angl. multiple inheritance). Interface klasė gali turėti laukus (kintamuosius), bet jie yra pagal nutylėjimą static ir final. Interface klasė deklaruojama žodžiu interface, nerašant žodžio class(!). Vaikinė interface klasės klasė turi naudoti raktinį žodį implements ir realizuoja atitinkamus metodus. Pagal nutylėjimą interface klasės metodai yra public, todėl jų realizacijos irgi public. Interface klasė gali būti ir interface klasės vaikinė klasė. Interface neturi konstruktorių. 2009.05.13 P.Kasparaitis. Objektinis programavimas. Kartojimas 42