LIETUVOS EDUKOLOGIJOS UNIVERSITETAS GAMTOS, MATEMATIKOS IR TECHNOLOGIJŲ FAKULTETAS MATEMATIKOS, INFORMATIKOS IR FIZIKOS KATEDRA

Viktorija Jegorenko

Objektinis programavimas Greenfoot aplinkoje

Magistro baigiamasis darbas

Darbo vadovas: doc. dr. Grigorijus Melničenko

Vilnius, 2016 TURINYS

TURINYS ...... 2

ĮVADAS ...... 4 DARBO TIKSLAS ...... 4 IŠKELTI UŽDAVINIAI ...... 4

TEORINĖ DALIS ...... 6

1. PROGRAMAVIMO MOKYMAS LIETUVOS MOKYKLOSE ...... 6 2. PROGRAMAVIMO MOKYMO APLINKOS ...... 7 3. OBJEKTINIO PROGRAMAVIMO APLINKŲ, SKIRTŲ MOKSLEIVIAMS, APŽVALGA ...... 9 3.1. Objektinio programavimo aplinka Scratch ...... 9 3.2. Objektinio programavimo aplinka Alice ...... 12 3.3. Programavimo mokymo aplinka BlueJ ...... 14

OBJEKTINIO PROGRAMAVIMO SĄVOKOS ...... 17

OBJEKTINIS PROGRAMAVIMAS GREENFOOT APLINKOJE ...... 25

1. TRUMPA GREENFOOT APLINKOS ATSIRADIMO ISTORIJA ...... 25 2. DARBO PRADŽIAI GREENFOOT APLINKOJE REIKALINGA PROGRAMINĖ ĮRANGA ...... 25 3. PROGRAMOS VARTOTOJO SĄSAJA ...... 26 4. NAUJOS KLASĖS SUKŪRIMAS ...... 26 5. METODŲ ĮKĖLIMAS Į SCENARIJŲ ...... 30 6. PAVELDIMUMAS GREENFOOT APLINKOJE ...... 31 7. METODO UŽDENGIMAS ...... 33 8. KONSTRUKTORIUS ...... 34 9. KONSTRUKTORIAI IR PAVELDIMUMAS ...... 35 10. DAUGKARTINIS PANAUDOJIMAS ...... 35

PRAKTINĖ DALIS ...... 37

1. PIRMO UŽSIĖMIMO REZULTATAI ...... 37 2. ANTRO UŽSIĖMIMO REZULTATAI ...... 38 3. TREČIO UŽSIĖMIMO REZULTATAI ...... 40 4. KETVIRTO UŽSIĖMIMO REZULTATAI ...... 41 5. PENKTO UŽSIĖMIMO REZULTATAI ...... 42 6. ŠEŠTO UŽSIĖMIMO REZULTATAI ...... 44 7. SEPTINTO UŽSIĖMIMO REZULTATAI ...... 45 8. AŠTUNTO UŽSIĖMIMO REZULTATAI ...... 46 9. DEVINTO UŽSIĖMIMO REZULTATAI ...... 48 10. DEŠIMTO UŽSIĖMIMO REZULTATAI ...... 49

TEORINĖS DALIES IŠVADOS ...... 52

PRAKTINĖS DALIES IŠVADOS ...... 53

IŠVADOS ...... 54 2 PRIEDAS ...... 55

PROGRAMAVIMO PRADMENŲ GREENFOOT APLINKOJE UŽSIĖMIMŲ PLANAS...... 55

LITERATŪROS SĄRAŠAS...... 58

SANTRAUKA ...... 59

SUMMARY ...... 60

3

ĮVADAS Internete galima rasti daug išteklių anglų kalba, kuriuose rašoma apie Greenfoot aplinkos panaudojimą mokant studentus, ypač kolegijų, objektinio programavimo. Tačiau mažai rašoma apie Greenfoot taikymo rezultatus mokyklose ir kurio amžiaus mokiniams tinkamas programavimo mokymas Greenfoot aplinkoje. Pažymėtina, kad Lietuvoje prieš porą metų KTU, Klaipėdos švietimo centras rengė Greenfoot seminarus, kad supažindintų dalyvius (mokytojus) su natūralesne programavimo ir ypač objektinio programavimo pagrindų mokymo aplinka. Per seminarus buvo parodyta, kaip greitai galima paaiškinti pagrindines objektinio programavimo sąvokas ir pateikti įvairius Greenfoot aplinkos taikymo aspektus mokant fizikos, biologijos ar algoritmizavimo. Baigiamąjį darbą sudaro du pagrindiniai skyriai. Pirmame skyriuje:  apžvelgiamos populiariausios objektinio programavimo aplinkos, skirtos moksleiviams;  trumpai supažindinama su objektinio programavimo sąvokomis;  nagrinėjamas objektinio programavimo sąvokų realizavimas Greenfoot aplinkoje. Antrame skyriuje tyrinėjami objektinio programavimo rezultatai mokant informacinių technologijų būrelio moksleivius. Tyrime nagrinėjama mokinių:  Greenfoot pasaulio koordinačių sistemos suvokimas,  klasės, objekto sąvokų supratimas,  objekto metodo ir atributo sąvokų supratimas,  klasės paveldimumo supratimas,  klasės konstruktoriaus suvokimas,  klaviatūros klavišų valdymo programavimas.

DARBO TIKSLAS Darbo tikslas – išnagrinėti objektinio programavimo sąvokas Greenfoot aplinkoje bei galimybes praktiškai šią programą pritaikyti, mokant mokykloje programavimo pradmenų.

IŠKELTI UŽDAVINIAI 1. Apžvelgti populiariausias objektinio programavimo mokomąsias aplinkas, tinkamas mokant moksleivius programavimo pradmenų. 2. Parodyti, kaip greitai galima paaiškinti mokiniams, pagrindines objektinio programavimo sąvokas, kurių aiškinimas dažniausiai trunka kelias savaites. 3. Pateikti objektinio programavimo esmę, panaudojant kalbos galimybes. 4 4. Išnagrinėti objektinio programavimo sąvokas Greenfoot aplinkoje. 5. Sukurti paprastų uždavinių rinkinį, tinkamą mokyti programuoti Greenfoot aplinkoje ir susipažinti su programavimo pradmenimis.

5 TEORINĖ DALIS

1. Programavimo mokymas Lietuvos mokyklose Infоrmаcinių technоlоgijų (IT) mоkоmа visose Lietuvos bendrojo ugdymo mokyklose. Dalis šio kursо skiriama informatikos pagrindams ir prоgramavimо praktikai bei algоritminiam ir mоderniam informatiniam mąstymui ugdyti. Lietuvоje trūksta įvairaus lygiо IT specialistų, ypač tokių, kurie ieškоtų kūrybiškų sprendimų, suvоktų, kas slypi už technоlоgijų, gebėtų keisti, kurti nаujus, mоdernesnius, išmаnesnius kompiuterinius įrankius. Šiuolаikinėje technologijomis grįstoje visuomenėje vis svаrbesnės tаmpa ne žinios, o kūrybiškаs mąstymаs, gebėjimas sumаniai elgtis įvаiriomis situacijomis, greitai spręsti kylančias problemas. Informatinis mąstymas nusako dalykinę perspektyvą ir problemų sprendimo įgūdžius, kurie turėtų būti ugdomi pradedant pradinėse klasėse ir tęsiami per visą ugdymo mokykloje laikotarpį ([1]). Viena iš svarbiausių sričių, ruošiant IT specialistus – tai programavimo mokymas. Pagal Švietimo ir mokslo ministerijos nuostаtas prоgrаmаvimаs Lietuvоs mоkyklоse yra privalоmаs, pasirinkus informacinių technоlogijų dаlуką „А“ lуgiu. Mоkiniai jаu 6-oje klаsėje susipažįsta su Kоmenskiо Logo arbа Imagine Lоgо programa. Vėliau, 9-oje klasėje – su infоrmacinių technоlоgijų lоgika, t. y. su skaičiavimo sistemomis, lоginiais оperatоrais, algоritmais. Jau 10-oje klasėje galima pasirinkti programavimo modulį, kuriame realizuojamos nesudėtingų algoritmų transformacijos į programas. Lietuvoje vyresnėse klasėse iš programavimo aplinkų daug metų tradiciškai dominavo Paskal kalba, o dabar С++ kalba. Programavimas – kompiuterių programų kūrimo proceso dalis, kai algoritmas užrašomas kuria nors programavimo kalba. Psichologai teigia, jog loginės struktūros mąstymas efektyviai vystosi iki 11 metų, ir jei pavėluojamas jų formavimas, tai vaiko mąstymo vystymasis lieka neužbaigtas ir kelia sunkumų mokantis toliau ([2]). Pagrindinių klasių mokiniams ++ kalbos programavimo aplinkos CodeBlocs, Dev C++, CodeLite – tai nepatraukli sąsaja ir aibė nesuprantamų terminų, nesukeliančių noro mokytis programavimo. Žaidimu pagrįsto programavimo mokymo aplinkų naudojimas „nušauna iš karto du zuikius“. Visų pirma jos negąsdina vaikų sunkiai įsimenamais operatoriais ir komandomis. Antra, jos suteikia galimybę žingsnis po žingsnio įsisavinti sudėtingas bazines sąvokas. Vaikas įgyja ir tobulina programavimo įgūdžius palaipsniui, nepastebimai, žaidimo metu. Jis suteikia savo personažams savybes ir programuoja jų veiksmus, naudodamas bazines algoritmines struktūras, kurių suvokimas tradicinėje pamokoje vyksta ne iš pirmo karto. Kiekviena nauja programavimo aplinka suteikia vaikui galimybę įsisavinti sąvokas ir užtikrinti savo programavimo įgūdžius.

6 2. Programavimo mokymo aplinkos Programavimo mokymo aplinkos – tai aplinkos, skirtos vystyti algoritminį ir procedūrinį mąstymą. „Suaugusiųjų“ programavimo kalbų naudojimas mokant programavimo pradmenų pradinių klasių ir 5-8 klasių moksleivius visiškai netinka dėl to, jog tokio amžiaus vaikai turi silpnus abstraktinio mąstymo įgūdžius, reikalingus pilnaverčiam programavimo procesui. Tai reiškia, kad yra poreikis naudoti aplinkas ir programavimo kalbas, specialiai sukurtas atsižvelgiant į psichologinį ir intelektinį vaikų vystymąsi ir atliekančias tarpininko vaidmenį prieš darbą profesionaliose programavimo aplinkose. Šiuo metu egzistuoja daugybė programavimo mokymo aplinkų, grįstų žaidimo principu. Kaip pasirinkti optimalią, universalią ir suteikančią galimybę gauti užduoties sprendimą programavimo sąsają, leidžiančią suvokti programavimo paradigmas dėl vizualizavimo principo, ir pakelti mokomo dalyko pažintinę motyvaciją? Norint teisingai pasirinkti, reikėtų sudaryti atrankos kriterijus. Pasirinkau šiuos kriterijus, pagal kuriuos atrinkinėjau programas apžvalgai:  tai turi būti objektinio programavimo aplinkos;  aplinkos, sukurtos populiaria programavimo kalba;  nemokamos programos;  programinė aplinka, nereikalaujanti arba minimaliai reikalaujanti programavimo įgūdžių. Kodėl pirmenybę skyriau programavimo aplinkoms, grindžiančioms objektinio programavimo paradigmą? Pirmas kriterijus – programavimo aplinka turi turėti objektinio programavimo galimybes. Objektinis programavimas – tai būdas suskirstyti projekto kodą taip, kad jis būtų paremtas objektais. Objektinis programavimas padeda spręsti problemas, suskirstant kodą į atskiras „skiltis", vadinamas klasėmis. Tai leidžia paprasčiau kurti valdomus objektus. Objektinio programavimo aplinkos duoda didesnį darbo našumą ir, kuriant didelį projektą, neleidžia susipainioti jo valdyme, suteikia galimybę kurti daugkartinio panaudojimo objektus. Antras kriterijus – programavimo kalba turi būti populiari ir turėti specialistų paklausą visame pasaulyje. Kompanijos Tiobe Software kasmetinės programavimo kalbų populiarumo reitingų ataskaitos akivaizdžiai rodo, kad objektinio programavimo kalbos pirmauja reitingų sąrašuose (žr. 1, 2 lenteles) ([3]). Dar Alanas Key, programavimo kalbos, kurioje pirmą kartą buvo taikomos objektinio programavimo koncepcijos, kūrėjas, pažymėjo, kad žmonėms, turintiems patirtį kitose programavimo paradigmų kalbose, jų susiformavusi vaizduotė dažnai trukdo suvokti objektinio programavimo sąvokas, o pradedančiuosius mokyti gerokai lengviau.

7

Gegužė Gegužė Reitingo Reitingas, Pokyčiai, Programavimo kalba 2015 m. 2016 m. pokyčiai % %

1 1 Java 20.956% +4.09%

2 2 C 13.223% -3.62%

3 3 C++ 6.698% -1.18%

5 4 C# 4.481% -0.78%

6 5 Python 3.789% +0.06%

9 6 PHP 2.992% +0.27%

7 7 JavaScript 2.340% -0.79%

15 8 Ruby 2.338% +1.07%

11 9 Perl 2.326% +0.51%

8 10 .NET 2.325% -0.64%

13 11 / 2.008% +0.71%

22 12 Assembly language 1.883% +1.12%

10 13 Visual Basic 1.828% -0.07%

4 14 Objective-C 1.597% -3.80%

18 15 Swift 1.593% +0.48%

12 16 1.334% -0.11%

38 17 Groovy 1.288% +0.90%

14 18 MATLAB 1.287% +0.00%

17 19 PL/SQL 1.208% +0.08%

30 20 D 0.975% +0.39%

1 lentelė. Tiobe Software kompanijos programavimo kalbų populiarumo reitingų lentelė.

8

Metai Programavimo kalba 2016 2011 2006 2001 1996 1991 1986 Java 1 1 1 3 25 - - C 2 2 2 1 1 1 1 C++ 3 3 3 2 2 2 7 C# 4 5 6 12 - - - Python 5 6 7 26 18 - - PHP 6 4 4 10 - - - Visual Basic .NET 7 188 - - - - - JavaScript 8 9 8 9 31 - - Perl 9 8 5 4 3 - -

2 lentelė. Tiobe Software kompanijos programavimo kalbų populiarumo reitingų retrospektyva. Trečias kriterijus – programavimo aplinka turi būti nemokama, visiems prieinama: ir mokykloms, ir asmeniškai kiekvienam vartotojui. Ketvirtas kriterijus – programavimo aplinka skirta pradžiamoksliams, todėl tiks ir pradinių, ir pagrindinių klasių mokiniams. Iš daugybės objektinio programavimo aplinkų, moksleiviams skirtos Scratch, Alice, Greenfoot, BlueJ.

3. Objektinio programavimo aplinkų, skirtų moksleiviams, apžvalga 3.1. Objektinio programavimo aplinka Scratch

Kompiuterinę programą Scratch suprojektavo Masačusetso technologijos instituto mokslininkas Mitchelis Resnickas - žaislų serijos Lego MindStorms sumanytojas ir StarLogo kalbos kūrėjas. Šią sistemą toliau tobulina Masačusetso technologijų instituto Lifelong Kindergarden projekto specialistai. Scratch – tai nemokama (Masačusetso technologijų instituto licencija) vizualiojo programavimo kalba, skirta vaikų ir jaunimo mokymosi įgūdžiams ugdyti, pavyzdžiui, kūrybiškam mąstymui, aiškiam minčių dėstymui, mеtоdų anаlizаvimui, projektavimui, bendrаdarbiavimui ir pan. Naudojantis šia programа, galima mokyti intuityvaus programavimo pasitelkus mokinių kūrybiškumą – vaikai gali manipuliuoti grafiniais objektais: kurti vaizdus, animaciją, muziką, žaidimus ir kt., savo kūriniais dalytis su kitais, įkėlę juos į internetą (http://Scratch.mit.edu/galleries/browse/newest – įkeltas programas galima išbandyti naudojantis Java technologijomis) ([4, p.144]). Pirmoji Scratch programos versija parengta 2007 m. gegužės mėn. Šiuo metu naudojama 1.4 versija, pasirodžiusi 2009 m. liepą.

9 Scratch jau išversta į 50 pasaulio kalbų, taip pat ir į lietuvių. Programą galima parsisiųsti iš http://www.coderdojo.lt (žr. 1 pav) ir atverti (žr. 2 pav).

Scratch programos piktograma

1 pav. Coderdojo svetainės puslapis

Programos vykdymas Kaukės redagavimas Garso redagavimas Meniu

Veikėjas (sprite) Komandų blokai

Scena Programavimo komandos

Piešimo rengyklė Komandų laukas

2 pav. Scratch programos interfeisas

10

Programos scena – tai 380 x 360 pikselių dydžio laukas su koordinačių sistema viduryje. Programuodami objektus, veikėjus pasirenkame iš meniu, nurodydami jų išvaizdą arba pasinaudodami piešimo rengykle - juos patys nupiešiame. Objektų dаlis irgi pаsirenkame iš blokų paletės. Progrаmаvimo komаndos, pvz., gаrso, judėjimo, piešimo ir kt., yra sugrupuotos ir turi savo spalvas. Skirtingos spаlvos pаlengvina suradimą ir pagreitina pagrindinių programos funkcijų, kuriomis vаldomas pagrindinis veikėjas, pаnаudojimą. Programavimas primena žaidimą. Scenarijų programavimas vyksta dėlionės principu (drag-and-drop), programavimo komandos tempiamos į komandų lauką ir įstatomos viena į kitą iš viršaus į apačią.

3 pav. Scratch aplinkos programos fragmentas Su programų kūrimu Scratch sistemoje susidorotų net vaikas. Tai ir yra esmė – nauja programa yra skirta mokymuisi. Šitokia koncepcija nugali klaidingą nuomonę, kad programavimas yra sunkus ir įveikiamas tik gabiųjų. M. Resnickas sako, kad vaikai žaidžia tuo, ką sukūrė patys ([4], p.144) . Dirbdami su Scratch vaikai susiduria su matematika ir skaičiavimais, jie įsisavina matematinių skaičiavimų pagrindus, pavyzdžiui, koordinates, kintamuosius, sąlygas, atsitiktinius skaičius, matematinių operacijų pakartotinio panaudojimo rezultatus (iteracijas) ir pan. Svаrbiausia, kad vaikai to išmoksta suvokdаmi prаsmę. Pavyzdžiui, mokiniai, mokydamiesi matematikos

11 tradicinėje pamokoje, jaučia silpną ryšį tarp teorijos ir praktikos, o dirbdami Scratch programavimo aplinkoje realiai beveik kiekviename žingsnyje susiduria su kintamaisiais, kurie naudojami daugybe būdų: kontroliuojamas animacijos greitis, nustatomos koordinatės, kuriami žaidimai ir t. t. Be to, taip lavinamas kūrybiškumas. Kurti projektą pradedama nuo idėjos, paskui sukuriamas veikiantis prototipas, eksperimentuojama su juo, randamos ir ištaisomos klaidos, vėl viskas patikrinama ir prireikus perprojektuojama – taip tobulinant projektą gimsta naujos idėjos. M. Resnickas šį procesą pavaizdavo spirale: kuriant projektą pagal idėją, kyla naujos idėjos, kurios realizuojamos naujuose projektuose, iš kurių gimsta vėl naujos idėjos ir t. t. ([4], p.146) . Programos privalumai: 1. programa lokalizuota, 2. nereikalauja turėti programavimo įgūdžių, 3. lengvai parsisiunčiama ir galima žaisti on-line http://www.coderdojo.lt bei įdiegti, 4. programa lengvai perprantama. Programos trūkumai: 1. pagalba suteikiama anglų kalba, 2. nėra galimybės pamatyti programos kodo. 3.2. Objektinio programavimo aplinka Alice

Alice – tai nemokama (Carnegie Mellon University licencija) vizualiojo programavimo kalba, skirta vaikų ir jaunimo mokymuisi. Aplinka realizuota Java kalba su integruota IDE, palaikanti objektinį ir įvykiais orientuotą programavimą. Alice 2.0 versija apima:  aukšto lygio animaciją, leidžiančią programuoti socialines personažų sąveikas;  vadovėlį, parašytą remiantis istorija;  3D-personažų galerija ir dekoracijos su vartotojo animacija suteikia galimybę atgaivinti istorijų idėjas. Alice 2.0 objektinio programavimo aplinką suprojektavo Caitlin Kelleher savo disertaciniam darbui 2005 metais. Šitą versiją dar vadina „Istorijos, papasakotos Alice“. Kuriant programinę įrangą dalyvavo Carnegie Mellon universiteto specialistai, tarp jų ir Randy Pausch. 2006 metais Alice buvo atnaujinta iki 2.2 versijos ir ištaisytos klaidos. 2008 metais Elektronic Arts kompanija sukūrė Alice 3.0 alfa versiją ir 2009 metais - nemokamą beta versiją. Alice programos 2.4 ir 3.2 versijas galima parsisiųsti ir įdiegti iš svetainės http://www.Alice.org/index.php (žr. 4 pav).

12

4 pav. Oficiali Alice produktų svetainė

Meniu Programos vykdymas Scenos kodas

Procedūrų ir funkcijų komandų blokai Komandų laukas

5 pav. Interfeisas Alice 3.2 versija Alice aplinka kaip ir Scratch organizuota dėlionės principu (drag-and-drop), programavimo komandos tempiamos į komandų lauką ir įstatomos viena į kitą iš viršaus į apačią (žr. 5 pav).

13

6 pav. Veikėjo pasirinkimas iš 3D-personažų galerijos Galima kurti sudėtingas paralelinio programavimo konstrukcijas, pridedant „Do Together“ elementą. Sumažinus programavimo sudėtingumą iki paprasto lygio, aplinka padeda mokiniams suprasti programavimo struktūrą ir logiką bei nesipainioti sintaksėje. Dirbdami su Alice programa vaikai lavina erdvinį intelektą: gebėjimą gerai manevruoti erdvėje, konstruoti ar įsivaizduoti trimačius objektus bei jų projekcijas, interpretuoti diagramas, žemėlapius ir kt. Mokiniai, kurdami žaidimus Alice aplinkoje, suvokia atsitiktinius skaičius, iteracijas, sąlygas. Lavinamas ir kūrybiškumas, ir projektavimo įgūdžiai. ([5], p.146) . Programos pliusai: 1. aplinka nemokama, 2. nereikalauja turėti programavimo įgūdžių, 3. Alice 2.4 skirta pradinių klasių mokiniams, 4. Alice 3.4 skirta paaugliams, 5. įspūdinga 3D-personažų galerija, 6. programa lengvai parsisiunčiama ir galima žaisti on-line galerijoje iš svetainės http://www.Alice.org/index.php. Programos minusai: 1. programa nelokalizuota, 2. nėra galimybės pamatyti programos kodo. 3.3. Programavimo mokymo aplinka BlueJ

BlueJ yra įvadinė programa, skirta tiems, kurie pradeda naudoti Java programavimo kalbą. Programa yra atviro kodo, pateikiama su išsamiu vadovu PDF failo forma. Programą 1998 metais sukūrė Deakino universiteto, Kento universiteto ir Sun Microsystems specialistai. JDK palaikoma

14 bendrovės Sun Microsystems - taigi, galite būti tikri, kad ji yra geros kokybės ir oficiali. Nuo 2008 metų programa – atviro kodo (М. Kölling ir J. Rosenberg licencija). Parsisiųsti ir įdiegti programavimo aplinką galima iš http://bluej.lt.downloadastro.com/ , yra versija su JDK. Po įdiegimo atsivers programos langas (žr. 7 pav.).

Meniun

Klasėsn

Kompiliavimas

7 pav. BlueJ programos interfeisas

Programa veikia vesdama objektais paremtoje aplinkoje, o ne tik kodo eilutėmis. Šis interaktyvus langas grafiškai rodo kodo blokus, kuriuos galite perkelti ir pakeisti, todėl visas procesas tampa aiškesnis ir lengviau suprantamas bei manipuliuojamas (žr. 8 pav.).

Sukurti objektai

8 pav. Sukurtų objektų pavaizdavimas

15 Programuotojas gali eksperimentuoti su sukurtais objektais dėl objekto suoliuko (Bench). Projektas rodomas kaip UML diagrama. Pagrindiniame lange galima tiesiogai pridėti paketus, nustatyti paveldimumą ir nurodyti, kokia klasė ką naudoja. BlueJ aplinka leidžia kurti įskiepius (apletus). Mokiniai, dirbdami su programa BlueJ, išmoksta Javos kalbos sintaksės, išmoksta projektuoti, testuoti, planuoti savo darbą, dirbti grupėse. Programos pliusai: 3. aplinka nemokama, 4. vizualizavimas+Java kalba, 5. programa lengvai parsiunčiama iš svetainės http://bluej.lt.downloadastro.com/. Programos minusai: 1. programa nelokalizuota, 2. reikalauja turėti programavimo įgūdžių. Greenfoot aplinka išsamiai bus aprašyta skyriuje „Objektinio programavimo realizacija Greenfoot aplinkoje“.

16 OBJEKTINIO PROGRAMAVIMO SĄVOKOS

Objektinis programavimas - OP (angl. – OOP – Object-Oriented Programming). Pagrindinė objektinio programavimo idėja – duomenų ir funkcijų, atliekančių veiksmus su šiais duomenimis, apjungimas į vieną visumą-objektą:  objekto duomenys objekto išorėje tiesiogiai nėra prieinami: jei reikia kokių nors duomenų iš objekto, reikia kviesti funkciją – objekto metodą;  jei reikia keisti objekto duomenis, taip pat reikia kviesti funkciją – objekto metodą ([5, p. 9]).  Objektinis programavimas – tai programavimo metodologija, kuri remiasi trimis baziniais principais:  inkapsuliacija,  paveldėjimu,  polimorfizmu. Programavimo Java kalba orientuota į objektus ir remiasi šiais principais.  Klasės yra Java objektinio programavimo pagrindas. Kiekviena klasė apibrėžia naują programuotojo sukurtą tipą, kuriame yra naudojami kintamieji ir apibrėžiami metodai. Klasė apibrėžia tipą, o to tipo (klasės) kintamuosius vadiname objektais. Objektai skiriasi nuo įprastų kintamųjų tuo, kad juose apibrėžiami metodai, aprašantys kintamųjų keitimo taisykles. Neobjektinių programavimo kalbų paprogramės neturi lankstaus mechanizmo, kaip reguliuoti paprogramės kintamųjų keitimą kitoms paprogramėms.  Klasė – duomenų tipo apibrėžimas, kuriame kartu yra duomenys ir metodai (paprogramės).  Objektas – klasės tipo kintamasis, kuris buvo realizuotas.  Metodas – Java kalboje vartojamas vardas vadinti paprogrames.  Konstravimas – klasės kintamojo kūrimas programos vykdymo metu. Programa – instrukcijų procesoriui ir duomenų rinkinys, sujungtas į vieną funkcionaliai išbaigtą visumą, leidžiančią atlikti kurią nors konkrečią užduotį. Paprogramė – instrukcijų ir duomenų rinkinys, sujungtas į atitinkamai savarankišką struktūrą, kuri atlieka kokią nors konkrečią veiklą programos viduje. Be to, ji negali dirbti savarankiškai: ji paleidžiama iš programos bei gali gauti duomenis arba juos siųsti į programą. Paprogrames priimta skirstyti į paprogrames-procedūras ir paprogrames-funkcijas. Paprogramės-procedūros iškviečiamos atlikti kokius nors veiksmus, pavyzdžiui, teksto spausdinimą spausdintuvu. Paprogramės-funkcijos atlieka kokius nors veiksmus ir grąžina kai kurias reikšmes.

17 Pavyzdžiui, skaičiuoja sinuso reikšmes ir grąžina jas. Arba sukuriamas sudėtingas objektas ir grąžinama nuoroda (ląstelės adresas, kuriame ji yra) ([6, p.39]). Objektinio programavimo programose pagrindinis dėmesys skiriamas klasių projektavimui bei aprašymui. Klasių aprašymo kodas kuriamas daugkartiniam naudojimui, kad nereikėtų jokių kitų papildomų tolimesnių taisymų. Ir tik labai nedaug laiko sugaištama konkretaus uždavinio sprendimui, tai yra kodo rašymui su klasių panaudojimu, kuris kituose tokio tipo uždaviniuose nebus naudojamas. Dėl to objektinis programavimas labai išpopuliarėjo ir panašiems uždaviniams spręsti galima panaudoti tą patį programinį kodą, modifikavus tik tą dalį programos, kuri skirta konkretaus uždavinio sprendimui ([6, p.40]). Pats paprasčiausias iš anksčiau nurodytų principų yra inkapsuliacija (apgauba). Šis žodis apskritai reiškia „įtraukimą arba uždarymą į kapsulės vidų“. Taigi reikia suprasti, kad yra apribojamas priėjimas iš išorės ir neribojamas priėjimas prie turinio kapsulės viduje. Objektiniame programavime „inkapsuliacija“ reiškia panaudojimą tam tikrų tipų klasių, kuriose ne tik aprašyti duomenys ([6, p.40]), bet ir paprogramės, kurios gali dirbti su šiais duomenimis bei gali atlikti ir kitus veiksmus. Tokios paprogramės, inkapsuliuotos į klases, yra vadinamos metodais. Duomenų laukai ir metodai, aprašyti klasėse, dažnai vadinami klasės nariais (class members). Visi objektai, kurie yra tam tikros klasės egzemplioriai, turi vienodus duomenų laukų rinkinius (objekto atributus), bet su savo duomenų reikšmėmis kiekviename objekte. Duomenų laukai – tai kintamieji, kurie turi svarbą tik klasės viduje, o ne metodo aprašymo kode. Objekto gyvavimo metu šios reikšmės gali keistis. Objekto duomenų laukų reikšmės nusako jo būseną, o metodai – objekto elgseną. Bendru atveju, objekto elgsenai turi įtakos metodai, kurie naudoja jo duomenų laukus. Java kalboje klasės kuriamos taip ([6, p.41]). Pirmiausia rašomas rezervuotas žodis class, po to klasės vardas ir riestiniuose skliaustuose rašomi klasės duomenų laukai (globalūs kintamieji) bei metodai. Objekto kintamieji – tai kintamieji, kurie turi objekto tipą. Java objekto kintamieji – tai ne patys objektai, o tik nuorodos į juos. Kitaip sakant, visi objektų tipai yra nurodomi. Skelbiamas objekto kintamasis taip pat, kaip ir kitų tipų kintamieji. Pirmiausia nurodomas tipas, o po tarpo rašomas kintamojo vardas. Pavyzdžiui, jei mes užduodame kintamąjį obj1 tipo Circle, tai rašome taip:

Circle obj1;

Objekto kintamojo susiejimas su objektu vykdomas priskyrimu. Dešinėje pusėje priskyrimu galima nurodyti arba funkciją, kuri grąžina nuorodą į objektą (objekto adresą), arba objekto kito

18 kintamojo vardą. Jei objekto kintamajam nepriskirta nuoroda, tai jis saugo reikšmę null. Su objekto kintamaisiais galima naudoti lyginimo operatorius ir lyginti su reikšme null. Lyginami ne patys objektai, o jų adresai, saugomi objektų kintamuosiuose ([6, p.41]). Objektai sukuriami specialių paprogramių, kurios aprašytos klasėse ir vadinamos konstruktoriais. Konstruktorius grąžina nuorodą į sukurtą objektą. Konstruktoriaus vardas Java kalboje visada sutampa su vardu klasės, kurios egzempliorius ir sukuriamas. Prieš konstruktoriaus vardą, iškviečiant jį, rašomas operatorius new – „naujas“, kuris reiškia, kad sukuriamas naujas objektas. Pavyzdžiui, iškvietimas

Obj1=new Circle(); reiškia, jog kuriamas naujas Circle tipo objektas ir nuoroda (objekto adresas) įrašoma į kintamąjį obj1. Kintamasis obj1 iki to laiko turi būti jau paskelbtas. Operatorius new vykdo dinaminį atminties išskyrimą kuriamam objektui ([6, p.42]). Dažnai kartu apjungiamas objekto kintamojo skelbimas ir objekto priskyrimas jam. Mūsų atveju tai atrodo taip:

Circle obj1=new Circle();

Konstruktorius, kaip ir bet kuri paprogramė, gali turėti parametrų sąrašą. Jie reikalingi tam, kad užduotų pradinę objekto būseną, kai jis bus kuriamas. Pavyzdžiui, mes norime kurdami apskritimą ir iškviesdami konstruktorių užduoti centro koordinates x, y ir spindulį r. Tuomet, aprašydami Circle klasę, galime numatyti konstruktorių, kuriame pirmu parametru bus užduodama koordinatė x, antru – y, trečiu – apskritimo spindulys r. Tada kintamojo obj1 inicijavimas gali būti toks:

Circle obj1=new Circle(130,120,50);

Tai reiškia, kad kuriamas objektas-apskritimas, turintis centrą taške su koordinatėmis x=130, y=120, ir kurio spindulys r=50. Jei klasės kūrėjas nesukūrė nei vieno konstruktoriaus, tai automatiškai bus sukurtas konstruktorius pagal nutylėjimą, turintis tuščią parametrų sąrašą. Ir šį konstruktorių galima programoje kviesti, kaip mes darėme anksčiau klasei Circle. Paminėtina dar viena taisyklė dėl vardų naudojimo. Kaip žinome, objektų tipų vardai rašomi pradedant didžiąja raide, o objektų kintamųjų vardai rašomi mažąja raide. Jei objekto kintamasis

19 turi Circle tipą, tai jis turi nuorodą į objektus-apskritimus. Java kalboje objektų kintamuosius įprasta vadinti taip pat, kaip ir jų tipus, bet vardą reikia pradėti rašyti mažąja raide. Todėl ankstesnis operatorius gali būti parašytas taip:

Circle circle=new Circle(130,120,50);

Per objektų kintamuosius yra galimybė prieiti prie duomenų laukų arba prie objekto metodų: pirmiau nurodomas kintamojo vardas, tada taškas, tada rašomas kintamojo lauko arba metodo vardas. Pavyzdžiui, jei objekto kintamojo vardas obj1, o jo duomenų lauko vardas x, tai priskiriama jam nauja reikšmė atrodys taip:

obj1.x=5;

O jei paprogramės, kuri neturi parametrų ir negrąžina jokių reikšmių, vardas show, tai jos iškvietimas bus toks:

obj1.show();

Metodai yra skirstomi į objektų metodus ir į klasių metodus. Dažniausiai naudojami objektų metodai. Jie vadinami taip todėl, kad jie naudoja duotų objektų laukus ir juos galima iškviesti tik iš pačių objektų. Klasių metodai, priešingai, nenaudoja duotų objektų laukų ir gali dirbti nesant objektui. Todėl juos galima iškviesti tiek iš klasių, tiek ir iš objektų. Iškvietimo formatas:

klasėsVardas.metodoVardas (parametrų sąrašas) arba objektoVardas.metodoVardas(parametrų sąrašas) ([6, p.43]).

Prieš rašant klasės metodo vardą, būtina parašyti modifikatorių static – „statinis“. Mes niekada nevadinsime tokių metodų statiniais, o vadinsime juos klasės metodais, kaip yra priimta vadinti programavimo teorijoje. Taip pat ir kintamieji (duomenų laukai) skirstomi į objektų kintamuosius ir klasių kintamuosius. Prieš rašant klasės kintamojo vardą, būtina parašyti modifikatorių static. Klasės kintamuosius, kaip ir klasės metodus, galima kviesti tiek ir iš klasių, tiek ir iš objektų. Iškvietimo formatas: klasėsVardas.kintamojoVardas arba objektoVardas.kintamojoVardas. Svarbu nepainioti klasių, objektų ir objektų kintamųjų. Klasė – tai tipas, tai aprašas, kaip sudaryta atminties ląstelė, kurioje bus saugomi objekto kintamųjų laukai. Objektas – tai duotos

20 atminties ląstelės turinys. Objektinio tipo kintamajame saugomas objekto adresas, tai yra atminties ląstelės adresas. Šie aprašyti dalykai yra tik dinaminio objektinio modelio programavimo kalbose, kuriam priklauso Java ([6, p.43]). Kaip jau buvo minėta, kad klasėse yra aprašomi ne tik duomenų laukai, bet ir metodai. Nežiūrint į laukų ir metodų klasėse aprašymo panašumą, dirbant programai, jų talpinimas realiai skiriasi. Metodai nesaugomi objektuose, bet objektai juos gali iškviesti. Kiekvienas objektas turi savo duomenų laukų komplektus. Jeigu turime dešimt vienos klasės objektų, kurie yra tos klasės egzemplioriai, tai kompiuterio atmintyje dešimt atminties ląstelių bus panaudota taip, kaip aprašyta tos klasės. Be to, kiekvienas objektas turės savas duomenų reikšmes. Pavyzdžiui, jei objektas bus apskritimas, vaizduojamas ekrane, tai kiekvienas apskritimas turės savo koordinačių komplektą, spindulį ir spalvą. Klasė – tai daugiau bendra aplinka nei objektas, ir kai dirba programa, kol bus sukurtas objektas, pirmiau turi būti į atmintį nuskaityta atitinkama klasė. Java turi galimybę sukurti „klasės“ tipo kintamuosius, ir jais kreiptis į klases, tarsi tai ypatingos rūšies objektai. Tačiau, skirtingai nuo paprastų objektų, šie „objektai“ negali egzistuoti keliais egzemplioriais ir darbo taisyklės su jais iš esmės skiriasi nuo darbo su paprastais objektais. Tokius reiškinius vadiname metaobjektais. Kintamųjų paskelbimas gali būti vykdomas arba klasėje, arba metode. Pirmu atveju mes sakysime, kad kintamasis yra duomenų laukas objekte, arba globalusis kintamasis. Antru atveju – kad tai yra lokalusis kintamasis. Klasės saugomos kokiame nors pakete. Paketai gali būti sudėti kokia nors laisva įdėjimo tvarka (apribota tik operacinės sistemos ir būtinai ne mažiau kaip 256). Kiekvieną paketą atitinka atskira byla su atitinkamų klasių išeities kodais. Tam, kad klasę įdėtume į paketą, reikia failo pradžioje deklaruoti paketo vardą, kuriame paskelbta klasė. Be to, būtina patalpinti klasės kodą į atitinkamą paketo bylą. Jei yra nenurodytas paketo pavadinimas, tai laikoma, kad klasė priklauso paketui su vardu default. Įdėtus paketus atitinka sudaromi vardai. Pavyzdžiui, jei mes turime paketą su vardu pkg1, kuriame įdėtas paketas su vardu pkg2, o jame dar įdėtas paketas su vardu pkg3, o klasė, vardu MyClass1, yra pakete pkg3, tai paskelbimas atrodys taip:

Package pkg1.pkg2.pkg3; Class MyClass1 { ... . }

21 Riestinių skliaustų viduje klasės aprašymas, kuris pakeistas daugtaškiu. Kad atskirtume paketų vardus programose, naudojamas taškas, nepriklausomai nuo operacinės sistemos tipo, nors atskirose operacinėse sistemose bylų talpinimas žymimas skirtingai [7]: MS Windows: pkg1\pkg2\pkg3\ Unix ir : pkg1/pkg2/pkg3/ Mac OS: pkg1:pkg2:pkg3: Deklaruojant klasę, galima nurodyti, kad ji yra pasiekiama rašant prieigos modifikatorių public:

public class MyClass2 { ... . }

Šiuo atveju ši klasė yra pasiekiama iš kitų paketų. Jeigu nėra modifikatoriaus public, kaip pavyzdyje MyClass1, tai klasė yra pasiekiama iš klasių, kurios yra su ja viename pakete. Apie tokius failus sakoma, kad jie turi paketinį prieigos variantą. Faile .java galima talpinti tik vieną bendrai prieinamą klasę ir daug kitų klasių tik su paketiniu matomumo lygiu. Klasė gali naudoti tik bendrai prieinamas (public) klases iš kitų paketų tiesiogiai, su nurodytu pilnu klasės vardu, vardų erdvėje įtraukiant paketo vardą. Pavyzdžiui, prieiga prie klasės MyClass2 realizuojama taip: pkg1.pkg2.pkg3.MyClass2 Tam, kad naudotume objektinio tipo kintamąjį, reikia prieš tai nurodyti jo klasę. Mūsų atveju tai bus: pkg1.pkg2.pkg3.MyClass2 myObject; Tam, kad skirtume klasių vardus nuo paketų vardų, Java priimta paketų vardus rašyti mažąja raide, klasių vardus didžiąja raide, o duomenų laukų (taip pat objektų kintamųjų vardus) ir metodų vardus mažąja raide. Paveldimumas – tai bazinės klasės metodų ir būsenų įjungimas į išvestinę klasę, tokiu būdu bazinės klasės metodai ir būsenos tampa prieinami išvestinėje klasėje. Klasių hierarchijos sąvoka svarbi kalbant apie paveldimumą. Klasių hierarchija – tai klasių grupė, apjungta paveldimumo saitais. Tarkime, turime tris klases: Father, Daughter ir Son. Savaime aišku, kad Daughter ir Son klasės paveldės Father klasės kintamuosius ir metodus. Kodas atrodys maždaug taip:

class Father {

22 //declarations, definitions }

class Daughter extends Father ( //declarations, definitions }

class Son extends Son { //declarations, definitions } Ką tik sukūrėme klasių hierarchiją. Java kalboje kiekviena klasė turi tik vieną tiesioginę bazinę klasę. Kita vertus, klasė gali turėti daug bazinių klasių, tačiau iš jų tik viena bus tiesioginė bazinė klasė. Tačiau jei kiekviena klasė turi vieną tiesioginę bazinę klasę, kyla klausimas, kas yra Father klasės bazinė klasė. Visų klasių hierarchijos viršūnėje yra Object klasė, ir jei nenurodytas paveldimumas, tai nutylimasis paveldimumas yra extends Object (žr. 9 pav.).

Class Object

Father Every other Java class

Daughter Son

Granddaughter

9 pav. Klasių hierarchija

Polimorfizmu vadiname Java kalbos savybę, kuri suteikia galimybę grupei metodų naudoti tą patį metodą, tačiau kiekvienas metodo panaudojimas gali duoti skirtingus rezultatus. Poliformizmo sąvoka apima perkrovimą (overloading) ir perdengimą (overriding). Perkrovimas – tai polimorfizmo atvejis, kai klasė turi kelis metodus tais pačiais vardais. Bet metodai privalo skirtis savo parametrų tipais ir / arba kiekiu. Metodai, besiskiriantys tik grąžinamos reikšmės tipu, negalimi. Metodo tipą nusako jo iškvietimo formatas.

class Base { int f(int k) { . . . } . . .

23 }

class Derived extends Base { int f(String s, int k) { . . . } . . . } Pavyzdyje parodytas paveldimumo bendras panaudojimas. Klasė Derived turi du metodus f(). Vienas paveldėtas iš klasės Base, kitas aprašytas klasėje Derived. Perdengimas – tai polimorfizmo atvejis, kai bazinės ir išvestinės klasės turi vienodus metodus. Būtinos sąlygos – sutampa ne tik metodų vardai, bet ir jų antraštės bei grąžinamų reikšmių tipai. Metodo pasirinkimą nusako tipas objekto, kuriam šis metodas kviečiamas.

class A { int x; int f(int a) { return a+x; } . . . }

class B extends A { int y;

int f(int s) { return s*x; } . . . }

B b = new B(); A a = b; // vyksta formalusis tipo transformavimas : B => A int c = a.f(10); // koks metodas bus iškviestas? Paskutinėje eilutėje bus iškviestas metodas B. f(...). Nepersidengia: konstruktoriai, final tipo metodai, statiniai metodai.

24 OBJEKTINIS PROGRAMAVIMAS GREENFOOT APLINKOJE

1. Trumpa Greenfoot aplinkos atsiradimo istorija Greenfoot projektą 2003 metais inicijavo Michael Kölling, palaikomas Kento (Anglija) ir La Trobe (Austalija) universitetų. 2006 metais buvo sukurtas pirmasis aplinkos prototipas. 2007 metais Greenfoot projektas gavo "Duke's Choice Award" premiją "Java Technology in " kategorijoje, 2010 laimėjo "Premier Award for Excellence in Engineering Education Courseware". Nuo 2009 metų kovo mėnesio Greenfoot projekto programinė įranga tapo nemokama ir atvira, yra licenzijuota kaip GNU GPL with Classpath exception.

2. Darbo pradžiai Greenfoot aplinkoje reikalinga programinė įranga Greenfoot aplinka – tai Java kalba plius specializuota aplinka, skirta mokyti programavimo. Java Development Kit (JDK): • kompiliuoja ir vykdo Java programas; • įtraukia Java plius programavimo įrankius. JDK galima parsisiųsti ir įdiegti iš http://www.oracle.com/technetwork/Java/Javase/downloads/index.html. Greenfoot grafinę programavimo aplinką galima parsisiųsti ir įdiegti iš http://greenfoot.org. Pirmą kartą paleidę programą matysime panašų pranešimą (žr. 10 pav.):

10 pav. Pranešimas paleidus programą pirmą kartą Pasirenkame naujausią versiją (jei jų daugiau nei viena) ir paspaudžiame mygtuką Launch. Jei nepavyko paleisti, mėginame paspausti mygtuką Browse, tuomet parinkti Java.exe iš JDK katalogo. Pavyzdžiui: c:\Java\jdk1.6.0\bin\Java.exe. • Jei atidarome pirmą kartą – pasirenkame mygtuką, kviečiantį atidaryti scenarijų. • Spaudžiame Scenario - > Open... ir pasirenkame scenarijų. Parsisiųsti scenarijus galima iš http://www.Greenfoot.org/download/files/scenarios.

25 3. Programos vartotojo sąsaja Parsisiųskime scenarijų, pavadintą Crab, ir jį atverkime. Pamatysime pateiktą vaizdą (žr. 11 pav.). Meniu Klasės

Pasaulis

Vykdyti scenarijų

Actor Kodo Atstato pradinį metoda kompiliavimas pasaulį s

11 pav. Greenfoot aplinkos pagrindiniai komponentai

Jei nematote Pasaulio (World) ir klasių, sukompiliuokite scenarijaus kodą. Langelių laukas yra vadinamas Pasauliu, kuris mūsų nagrinėjamu atveju yra CrabWorld. Dešinėje darbo lango pusėje rodomos visos projekte naudojamos Java klasės. Klasės World ir Actor ateina su Greenfoot sistema. Likusios klasės sukuriamos priklausomai nuo poreikių. Po Pasauliu yra vykdymo kontrolės mygtukai Act ir Run. Greenfoot aplinkos pagrindiniai komponentai pateikti 16 pav. Išsaugokite projektą kaip crabgame: Scenario -> Save a Copy As..."Greenfoot\scenarios\crabgame"

4. Naujos klasės sukūrimas Tarkime, kad mes norime mūsų projekte sukurti naują klasę. Tam reikia spragtelti pelytės dešiniuoju klavišu Actor->Animal->New Class->... ir pasirinkti norimą klasę. Jei norite į Pasaulį įkelti objektus, dešiniuoju pelės klavišu spragtelkite klasės klavišą, pavyzdžiui, Crab klasę. Kontekstiniame meniu pasirinkite New subclass() (žr. 12 pav.) ir spragtelkite kurioje nors Pasaulio vietoje. Šiais veiksmais sukuriamas objektas ir įkeliamas į Pasaulį.

26 Krabai maitinasi Sliekais, todėl į Pasaulį įkelkime keletą Sliekų. Spragtelkite Animal()- >New class->Worm mygtukus ir į pasaulį įkelkite Slieką (Worm). Objektus į Pasaulį galima įkelti ir greičiau: įsitikinkite, kad Worm() klasė pažymėta ir, paspaudę Shift klavišą keletą kartų, spragtelkite Pasaulyje.

12 pav. Naujos klasės kūrimas Naujos klasės vardas bus Worm. Atkreipkite dėmesį į tai, jog klasės vardas pradedamas didžiąja raide. Iš paveikslų sąrašo pasirinkite paveikslėlį worm.png ir Pasaulyje atsiras Sliekas (žr. 13, 14 pav.).

13 pav. Naujos klasės kūrimas

14 pav. Naujos Worm klasės objektas įkeltas į Pasaulį

27 Kad greičiau sukurtumėte daug sliekų, parinkite Worm klasę, paspauskite Shift mygtuką ir dėliokite krabų pasaulyje (žr. 15 pav.).

15 pav. Daugiau Worm klasės objektų įkėlimas į Pasaulį

Dar vienas būdas pridėti objektų į Pasaulį - tai nustatyti populate metodą krabų pasauliui, kad sukurtumėte objektus. CrabWorld turi metodą, pavadintą addObject( ). Jis turi vieną parametrą – veikėją, kurį norime pridėti. Metodas addObject() padeda objektą atsitiktinėje vietoje. Paspaudus dešinį klavišą, reikia pasirinkti void addObject(Actor actor) metodą ir norimą objektą (žr. 16 pav.).

16 pav. Daugiau Worm klasės objektų įkėlimas į Pasaulį Daugiau objektų įkelti automatiškai galima populate metodu, redaguojant CrabWorld klasę kodo redaktoriuje:

public void populate() { // sukurti sliekus addObject ( new Worm () ); addObject ( new Worm () ); ... }

Apibendrinimas. Objektiškai orientuotose programose:  programa susideda iš objektų,  objektai žino būsenas ir atlieka veiksmus (elgsena),  objektai gali sąveikauti,

28  klasė apibrėžia objektų tipą,  klasė apibrėžia objektų elgseną ir atributus (ką objektai žino),  Objektai yra klasių egzemplioriai (instances).

Krabo klasė yra šablonas Krabų objektai yra konkretūs gyvūnai

17 pav. Krabo klasė ir Krabo objektai

Klasė apibrėžia (būsimų) objektų atributus (charakteristikas) ir metodus. Klasė yra aprašoma programavimo kalba, tokia kaip Java: du kartus spragtelkite krabo klasės mygtuką arba kontekstiniame meniu pasirinkite komandą Atverti redaktorių ir atsidarys langas su kodu (žr.18 pav.)

18 pav. Krabo klasės Java kodas Krabo klasės išeities kodas yra faile Crab.Java. Pakeiskite Krabo kodą, naudodami redaktorių. Pakeitę išeities kodą, turite prieš naudojimą jį sukompiliuoti. Kompiliatorius išverčia Java tekstus į baitkodą. Jei yra klaidų, kompiliatorius rodys klaidos pranešimą. Sukompiliuotas

29 baitkodas yra faile Crab.class (žr. 19 pav.). Neredaguokite jo – tai beprasmiška. Java Virtuali Mašina (JVM) vykdo baitkodą.

19 pav. Projekto aplankas 5. Metodų įkėlimas į scenarijų Jūs galite į scenarijų įkelti metodus. Metodas yra vienas veiksmas, kurį gali atlikti objektas. Įsitikinkite, kad Krabas yra Pasaulyje ir scenarijus nepaleistas. Tada dešiniuoju pelės klavišu spragtelkite Krabą, esantį Pasaulyje (bet ne klasės mygtuką) ir kontekstiniame meniu pamatysite metodus (20 pav.). Pasirinkę kuriuos nors metodus, priversite Krabą atlikti kokius nors veiksmus, pvz., pasisukti kairėn. Kokią elgseną turi Krabas? Kokią elgseną paveldi Krabas iš Animal klasės?

20 pav. Metodų pasirinkimo variantai

Suteikite Krabui galimybę judėti ir pasisukti. Dešiniu mygtuku spustelkite Krabą...- >inherited from Animal > move( ). Dar kartą iškvieskite meniu ir pasirinkite >inherited from Animal > turn( int angle ). Move( ) ir turn( ) yra krabo elgsenos dalis (metodai). Act( ) yra Krabo klasės dalis ir yra kita elgsenos dalis. Elgsena apibrėžiama metodais, parašytais Java kalba. Act( ) yra Greenfoot Run (vykdyti) scenarijaus dalis (žr. 21 pav.).

30

Mes spaudžiame Greenfoot iškviečia Act() metodą Pasaulio (World ) objektui ir kiekvienam veikėjui (Actor) vieną kartą. >Act Kai spaudžiame Greenfoot liepia Pasauliui ir kiekvienam veikėjui

Run vykdyti Act( ) daug kartų

21 pav. Act ir Run metodai

Paspauskite Act mygtuką. Kiekvienas objektas turi ką nors atlikti. Mūsų atveju Sliekai neatlieka jokių veiksmų, o Krabas juda pirmyn. Jei norite, kad veiktų tik vienas objektas, galite naudoti Act() metodą tiesiogiai. Jeigu turite keletą objektų, kurie daugiau nereikalingi, ir norite pradėti viską iš pradžių, galite sukurti naują Pasaulį. Naujas Pasaulis sukuriamas paspaudus mygtuką Reset. Išmokykite Krabą praryti Slieką. Dešiniu mygtuku paspauskite Krabo objektą, pasirinkite inherited from Animal -> eat( Class cls ) ir įrašykite Worm.class (daikto, kurį norime sunaikinti, tipas) (žr. 22 pav.).

22 pav. Metodo taikymas

6. Paveldimumas Greenfoot aplinkoje Greenfoot projektuose mes naudojome paveldimumą. Viena klasė išplečia kitą klasę. Viena klasė yra kitos klasės rūšis. Kuo tai naudinga? Klasės elgesį galime naudoti pakartotinai. Mūsų klasės tampa glaustesnės. Galime susitelkti ties tik šiai klasei būdingais veiksmais. Actor yra bazinė klasė kitoms klasėms (žr. 23 pav.). Actor apibrėžia veiksmus, kuriuos galės atlikti visų rūšių aktoriai. Crab yra specializuota Animal rūšis. Crab, be savo veiksmų, dėl paveldimumo gali atlikti tą patį, ką ir Animal bei Actor. Tam mums nereikia rašyti kodo! (žr. 24 pav.).

31

Bazinė klasė Išvestinė klasė Išvestinė klasė Išvestinė klasė Išvestinė klasė

23 pav. Greenfoot klasių paveldimumas

Actor

act( )

getX( )

...more behavior

Animal Actor behavior canSee(Object) eat( Food ) move( )

Crab

Actor behavior

Animal behavior

eatWithSound()

act()

24 pav. Greenfoot klasių paveldimumas

Rašydami kodo eilutėje extends nurodome, kad klasė yra kitos klasės išvestinė. Klasė gali išplėsti tik vieną klasę (žr. 25 pav.). Paspauskite dešiniuoju mygtuku klasę ir pasirinkite New subclass. Greenfoot programa už jus sugeneruoja programos kodą (žr. 26 pav.).

32

class Animal extends Actor class Crab extends Animal

{ { public Animal( ) { public Crab( ) { super( ); super( ); } }

......

25 pav. Greenfoot klasių paveldimumas

26 pav. Greenfoot klasių išplėtimas 7. Metodo uždengimas Jei Crab`ui nepatinka Animals eat() metodas, Crab apibrėžia savo eat( ) metodą. Tai vadinama overriding (metodo uždengimu). Kalbant objektinio programavimo terminais, paveldimumas reiškia, kad viena klasė išplečia kitą. Štai terminai-sinonimai paveldimumo ryšiui nusakyti (žr. 27 pav.).

Actor Animal bazinė

tėvo klasė vaiko klasė išvestinė išvestinė superklasė subklasė

bazinė klasė išvesta klasė

27 pav. Greenfoot klasių paveldimumo sinonimai

33 Išvestinė klasė paveldi iš savo bazinės klasės:  atributus, išskyrus private atributus;  metodus, išskyrus private metodus. Crab uždengia Animal act( ) metodą savuoju act( ) metodu (žr. 28 pav.).

class Crab extends Animal { Crab turi savo act(), kuris uždengia act(), ... paveldėtą iš Actor ar Animal. public void act( ) {

Crab has its own act behavior

}

28 pav. Metodo uždengimas Crab eat() metodą pavadinome eatWithSound(). Tai specializuotas Animal metodo eat() uždengimas Crab klasei. Mes galėjome pavadinti jį ir eat(), lygiai taip, kaip yra Animal klasėje:

/**Crab act()*/ public void act() { eat(Worm.class); } void eat (Class food){ super.eat(food); Greenfood.play.Sound(…); } 8. Konstruktorius Kiekviena klasė turi specialų metodą, vadinamą konstruktoriumi. Konkstruktorius iškviečiamas visada, kai sukuriamas objektas. Konstruktorius turi tą patį pavadinimą kaip ir klasė:

public class CrabWorld { // konstruktorius naujam pasauliui public CrabWorld( ) {

34 // nusakomas pasaulio dydis super( 560, 460, 1 ); // inicializuojamas pasaulis... } 9. Konstruktoriai ir paveldimumas Konstruktorius paruošia objektą darbui. Jis sukuria naują objektą. Klasės konstruktorius gali kviesti bazinės klasės konstruktorių, kad bazinė klasė būtų paruošta darbui (žr. 29 pav.).

World <> World(width,height,size)

calls

CrabWorld <>

CrabWorld()

29 pav. Konstruktoriaus veiksmai 10. Daugkartinis panaudojimas Greenfoot aplinka turi klases, kurios jau žino, kaip judėti, todėl galima pritaikyti daugkartinį kodo panaudojimą vietoj išradinėjimo. Pavyzdžui, Greenfoot programoje yra judėjimo klasės Mover ir SmoothMover. Bazinės klasės Animal metodas move() gali iškviesti move() ir move( howFar ) metodus iš klasių Mover ir SmoothMover; metodas turn(degrees) – gali iškviesti turn( degrees ) metodus iš klasių Mover ir SmoothMover. Klasė Mover gali suktis ir judėti (kaip ir Animal). Klasė SmoothMover juda tolygiai ir gali greitėti (žr. 30 pav.).

Animal Mover eat( Food ) move( )

move( ) move( howFar )

turn( degrees ) turn( degrees ) SmoothMover

SmoothMover( speed ) increaseSpeed( amount )

turn( degrees )

30 pav. Greenfoot aplinkos metodai

35 Kad pasinaudotume papildomomis klasėmis, reikia parsisiųsti Vector.Java ir SmoothMover.Java iš http://www.Greenfoot.org . Atverkite meniu ir pasirinkite For , paspauskite Support Classes, pasirinkite reikiamą klasę (crabgame išjungtas) ir nukopijuokite klases į scenarijaus katalogą (žr. 31 pav.).

31 pav. Scenarijaus katalogas

Programos privalumai: 1. programa lengvai perprantama, 2. nereikalauja turėti programavimo įgūdžių, 3. yra galimybė redaguoti programos kodą, 4. lengvai parsisiunčiama iš http://greenfoot.org ir įdiegiama, 5. programa nemokama. Programos trūkumai: 1. programa nelokalizuota.

36 PRAKTINĖ DALIS

Naudojama kompiuterinė ir programinė įranga Naudojami kompiuteriai – 13 vnt. Kompiuterių parametrai:  procesorius – Intel (R ) Celeron (R ) CPU 430@ 1.80Ghz;  operatyvioji atmintis –2.0 GB;  kietasis diskas – 320GB 5400rpm. Naudojamos operacinės sistemos:  7 Professional Edition Service Pack 1 (biild 7601) 32-bit. Praktiniam darbui pasirinkta neformalaus ugdymo penktų klasių 12 mokinių grupė. Darbas su grupe buvo vykdomas pagal parengtą neformalaus ugdymo programą. Programos tikslas – naudojant žaidimų kūrimus Greenfoot aplinkoje supažindinti mokinius su: Javos kalbos elementais: duomenų tipais, sąlygos sakiniais, ciklais; objektinio programavimo sąvokomis: klasėmis, objekto metodais ir atributais; objektinio programavimo savybėmis: paveldėjimu, polimorfizmu, inkapsuliacija. Praktinio darbo rezultatus apžvelgsime lentelėse (1-10 lentelės), lentelių skaitiniai rezultatai yra pateikti diagramomis (1-10 diagramos), kad būtų geriau pastebimi jų panašumai ir skirtumai.. Grupė buvo suformuota iš 6 berniukų ir 6 mergaičių. Visi grupės mokiniai apie Greenfoot aplinką anksčiau nieko nežinojo. Tačiau 7 mokiniai yra išbandę Scracth programavimo aplinką. Darbo rezultatus buvo susitarta vertinti balais: už savarankiškai atliktą užduotį be klaidų – 1 balas, už savarankiškai atliktą užduotį su klaidomis – 0,7 balo, už atliktą užduotį su mokytojo pagalba – 0,5 balo, už neatliktą užduotį – 0 balų.

1. Pirmo užsiėmimo rezultatai Tikslas – susipažinti su Greenfoot programavimo aplinka. Užsiėmimo uždaviniai: 1. atsisiųsti ir įdiegti Greenfoot aplinką iš http://greenfoot.org; 2. atsisiųsti scenarijų crab-game ir paleisti žaidimą Greenfoot aplinkoje; 3. atsisiųsti scenarijų crab-game ir išsaugoti; 4. sukurti objektus; 5. sukurti naują klasę; 6. sukurti naujos klasės objektus.

37 Mokinių 1 2 3 4 5 6 sąrašas užduotis užduotis užduotis užduotis užduotis užduotis 1 mokinys 1 1 1 1 1 1 2 mokinys 1 1 1 1 1 1 3 mokinys 1 1 1 1 1 1 4 mokinys 1 1 1 1 1 1 5 mokinys 1 1 1 1 1 1 6 mokinys 1 1 1 1 1 1 7 mokinė 1 1 1 1 1 1 8 mokinė 1 1 1 1 1 1 9 mokinė 1 1 1 1 0.5 1 10 mokinė 1 1 0.5 1 1 1 11 mokinė 1 1 1 1 1 1 12 mokinė 1 0.5 1 1 0.5 0.5

1 lentelė. Pirmo užsiėmimo atliktų užduočių rezultatai

Pirmo užsiėmimo atliktų užduočių rezultatai

12 mokinė 11 mokinė 1 užduotis 10 mokinė 9 mokinė 2 užduotis 8 mokinė 3 užduotis 7 mokinė 6 mokinys 4 užduotis 5 mokinys 4 mokinys 5 užduotis 3 mokinys 6 užduotis 2 mokinys 1 mokinys 0 1 2 3 4 5 6 Vertinimas balais nuo 0 iki 6

1 diagrama. Pirmo užsiėmimo atliktų užduočių rezultatai 1 užsiėmimo pagrindiniai rezultatai yra tokie. 9 mokiniai įvykdė visas užduotis savarankiškai. 2 mokinės pasinaudojo mokytojo pagalba dėl scenarijaus atsiuntimo sunkumų. 2 mokinės pasinaudojo mokytojo pagalba dėl naujos klasės sukūrimo. 1 mokinė pasinaudojo mokytojo pagalba dėl naujos klasės objektų sukūrimo. Išvada. Mokiniai suprato, kaip atsiųsti ir paleisti scenarijus (Java elementarus programas), kaip sukurti naują klasę ir kaip naudojant sukurtą klasę kurti klasės objektus.

2. Antro užsiėmimo rezultatai Tikslas – priversti objektus veikti naudojant metodus. Užsiėmimo uždaviniai:

38 1. pritaikyti krabui metodą move(); 2. pritaikyti krabui metodą turn( int angle); 3. parašyti kodą act( ) metodui; 4. paaiškinti, ką daro act() metodas; 5. paaiškinti, ką daro run() metodas; 6. paaiškinti, kas vyksta, kai paspaudžiame Compile mygtuką.

Mokinių 1 2 3 4 5 6 sąrašas užduotis užduotis užduotis užduotis užduotis užduotis 1 mokinys 1 1 1 1 1 1 2 mokinys 1 1 1 1 1 1 3 mokinys 1 1 1 1 1 1 4 mokinys 1 1 1 1 1 1 5 mokinys 1 1 0.5 1 1 0 6 mokinys 0.5 1 1 1 1 0 7 mokinė 1 1 1 1 1 0 8 mokinė 1 1 1 1 1 1 9 mokinė 1 1 1 0 0 0 10 mokinė 1 1 0.5 0 0 0 11 mokinė 1 0.5 0.5 1 1 1 12 mokinė 1 0.5 0.5 0 0 0

2 lentelė. Antro užsiėmimo atliktų užduočių rezultatai

Antro užsiėmimo atliktų užduočių rezultatai

12 mokinė 11 mokinė 1 užduotis

10 mokinė 9 mokinė 2 užduotis 8 mokinė 3 užduotis 7 mokinė 6 mokinys 4 užduotis 5 mokinys

4 mokinys 5 užduotis Mokinių sąrašas Mokinių 3 mokinys 6 užduotis 2 mokinys 1 mokinys 0 1 2 3 4 5 6 Vertinimas balais nuo 0 iki 6

2 diagrama. Antro užsiėmimo atliktų užduočių rezultatai 2 užsiėmimo pagrindiniai rezultatai yra tokie. 3 mokinės nesuprato act() ir run() veikimo skirtumų. 6 mokiniai nesuprato kompiliavimo sąvokos. 1 mokinys nesurado act() metodo kodo redaktoriaus.

39 1. 1 mokinys neteisingai parašė kodą act() metodui. Išvada. Mokiniai suprato, kas yra metodai ir kodėl jie yra svarbūs objektiniame programavime.

3. Trečio užsiėmimo rezultatai Tikslas – užpildyti Crab.World objektais ir „išmokyti“ krabą maitintis sliekais. Užsiėmimo uždaviniai: 1. sukurti CrabWorld pasaulį pasinaudojant populate() metodu ; 2. krabas turi pasinaudoti metodu atWorldEadge() turn(15) iš Animal bazinės klasės, kad priėjęs prie Pasaulio krašto pasisuktų ir eitų toliau; 3. krabas turi pasinaudoti metodu eat(Class)) iš Animal bazinės klasės, kad galėtų maitintis; 4. parašyti sąlyginį sakinį, kad krabas priėjęs prie Pasaulio krašto galėtų pasisukti ir eiti toliau (if); 5. parašyti sąlyginį sakinį, kad krabas galėtų valgyti sliekus (if...else); 6. paaiškinti loginių sakinių su if ir su if ..else sintakse; 7. pakeisti klasių Crab ir Animal hierarchiją, padaryti Crab bazinę klasę, Animal – išvestinę Crab klasę. Mokinių 1 2 3 4 5 6 7 sąrašas užduotis užduotis užduotis užduotis užduotis užduotis užduotis 1 mokinys 1 1 1 1 0.7 1 1 2 mokinys 1 1 1 1 1 1 1 3 mokinys 1 1 1 1 0.7 0.7 1 4 mokinys 1 1 1 0.7 1 1 1 5 mokinys 1 1 1 1 0.7 0.7 1 6 mokinys 1 1 1 0.7 1 0.5 0.7 7 mokinė 1 1 1 0.7 1 0.7 1 8 mokinė 1 1 1 1 1 1 1 9 mokinė 1 1 1 0.5 0.7 0.7 1 10 mokinė 1 1 1 0.5 0.7 0.7 1 11 mokinė 1 1 1 0.7 0.7 0.7 0.7 12 mokinė 1 0.5 0.5 0.5 0.5 0.5 0.5 3 lentelė. Trečio užsiėmimo atliktų užduočių rezultatai

40 Trečio užsiėmimo atliktų užduočių rezultatai

1 užduotis 12 mokinė 2 užduotis

11 mokinė

10 mokinė 3 užduotis 9 mokinė 8 mokinė 4 užduotis 7 mokinė 6 mokinys 5 užduotis 5 mokinys 4 mokinys 6 užduotis

Mokinių sąrašas Mokinių 3 mokinys 2 mokinys 7 užduotis 1 mokinys 0 2 4 6 8 Vertinimas balais nuo 0 iki 7

3 diagrama. Trečio užsiėmimo atliktų užduočių rezultatai

3 užsiėmimo pagrindiniai rezultatai yra tokie. Visiems mokiniams pavyko sukurti CrabWorld pasinaudojus konstruktoriumi. Mokiniams kilo sunkumų dėl sąlyginių sakinių if ir if ... else dėl to, kad pirmą kartą susidūrė su Dž. Bulio matematinės logikos elementais. Išvados. Mokiniai suprato, kad konstruktorius, sukuriantis naują objektą kodo eilutėje, prasideda žodžiu new. Mokiniai suprato, kas yra paveldimumas, ir privalumus, kuriuos jis suteikia išvestinei klasei. Mokiniai suprato, kad vieno veiksmo iš dviejų parinkimą galima nurodyti sąlyginiu sakiniu.

4. Ketvirto užsiėmimo rezultatai Tikslas – įgarsinti veiksmus žaidime. Užsiėmimo uždaviniai: 1. pasinaudoti Greenfoot klasės statinių metodu Greenfoot.playSound garsinių failų grojimui; 2. pasirinkti iš “sounds” katalogo audio failą slurp.wav, kad įgarsintų valgymo veiksmą; 3. sukurti naują metodą eatWithSound slieko valgymui ir garso grojimui; 4. parašyti loginį sąlyginį if...else if sakinį, kad krabas maitintųsi arba eitų su garsu; 5. paaiškinti loginio sakinio if ..else sintaksę; 6. paaiškinti, kas yra metodo parametrai konkrečiai sukurtame eatWithSound metode.

41 Mokinių 1 2 3 4 5 6 sąrašas užduotis užduotis užduotis užduotis užduotis užduotis 1 mokinys 1 1 1 1 1 1 2 mokinys 1 1 1 1 1 1 3 mokinys 1 1 1 1 0.7 0.7 4 mokinys 1 1 1 0.7 1 1 5 mokinys 1 1 0.7 1 0.7 0.7 6 mokinys 1 1 1 0.5 1 0.5 7 mokinė 1 1 0.7 1 1 0.7 8 mokinė 1 1 0.7 0.5 1 1 9 mokinė 1 1 1 0.5 0.7 0.7 10 mokinė 1 1 0.5 0.5 0.7 0.7 11 mokinė 1 1 0.7 0.7 0.7 0.7 12 mokinė 1 1 0.5 0.5 0.5 0.5

4 lentelė. Ketvirto užsiėmimo atliktų užduočių rezultatai

Ketvirto užsiėmimo atliktų užduočių rezultatai

12 mokinė

11 mokinė 1 užduotis 10 mokinė 9 mokinė 2 užduotis 8 mokinė 7 mokinė 3 užduotis 6 mokinys 5 mokinys 4 užduotis 4 mokinys 5 užduotis

Mokinių sąrašas Mokinių 3 mokinys 2 mokinys 6 užduotis 1 mokinys 0 2 4 6 Vertinimas balais nuo 0 iki 6

4 diagrama. Ketvirto užsiėmimo atliktų užduočių rezultatai 4 užsiėmimo pagrindiniai rezultatai yra tokie. Visiems mokiniams pavyko pasinaudoti audio failu, kad įgarsintų valgymo veiksmą. Penkiems mokiniams kilo sunkumų kuriant sąlyginius sakinius if ir if ... else. Mokiniai pirmą kartą susidūrė su metodo parametrų sąvoka ir ne visi suprato. Išvados. Mokiniai suprato, kaip įgarsinamas Krabo veiksmas, kas yra yra paveldimumas, privalumus, kuriuos jis suteikia išvestinei klasei. Mokiniai suprato, kad vieno veiksmo iš dviejų parinkimą galima nurodyti sąlyginiu sakiniu.

5. Penkto užsiėmimo rezultatai Tikslas – suprogramuoti klaviatūros valdymą Krabo judėjimui. Užsiėmimo uždaviniai: 1. pritaikyti Greenfoot.isKeyDown() metodą paspaustiems klavišams nustatyti;

42 2. pritaikyti Greenfoot.getKey() metodą, grąžinantį paskutinį paspaustą klavišą; 3. parašyti daugialypį sąlyginį if...else if... else if... else if...else...if sakinį, vykdantį klavišų paspaudimų apdorojimo logiką; 4. paaiškinti daugialypį sąlyginį if...else if... else if... else if...else...if sakinį; 5. pritaikyti move() ir turn()metodus ėjimui pirmyn; 6. paaiškinti, kodėl naudojame move() ir turn() metodus vienu metu, kad Krabas eitų pirmyn.

Mokinių 1 2 3 4 5 6 sąrašas užduotis užduotis užduotis užduotis užduotis užduotis 1 mokinys 1 1 1 1 1 1 2 mokinys 1 1 1 1 1 1 3 mokinys 1 1 1 1 1 1 4 mokinys 1 1 1 1 1 1 5 mokinys 1 1 1 1 0.7 0.7 6 mokinys 1 1 1 1 1 1 7 mokinė 1 1 1 1 1 1 8 mokinė 1 1 1 1 1 1 9 mokinė 1 1 0,5 0.5 0.7 0.7 10 mokinė 1 1 0.5 0.5 0.7 0.7 11 mokinė 1 1 0.7 0.7 0.7 0.7 12 mokinė 1 1 0.5 0.5 0.5 0.5

5 lentelė. Penkto užsiėmimo atliktų užduočių rezultatai

Penkto užsiėmimo atliktų užduočių rezultatai

12 mokinė 1 užduotis

11 mokinė

10 mokinė 2 užduotis 9 mokinė 8 mokinė 3 užduotis

7 mokinė 6 mokinys 4 užduotis 5 mokinys 4 mokinys 5 užduotis

Mokinių sąrašas Mokinių 3 mokinys 2 mokinys 6 užduotis 1 mokinys 0 1 2 3 4 5 6 Vertinimas balais nuo 0 iki 6

5 diagrama. Penkto užsiėmimo atliktų užduočių rezultatai

43 5 užsiėmimo pagrindiniai rezultatai yra tokie. Visiems mokiniams pavyko pritaikyti Greenfoot metodus paspaustiems klavišams nustatyti. Išvados.  Mokiniai suprato, kaip juda Krabas, kodėl reikia naudoti move() ir turn() metodus ėjimui pirmyn.  Mokiniai suprato Greenfoot metodų paspaustiems klavišams algoritmą.  Dauguma mokinių suprato daugialypio sąlyginio if...else if... else if... else if...else...if sakinio sintaksę, vykdančio klavišų paspaudimų apdorojimo logiką.

6. Šešto užsiėmimo rezultatai Tikslas – animuoti objektus. Užsiėmimo uždaviniai: 1. pasirinkti Krabo klasėje set image ir pasinaudoti actor.setImage( image ) metodu sudarant paveiksliukų seką; 2. parašyti animate() metodą Crab klasėje; 3. pasinaudoti Greenfoot dokumentacija Sliekų animacijai (meniu pasirinkti Help → Greenfoot Class Documentation → GreenfootImage → Method → MirrorHorizontally); 4. padaryti Slieko kopiją, jį apversti naudojant mirrorHorizontally() metodą; 5. suprogramuoti Konstruktoriuje naujo Slieko kūrimą ir jo veidrodinį apsisukimą; 6. sukurti Sliekų klasėje metodą animate() analogiškai, kaip parašė Krabo klasėje. Mokinių 1 2 3 4 5 6 sąrašas užduotis užduotis užduotis užduotis užduotis užduotis 1 mokinys 1 1 1 1 1 1 2 mokinys 1 1 1 1 1 1 3 mokinys 1 1 1 1 1 1 4 mokinys 1 1 1 1 1 1 5 mokinys 1 1 1 1 1 1 6 mokinys 1 1 1 0.7 1 0.5 7 mokinė 1 1 1 0.7 1 0.5 8 mokinė 1 0.5 1 1 1 1 9 mokinė 1 1 1 0.7 1 0.5 10 mokinė 1 1 1 1 1 1 11 mokinė 1 0.5 1 0.5 0.7 0.5 12 mokinė 1 0.5 1 0.5 0.5 0.5 6 lentelė. Šešto užsiėmimo atliktų užduočių rezultatai

44 Šešto užsiėmimo atliktų užduočių rezultatai

12 mokinė 1 užduotis

11 mokinė 10 mokinė 2 užduotis 9 mokinė 8 mokinė 3 užduotis

7 mokinė 6 mokinys 4 užduotis 5 mokinys 4 mokinys 5 užduotis

Mokinių sąrašas Mokinių 3 mokinys 2 mokinys 6 užduotis 1 mokinys 0 2 4 6 Vertinimas balais nuo 0 iki 6

6 diagrama. Šešto užsiėmimo atliktų užduočių rezultatai 6 užsiėmimo pagrindiniai rezultatai yra tokie. Visiems mokiniams pavyko sudaryti paveikslėlių seką. Šešiems mokiniams kilo sunkumų apverčiant Slieko kopiją ir rašant animate() metodo kodą Sliekų klasėje. Išvada.  Mokiniai suprato animacijos kūrimo principą Greenfoot aplinkoje.

7. Septinto užsiėmimo rezultatai Tikslas – paįvairinti žaidimą naudojant atsitiktinius skaičius. Užsiėmimo uždaviniai: 1. parašyti kodo eilutę GreenfootgetRandomNumber() metodu, kad gautų atsitiktinį skaičių nuo 0 iki 10; 2. parašyti kodo eilutę GreenfootgetRandomNumber() metodu, kad gautų atsitiktinį skaičių nuo 0 iki 7; 3. animuoti Sliekus atsitiktinai, parašyti kodą public void animate( ) metodu, (jei atsitiktinis skaičius 0 – animuoti, kitaip nieko nedaryti, atsitiktiniai skaičiai nuo 0 iki 5); 4. paspaudus dešiniuoju pelės mygtuku Pasaulį, atidaryti Inspekt ir pažiūrėti Pasaulio dydį; įkelti į Pasaulio vidurį 3 Krabus, paspaudus dešiniuoju pelės mygtuku Krabą, atidaryti Inspekt ir pažiūrėti x ir y koordinačių reikšmes (x,y Pasaulio koordinatės); 5. perstatyti Krabus į kitą Pasaulio vietą ir parašyti getX( ), getY( ) metodus, kad sužinotų Krabų koordinates; 6. parašyti worm.getX( ) ir worm.getY( ) metodą, kad gautų Slieko koordinates.

45 Mokinių 1 2 3 4 5 6 sąrašas užduotis užduotis užduotis užduotis užduotis užduotis 1 mokinys 1 1 1 1 1 1 2 mokinys 1 1 1 1 1 1 3 mokinys 1 1 1 1 1 1 4 mokinys 1 1 1 1 1 1 5 mokinys 1 1 1 1 1 1 6 mokinys 1 1 0.5 1 1 1 7 mokinė 1 1 1 1 1 1 8 mokinė 1 1 0.7 1 1 1 9 mokinė 1 1 1 1 1 1 10 mokinė 0.7 1 0.5 1 1 1 11 mokinė 1 1 1 1 1 1 12 mokinė 0.5 0.5 0.5 1 1 1 7 lentelė. Septinto užsiėmimo atliktų užduočių rezultatai

Septinto užsiėmimo atliktų užduočių rezultai

12 mokinė 11 mokinė 1 užduotis

10 mokinė 2 užduotis 9 mokinė 8 mokinė 3 užduotis 7 mokinė 6 mokinys 4 užduotis 5 mokinys 5 užduotis 4 mokinys

Mokinių sąrašas Mokinių 3 mokinys 6 užduotis 2 mokinys 1 mokinys 0 2 4 6 Vertinimas balais nuo 0 iki 6

7 diagrama. Septinto užsiėmimo atliktų užduočių rezultatai 7 užsiėmimo pagrindiniai rezultatai yra tokie. Visiems mokiniams pavyko atlikti užduotis su objekto koordinatėmis. Keturiems mokiniams nepavyko atsitiktinai animuoti Slieko paveiksliukų. Išvados.  Mokiniai suprato, kas yra atsitiktiniai skaičiai.  Visi mokiniai suprato, kaip sužinoti Pasaulio dydį, surasti objektų koordinates.

8. Aštunto užsiėmimo rezultatai Tikslas – taškų lentos sukūrimas ir teksto rašymas (1). Užsiėmimo uždaviniai: 1. naudojant GreenfootImage getImage( ) metodą sukurti lentelę, lentelės matmenys int width = image.getWidth( ); int height = image.getHeight( ); 2. importuoti java.awt.Color (Help→Java Library Dokumentation);

46 3. nustatyti teksto spalvą image.setColor( Color.RED ) metodu; 4. public void drawText( )metode nustatyti teksto spalvą, Font font = new Font("Arial", Font.BOLD, 20); image.setFont( font ); 5. public void drawText( )metode parinkti tekstui vietą int x = 2; int y = image.getHeight( ) * 2 / 3; image.drawString("Labas", x, y ); 6. paaiškinti, ką reiškia new Font("Arial", Font.BOLD, 20). Mokinių 1 2 3 4 5 6 sąrašas užduotis užduotis užduotis užduotis užduotis užduotis 1 mokinys 1 1 1 1 1 1 2 mokinys 1 1 1 1 1 1 3 mokinys 1 1 1 1 1 1 4 mokinys 1 1 1 1 1 1 5 mokinys 1 1 1 1 1 1 6 mokinys 1 1 1 1 1 1 7 mokinė 1 0.7 1 1 1 0.7 8 mokinė 1 1 1 1 1 1 9 mokinė 1 0.5 1 1 1 1 10 mokinė 1 1 1 1 1 0.5 11 mokinė 1 1 1 1 1 1 12 mokinė 1 0.5 1 1 1 0.5

8 lentelė. Aštunto užsiėmimo atliktų užduočių rezultatai

Aštunto užsiėmimo atliktų užduočių rezultai

12 mokinė 1 užduotis 11 mokinė

10 mokinė 2 užduotis 9 mokinė 8 mokinė 3 užduotis 7 mokinė 6 mokinys 4 užduotis 5 mokinys 4 mokinys 5 užduotis Mokinių sąrašas Mokinių 3 mokinys 2 mokinys 6 užduots 1 mokinys 0 1 2 3 4 5 6 Vertinimas balais nuo 0 iki 6

8 diagrama. Aštunto užsiėmimo atliktų užduočių rezultatai 8 užsiėmimo pagrindiniai rezultatai yra tokie. Visiems mokiniams pavyko sukurti lentelę, nustatyti teksto spalvą, nustatyti teksto šriftą. Keletas mokinių pamiršo, kaip atverti Java kalbos bibliotekos dokumentaciją. Keturiems mokiniams nepavyko atsitiktinai animuoti Slieko paveiksliukų. Trys mokiniai neatpažino naujo šrifto konstruktoriaus. Išvados.

47 Mokiniai suprato kaip sukurti lentelę. Mokiniai suprato, kaip nustatyti teksto šrifto stilių, dydį, spalvą. Mokiniai suprato, kaip nustatyti sukurtoje lentelėje teksto vietą.

9. Devinto užsiėmimo rezultatai Tikslas – taškų lentos sukūrimas ir teksto rašymas (2). Užsiėmimo uždaviniai: 7. sukurti Actor klasėje pavadintą TextMessage GreenfootImage getImage( ) metodą tekstui rodyti; 8. redaguoti TextMessage() metodą, suteikant 2 atributus: font – šriftas, kurį naudos (gali parinkti bet kurį) ir color – rašomo teksto spalva; 9. importuoti java.awt.Font (Help→Java Library Dokumentation); 10. importuoti java.awt.color (Help→Java Library Dokumentation); 11. programuoti konstruktorių tuščiam paveiksliukui sukurti public class TextMessage extends Actor metode; 12. sukurti metodą pranešimui rodyti public void setText( String msg ). Mokinių 1 2 3 4 5 6 sąrašas užduotis užduotis užduotis užduotis užduotis užduotis 1 mokinys 1 1 1 1 1 1 2 mokinys 1 1 1 1 1 1 3 mokinys 1 1 1 1 1 1 4 mokinys 1 1 1 1 1 1 5 mokinys 1 1 1 1 1 0.75 6 mokinys 1 1 1 1 0.5 1 7 mokinė 1 1 1 1 1 0.5 8 mokinė 1 1 1 1 1 1 9 mokinė 1 0.5 1 1 1 1 10 mokinė 1 1 1 1 0.5 0.5 11 mokinė 1 0,5 1 1 1 1 12 mokinė 1 0.5 1 1 0.5 0.5

9 lentelė. Devinto užsiėmimo atliktų užduočių rezultatai

48 Devinto užsiėmimo atliktų užduočių rezultai

1 užduotis 11 mokinė 2 užduotis 9 mokinė 3 užduotis

7 mokinė 4 užduotis 5 mokinys 5 užduotis

Mokiniųsąrašas 3 mokinys 6 užduotis

1 mokinys 0 1 2 3 4 5 6 Vertinimas balais nuo 0 iki 6

9 diagrama. Devinto užsiėmimo atliktų užduočių rezultatai 9 užsiėmimo pagrindiniai rezultatai yra tokie. Visiems mokiniams pavyko sukurti TextMessage GreenfootImage getImage( ) metodą tekstui rodyti, importuoti šriftus ir spalvas iš Java bibliotekos. Keletas mokinių padarė klaidų rašydami kodą. Išvados. Mokiniai suprato, kaip atsiųsti reikalingus atributus iš Java bibliotekos. Mokiniai suprato, kaip sukurti metodą tuščiam paveiksliukui kurti. Mokiniai suprato, kaip sukurti metodą, kuris rodys teksto pranešimą.

10. Dešimto užsiėmimo rezultatai Tikslas – parodyti CrabWorld pasaulyje, kiek sliekų buvo suvalgyta. Užsiėmimo uždavinys – įstatyti į CrabWorld klasę kodą ir gauti pranešimą apie suvalgytus sliekus: public class CrabWorld extends World { /** mūsų krabas */ private Crab crab; /** Tekstinis pranešimas taškų rodymui */ private TextMessage scoreboard; private void populate( ) { int width = getWidth(); int height = getHeight(); crab = new Crab( ); addObject( crab, width/2, height/2 ); public void act( ) {

49 // update the Scoreboard if ( crab != null ) { int eaten = crab.getWormsEaten( ); scoreboard.setText( "Suvalgyta sliekų: " + eaten); } }

Mokinių 1 užduotis sąrašas 1 mokinys 1 2 mokinys 0.7 3 mokinys 1 4 mokinys 0.7 5 mokinys 1 6 mokinys 1 7 mokinė 0.5 8 mokinė 0.7 9 mokinė 1 10 mokinė 0.5 11 mokinė 0.5 12 mokinė 0

10 lentelė. Dešimto užsiėmimo atliktos užduoties rezultatas

Dešimto užsiėmimo atliktų užduočių rezultai

12 mokinė 11 mokinė

10 mokinė 9 mokinė 8 mokinė 7 mokinė 6 mokinys 5 mokinys 1 užduotis

4 mokinys Mokinių sąrašas Mokinių 3 mokinys 2 mokinys 1 mokinys 0 0,5 1 Vertinimas balais nuo 0 iki 1

10 diagrama. Dešimto užsiėmimo atliktos užduoties rezultatas 10 užsiėmimo pagrindiniai rezultatai yra tokie. Penki mokiniai sukūrė Krabo žaidimą. Trys mokiniai padarė klaidų, bet dirbo savarankiškai. Trys mokiniai užbaigė darbą padedami mokytojo. Išvados.

50 Mokiniai suprato, kaip sukurti metodą crab.getWormsEaten( ), kad suskaičiuotų suvalgytus sliekus. Mokiniai suprato, kaip sukurti metodą, kuris rodys teksto pranešimus apie taškus. Pastaba. Iš planuotų 16 pamokų buvo vesta 10 užsiėmimų. 6 užsiėmimai neįvyko dėl atostogų ir šventinių dienų bei netradicinių pamokų, vykusių užsiėmimo dieną.

51 TEORINĖS DALIES IŠVADOS

Visos apžvelgtos objektinio programavimo aplinkos, skirtos moksleiviams, turi savo privalumų ir trūkumų. Visos programos yra nemokamos, lengvai parsiunčiamos ir įdiegiamos. Visose programose pagalba suteikiama anglų kalba. Visos apžvelgtos programos skirtos vaikų ir jaunimo mokymosi įgūdžiams ugdyti, kūrybiškam mąstymui, aiškiam minčių dėstymui, mеtоdų anаlizаvimui, projektavimui, bendrаdarbiavimui. Iš visų aplinkų lokalizuota tik Scratch programa. Scratch ir Alice nereikalauja programavimo įgūdžių pradedant darbą, aplinkos organizuotos dėlionės principu (drag-and-drop), programavimo komandos tempiamos į komandų lauką ir įstatomos viena į kitą iš viršaus į apačią. Greenfoot deklaruojama kaip nereikalaujanti programavimo įgūdžių, aplinkoje realizuotas vizualumas ir kodo rašymas. Dėl to, kad yra specializuotų metodų, kurie iš dalies atleidžia nuo kalbos sintaksės žinojimo, biblioteka, aplinka tampa prieinama paaugliams. BlueJ reikalauja programavimo įgūdžių, kad būtų galima pradėti darbą Java kalbos aplinkoje. Galima tegti, kad visos programos turi tam tikro tolydumo: pradėjus žaisti Scratch programoje, pavyzdžiui, nuo 5-6 metų, bus įdomu pereiti prie Alice 2.0 versijos, po to prie Alice 3.0 su galinga 3D-animacija, toliau – Greenfoot aplinka, leidžianti rašyti kodą ir kurti žaidimus, ir paauglystėje – BlueJ Java kalbos programavimo aplinka. Programos lyg papildo vieną kitą, kiek- viena formuoja bendruosius ir specifinius programavimo įgūdžius. Visos programos suteikia galimybę žaidžiant mokytis programuoti ir kiekviena programa skirta skirtingo amžiaus vaikams ar paaugliams. Greenfoot programavimo aplinka skiriasi iš visų apžvelgtų tuo, kad leidžia dalį veiksmų atlikti dėlionės principu ir programuoti Java kalba, rezultatą gauti vizualizavimo būdu.

52 PRAKTINĖS DALIES IŠVADOS

Praktinis darbas buvo atliktas su neformaliojo ugdymo grupės vaikais. Iš planuotų 16 pamokų buvo pravesta 10 užsiėmimų. Būrelio dalyvių amžius – 11-12 m. Grupė yra susipažinusi su Greenfoot aplinkos koordinačių sistema, klasėmis, objekto sąvokomis, objekto metodais, objekto atributais, sąlygos sakiniais, ciklais. Darbas buvo pradėtas nuo žaidimo kūrimo, ir vaikai iš karto susidūrė su nepažįstama terminija, bet jie buvo labai motyvuoti padaryti kitą žingsnį, kad programuojama žaidimo dalis veiktų. Ir tai yra dėl Greenfoot aplinkos. Ji organizuota labai patogiai, vaikai iš karto susipažino su metodų biblioteka ir drąsiai ją naudojosi. Sunkumų mokiniai patyrė dėl sąlyginio sakinio, daugialypio sąlyginio sakinio naudojimo programos kode dėl to, kad dar nebuvo susidūrę su Dž. Bulio matematinės logikos elementais, kadangi yra tik penktokai. Mokiniams, kurie yra išbandę Scracth programavimo aplinką, užduotis sekėsi atlikti geriau nei kitiems, kurie neturėjo programavimo įgūdžių. Berniukams sekėsi geriau nei mergaitėms. Vizuali programavimo aplinka leidžia mokiniams žaidžiant kurti programas, taigi jie tampa tikrais kūrėjais bei realizuoja savo idėjas ir gali jomis dalintis. Greenfoot svetainėje taip pat įmanoma parsisiųsti ir išbandyti ar net pakeisti ir perdaryti savaip kitų sukurtus projektus. Naršydami po kitų sukurtus projektus vaikai gali rasti naujų idėjų, o patikusio projekto dalį perkelti į savo darbą. Dirbdami Greenfoot aplinkoje vaikai susiduria su matematinių skaičiavimų pagrindais: kintamaisiais, koordinatėmis, atsitiktiniais skaičiais, sąlygomis. Mokiniai, padarę tam tikrą veiksmą arba pakoregavę kodo eilutę, pamato rezultatą ir geriau supranta algoritmo mechanizmą.

53 IŠVADOS

Vizuali programavimo aplinka suteikia galimybę mokiniams patiems tapti kūrėjais, realizuoti savo idėjas – žaismingai kurti programas ir patogiai jomis dalintis. Greenfoot svetainėje taip pat įmanoma parsisiųsti ir išbandyti ar net pakeisti ir perdaryti savaip kitų sukurtus projektus. Naršydami po kitų sukurtus projektus vaikai gali rasti naujų idėjų, o patikusio projekto dalį perkelti į savo darbą. Dirbdami Greenfoot aplinkoje vaikai susiduria su matematinių skaičiavimų pagrindais: kintamaisiais, koordinatėmis, atsitiktiniais skaičiais, iteracijomis, sąlygomis. Mokiniai, padarę tam tikrą veiksmą arba pakoregavę kodo eilutę, pamato rezultatą ir geriau supranta algoritmo mechanizmą. Greenfoot sistema gali būti sėkmingai pritaikyta Lietuvos mokyklose pagal naujausias Bendrąsias informacinių technologijų ugdymo programas, kurios pabrėžia kūrybiškumo svarbą ugdant mokinius. Greenfoot aplinką galima taikyti mokyklose integruojant, atliekant projektus ir IT būrelių mokymo (si) užsiėmimuose. Ateityje moksleiviams pravers Javos kalbos pradmenų mokėjimas. Apibendrinant galima teigti, jog Greenfoot – tai šiuolaikiška vizualiojo objektinio programavimo kalba, kuri programavimo procesą daro patrauklesnį ir lengviau suprantamą vaikams, paaugliams ir visiems, kurie nori to išmokti.

54 PRIEDAS

Programavimo pradmenų Greenfoot aplinkoje užsiėmimų planas Tikslas: naudojant žaidimų kūrimą Greenfoot aplinkoje supažindinti mokinius su: 1. Java kalbos elementais: duomenų tipais, sąlygos sakiniais; 2. objektinio programavimo sąvokomis: klasėmis, objekto metodais ir atributais; 3. objektinio programavimo savybėmis: paveldėjimu, polimorfizmu, inkapsuliacija. Vertinimas: Darbo rezultatus buvo susitarta vertinti balais: už savarankiškai atliktą užduotį be klaidų – 1 balas, už savarankiškai atliktą užduotį su klaidomis – 0,7 balo, už atliktą užduotį su mokytojo pagalba – 0,5 balo, už neatliktas užduotis – 0 balų.

Valandos Temos Rezultatai Mokytojos veiklos Mokinių veiklos (nuo-iki) Įvadas. Mokės atsisiųsti ir Pristato dalyko Parsiunčia iš Susipažindini įdiegti mokymosi tikslą, http://www.greenfoot ir mas su programavimo numatytą ugdymo turinį, įdiegia Greenfoot objektinio aplinką, mokės vertinimo sistemą; aplinką. Parsiunčia iš programavim atsisiųsti scenarijus trumpai pasakoja http://www.greenfoot o Greenfoot iš aplinkos istoriją ir apie žaidimo scenarijų ir vartotojo http://www.greenfo jos kūrėją. Paaiškina paleidžia žaidimą. sąsaja ot. klasės, objekto sąvokas, Susipažįsta su 1 kaip, pele spustelėjus programos vartotojo Gebės įvardyti klasės mygtuką, galima sąsaja. Parsiunčia crab- programos lango sukurti naują objektą. game scenarijų. Sukuria dalis, savais objektą, naują klasę, žodžiais paaiškinti naujos klasės objektą, jų paskirtį. Mokės išsaugo scenarijų. sukurti objektą, klasę. Objektų Dirbdami su Nagrinėjama metodų Atlikdami užduotis privertimas Greenfoot paskirtis, mokomasi kuria žaidimą. Kartu su veikti programavimo pritaikyti ir atverti mokytoju nagrinėja naudojant aplinka, mokiniai objektams metodus. teorinę medžiagą. move(), gebės bent vienu iš Nagrinėjamas Compile Atlieka užduotis. turn(int galimų būdų mygtuko veikimo Aiškinasi, kas yra angle), vizualioje sąsajoje principas. Užsiėmimo paveldimumas. act(), run() pasirinkti metodą, metu mokytojas metodus 1 pasirinkus iš konsultuoja, padeda, jei objekto, klasės arba reikia, individualiai ar atverti kodo su visa klase dar kartą redaktorių ir išsiaiškina reikiamas parašyti kodą. sąvokas, užduoties Gebės savais atlikimo žingsnius, kitus žodžiais apibūdinti, klausimus. kokie metodai kam skirti. Objektų Kurti naujus Pamokos uždavinių Atlikdami užduotis 1 įkėlimas į objektus, dirbti su pristatymas, svarbiausių kuria žaidimą.

55 Crab.World keliais objektais. dalykų akcentavimas. Aiškinasi, kaip parašyti ir krabo Keisti objektų Mokytojas paaiškina sąlyginių sakinių if „išmokymas“ padėtį ekrane. sąlyginio sakinio if kodą. valgyti Keisti objektų sintaksę. Pamokos metu Kartu su mokytoju sliekus. savybes. mokytojas konsultuoja, nagrinėja teorinę Gebės operuoti padeda, jei reikia, medžiagą. Atlieka loginiais vienetais. individualiai ar su visa užduotis, konsultuojasi Pateikti praktiniai klase dar kartą su mokytoju ir klasės pavyzdžiai ir išsiaiškina reikiamas draugais. užduotys. sąvokas, užduoties atlikimo žingsnius, kitus klausimus. Žaidimo Mokiniai gebės Pamokos metu Mokiniai atlieka veiksmų naudotis Java mokytojas konsultuoja, užduotis. Toliau kuria įgarsinimas. bibliotekos padeda, jei reikia, žaidimą, Kartu su dokumentacija, individualiai ar su visa mokytoju nagrinėja klasių klase dar kartą teorinę medžiagą, naujas dokumentacija. išsiaiškina reikiamas sąvokas. 1 Gebės operuoti sąvokas, užduoties loginiais vienetais. atlikimo žingsnius, kitus klausimus. Mokytojas paaiškina sąlyginių sakinių if...else, if...else if sintaksę. Klaviatūros Mokiniai mokės Pamokos metu Mokiniai valdymas, suprogramuoti mokytojas konsultuoja, programuodami taiko Krabo Krabo judėjimą. padeda, jei reikia, Greenfoot.isKeyDown() judėjimo Gebės operuoti individualiai ar su visa ir Greenfoot.getKey() programavim 1 loginiais vienetais. klase dar kartą metodus, klaviatūros as išsiaiškina reikiamas valdymą. Atlieka sąvokas, užduoties užduotį savarankiškai. atlikimo žingsnius, kitus klausimus. Objektų Mokiniai gebės Pamokos uždavinių Mokiniai kuria animacija. pasinaudoti pristatymas, svarbiausių animaciją objektams. Greenfoot dalykų akcentavimas. Kartu su mokytoju dokumentacija. Pamokos metu nagrinėja teorinę mokytojas konsultuoja, medžiagą, naujas padeda, jei reikia, sąvokas. 1 individualiai ar su visa klase dar kartą išsiaiškina reikiamas sąvokas, užduoties atlikimo žingsnius, kitus klausimus. Žaidimo Mokiniai įsisavina Pamokos uždavinių Mokiniai kuria paįvairinimas matematinių pristatymas, svarbiausių animaciją objektams. naudojant skaičiavimų dalykų akcentavimas. Atlieka užduotis, atsitiktinius pagrindus, Pamokos metu konsultuojasi su skaičius. atsitiktinius mokytojas konsultuoja, mokytoju ir klasės skaičius. padeda, jei reikia, draugais. 1 individualiai ar su visa klase dar kartą išsiaiškina reikiamas sąvokas, užduoties atlikimo žingsnius, kitus klausimus.

56 Taškų lentos Mokiniai įsisavina Pamokos metu Mokiniai kuria taškų sukūrimas ir matematinių mokytojas konsultuoja, lentą ir teksto išvedimą. teksto skaičiavimų padeda, jei reikia, Kuria metodą rašymas . pagrindus, individualiai ar su visa pranešimui rodyti kintamųjų sąvokas. klase dar kartą public void setText( 2 Mokiniai gebės išsiaiškina reikiamas String msg ). surinkti tekstą sąvokas, užduoties Atlieka užduotis, Greenfoot atlikimo žingsnius, kitus konsultuojasi su pasaulyje. klausimus. mokytoju ir klasės Lavinamas mokinių draugais. kūrybiškumas. Pranešimo Mokiniai įsisavina Pamokos uždavinių Mokiniai kuria CrabWorld matematinių pristatymas, svarbiausių suvalgytų sliekų skaičių pasaulyje skaičiavimų dalykų akcentavimas. išvedimą į ekraną. kūrimas. pagrindus, Pamokos metu kintamųjų sąvokas. mokytojas konsultuoja, padeda, jei reikia, 1 individualiai ar su visa klase dar kartą išsiaiškina reikiamas sąvokas, užduoties atlikimo žingsnius, kitus klausimus.

57 LITERATŪROS SĄRAŠAS

[1] Valentina Dagienė; Pėlikis Eimantas; Stupurienė Gabrielė. Informatinio mąstymo ugdymo užduotys: merginų ir vaikinų sprendimų analizė. Vilnius: Vilniaus universiteto leidykla. ISSN: 1392-5016. 2015, T. 35, p. 53-66. [žiūrėta 2016-01-20] [2] Н. А. Забродина. Особенности развития мыслительных операций детей старшего дошкольного возраста // Культура и образование. – Ноябрь 2014. - № 11 [žiūrėta 2015- 12-15] [3] [žiūrėta 2016-05-16] [4] Valentina Dagienė, Jolanta Subatovič, Aurelija Sližytė. Kūrybiškumas ir kompiuterinė programa Scratch . ISSN 1392-0561. INFORMACIJOS MOKSLAI. 2009 50. [žiūrėta 2016- 01-20] [5] Vilma Riškevičienė. Objektinis programavimas. Marijampolė: Piko valanda, 2012. 125 p. [6] В.В. Монахов. Язык програмирования Java и среда NetBeans. 3 издание. Санкт- Петербург: БХВ- Петербург, 2011. – 703 с. [7] [žiūrėta 2015-02-22] < http://www.sun.com/> [8] Michael Kӧlling. Introduction to Programming with Greenfoot. Pearson, 2010. 190 p [9] Rimantas Belevičius. Java technologijos. Mokomoji knyga. Vilnius: Technika, 2005. 190 p. [10] Michael Kӧlling. Introduction to Programming with Greenfoot. Pearson, 2010. 190 p. [11] Algirdas Bastys. Java programavimo kursas http://www.mif.vu.lt/~bastys/Java/paskaitos/7/swing.html#Paketoapzvalga [12] Rimantas Belevičius. Java technologijos. Mokomoji knyga. Vilnius: Technika, 2005. 190p. [13] A. Riškus Programavimas Java. Pirmoji pažintis. Kaunas: Technologija, 2007. [14] D. Šilingas. Java technologijų apžvalga http://internet.ktu.lt/lt/mokslas/konf05/konf_02/IT2005/Sekc02.pdf [15] Тимоти Бадд. Объектно-ориентированное программирование в действии. Данная версия книги выпущена электронным издательством “Books-shop”, 2002. – 304 с. [16] Г. Шилдт SWING: руководство для начинающих: Пер. с англ. – М.: ООО „И.Д. Вильямс“, 2007. – 704 с.: ил. – Парал. тит. англ.

58 SANTRAUKA

Magistro darbo tema – „Objektinis programavimas Greenfoot aplinkoje“, darbo autorė Viktorija Jegorenko. Šiame darbe išnagrinėtos objektinio programavimo savybės Greenfoot aplinkoje. Atlikta populiariausių objektinio programavimo aplinkų, skirtų moksleiviams, apžvalga. Su penktų klasių grupe atliktas praktinis darbas, kurio metu buvo aiškinamasi, ar Greenfoot programavimo aplinka tinka mokant moksleivius objektinio programavimo. Nustatyta, kad viskas priklauso nuo mokinių susidomėjimo, motyvacijos ir užsibrėžtų tikslų, o praktinių užsiėmimų rezultatai parodė, kad kurdami žaidimus vaikai puikiai įsisavina sudėtingas objektinio programavimo sąvokas. Atlikti praktiniai darbai atskleidė stipriąsias ir silpnąsias moksleivių mokymo (si) vietas objektinio programavimo aplinkoje. Pateiktos gautų praktinio darbo rezultatų ir apžvelgtos literatūros išvados. Failai įrašyti į kompaktinį diską ir pateikti kartu su atspausdintu magistro darbu.

59 SUMMARY

The MA thesis aims at analyzing the features of the ”Object programming with environment Greenfoot”. This scientific work was written by Viktorija Jegorenko. The most popular programming areas designed for students werw overviewed. The practical part of this paper was done in coloboration with the students of the 5-th grade. The relevance of object programming with environment Greenfoot was clarified. During the experiment it was determined that topicality depends on students` interests, motivation and thear aims. The result of the practical work showed that while creating games students mastered the concept of the object programming successfully. Experiments that were conducted revealed the strong and weak sides of the topic in studing curriculum. The conclusions were drown after analysis of the practical work rezults and the literature review. Text file of data is recorded on a CD which was append with the printed master's work.

60