SlideShare a Scribd company logo
1 of 33
1 dalis: Programavimas Greenfoot’u
Ar įsivaizduojate,

kas tai yra klasės ir objektai?
Tai išsiaiškinsime tiesiog parašydami žaidimą!
James Brucker
Kasetsart University 2010
Lietuviška (KTU) versija – 2011
Tomas Blažauskas, Eimutis Karčiauskas
Greenfootas: kitoks mokymasis
Greenfoot yra Java
karkasas , kuris padės
išmokti prorgamuoti.

Jūsų programa

Jis turi komponentus jūsų
gyvenimo palengvinimui.
Jūs galite matyti ir
sąveikauti su savo
programa.
Nepaisant to –
programuosite gryna
Java.

Greenfoot
Java
Krabų programavimas
Pamėginsime suprogramuoti krabų žaidimą.
1.

Paleiskite Greenfoot programą.

2.

Atidarykite ktu-crab scenarijų...



3.

Jis yra kataloge greenfootscenarios
Jei nepatinka ktu-crab, naudokite "crab”

Išsaugokite kaip "crabgame“:
Scenario -> Save a Copy As ...
"greenfootscenarioscrabgame"

4. Atidarykite "crabgame" scenarijų (ir uždarykite ku-crab)
Programos kūrimo planas
1 etapas
aiškinsimės kaip programuojama, naudojant Greenfoot
sukuriamas Krabas, kuris juda ir valgo Sliekus
sukuriamas Jūros Vėžys, kuris juda ir valgo Krabus
2 etapas
valdyti klaviatūrą (kad galėtume žaisti)
ir pridėti garsus
3 etapas
veikėjų animacija
taškų lenta

po 3 etapo
Patarimai tapti dar
kūrybiškesniu
Patyrinėkite elgesį patys
Naudokite crabgame scenarijų.
1. Sukurkite naują Krabą (new Crab).


Dešiniu mygtuku spustelkite Crab.



Parinkite "new Crab( )".



Padėkite krabą į krabų “pasaulį” kairėje.

2. Dešiniu mygtuku spustelkite ant Krabo.
3. Kokią elgseną turi Krabas?
4. Kokią elgseną paveldi Krabas iš Animal
klasės?
Krabų žaidimas
Krabo objektas sukurtas iš Krabo klasės

Čia yra
“klasės"

Dešinys
mygtukas
naujo krabo
sukūrimui
Suteikite krabui judėjimą ir
pasisukimą


Dešiniu mygtuku spustelkite krabą...
inherited from Animal > move( )



Dar kartą iškvieskite meniu ir...
inherited from Animal > turn( int angle )

Veikia!


Dabar pasirinkite "act( )" Krabo metodą.
act( ) yra Krabo klasės dalis.



Kas atsitinka?

... Nieko neįvyksta.
Krabo elgsena


move( ) ir turn( ) yra krabo
elgsenos dalis (metodai).



act( ) yra kita elgsenos dalis.



Elgsena apibrėžiama metodais,
parašytais Java kalba.

Dabar rašysite Java kodą act( ) elgsenai.
Kodėl "act()" yra svarbus
act( ) yra Greenfoot "run“ (vykdyti) scenarijaus dalis
Mes spaudžiame

Greenfoot iškviečia act() metodą
pasaulio (world ) objektui ir
kiekvienam veikėjui (actor)
vieną kartą.

Kai spaudžiame
Greenfoot liepia pasauliui ir
kiekvienam veikėjui vykdyti
act( ) vėl ir vėl ir vėl...
Paredaguokite Krabo act( ) medotą
Pakeiskite act( ) taip, kad jis lieptų krabui judėti.
1.

Redaguojame krabo programą:
a)
b)

2.

Dešiniu mygtuku ant Crab klasės
pasirinkite Open editor

Koreguokite act( ) metodą tokiu būdu:

public void act( )
{
move();
}
Krabas: act( )







Spauskite "compile"
Krabo klasės sukompiliavimui.
Uždarykite redaktoriaus langą
(naujoje versijoje tai nebūtina)

Sukurkite naują krabą.
Spauskite ">Act".
Spauskite "►Run" tam kad
iškviesti act() daug kartų.
Protingesnis krabas


Kai paspaudžiate ">Run", kas atsitinka?

Liūdna – atsimušęs į sieną, užstringa 


Reikia krabui įkrėsti proto.

Tarkime, pradžioje būtų gerai tokia elgsena:

move
Jei esate pasaulio krašte,
tuomet pasisukite 15 laipsnių
atWorldEdge( )
Animal (gyvūnas) turi metodą, pavadintą:
atWorldEdge( ).
Ką jis daro?
1) Padėkite krabą į pasaulio centrą. Dešiniu mygtuku
parinkite:
Inherited from Animal -> atWorldEdge()

Kokia reikšmė?
2) Pajudinkite krabą į pasaulio kraštą.
Dar kartą panaudokite
atWorldEdge().
Kokia reikšmė?
Naudokite atWorldEdge Krabo kode


Atidarykite Crab klasę redaktoriuje



Pakeiskite "act()" metodą šitaip:

public void act()
{
// atlieka vieną judesio elementą
move();
// jei pasaulio krašte - pasisukti
if ( atWorldEdge() ) turn( 15 );
}

Bus tiesa ("true“), jei krabas yra
pasaulio krašte

Sukompiliuokite
 Uždarykite redaktorių
Turite rašyti tiksliai taip kaip pateikta.
 Sukurkite naują krabą ir paleiskite (Run)

Kiekvienas Objektas turi savo žinias
 Naudokite

"new Crab( )" sukuriant 3 krabus.
 Pasukite kiekvieną krabą – padarykite kiekvieną krabą
skirtingą.
 Spauskite "►Run".
 Kiekvienas Krabo objektas elgiasi skirtingai.
Kiekvienas
turn(-45)
krabas turi
skirtingas
atributų
reikšmes.
turn(-90)
Taigi, jie
elgiasi
skirtingai.
Krabai išalko...
Reikia pašerti krabus kokiu nors maistu.
Sukurkime naują objekto “tipą" pavadintą slieku (Worm).
1.

Dešiniu mygtuku spauskite Animal ir pasirinkite "New
subclass..."

2.

Pavadinkite Worm

3.

Parinkite jam paveiksliuką.
Worm yra Klasė
Ką tik sukūrėte naują klasę "class" pavadintą Worm.
Sliekas (Worm) taip pat yra gyvūnas (Animal).
Dabar galime sukurti Worm objektus.
Pridėkite Worm objektų į pasaulį
1. Dešiniu mygtuku ant Worm pasirinkite "new Worm( )"
2. Kad greičiau sukurti daug sliekų:
 Parinkite Worm klasę
 Įspauskite SHIFT mygtuką ir dėliokite krabų
pasaulyje.
3. Padarykite krabą objektu.
4. ►Run
Kas atsitinka?
Išmokykite krabą suvalgyti slieką


užveskite krabą ant slieko



Dešiniu mygtuku ant krabo ir
inherited from Animal -> eat( Class cls )



įrašykite Worm.class (tipas daikto kurį norime valgyti).
Suprogramuokime krabą valgyti sliekus
Paredaguokite krabo programą (ir vėl)...
new act() elgseną:
act( )

move
Jei matote slieką,
suvalgykite slieką
kitaip jei esate pasaulio krašte,
pasisukite 15 laipsnių
Paredaguokite krabo klasę (redaktoriuje)


Pakeiskite "act()" metodą šitaip:

public void act()
{
move( );
// jei krabas mato valgomą objektą...
if ( canSee( Worm.class ) )
eat( Worm.class );
// jei pasaulio krašte - pasisukite
else if ( atWorldEdge() )
turn( 15 );
}
(1) Sukompiliuokite. (2) uždarykite redaktorių. |
(3) Išmėginkite scenarijų.
Objektų išdėliojimas krabų pasaulyje
Tarkime, mes norime turėti jau išdėstytą krabų pasaulį,
kiekvieną kartą paleisdami jį.
 Pridėkite

populate metodą krabų pasauliui tam, kad
sukurti objektus:

populate( )
sukurti keletą sliekų
sukurti krabą
išdėstyti pasaulyje (atsitiktinai)
crabWorld.addObject( )


CrabWorld turi metodą pavadintą addObject( ).



Jis turi 1 parametrą: veikėją, kurį norime pridėti.



addObject() padeda objektą atsitiktinėje vietoje.



Išmėginkite!

new Crab( )
Daugeli objektų įdėjimas automatiškai
Tikslas: Realizuoti populate metodą pridedant daugybę
sliekų ir vieną krabą.
Redaguokite CrabWorld klasę, joje įrašykite:
public void populate( )
{
// create worms
addObject( new Worm() );
addObject( new Worm() );
...
// create one crab, too
addObject( new Crab() );
}
Patikrinkite populate metodą
1.

Dešiniu meniu krabų pasaulyje iškvieskite meniu

2.

choose populate()

3.

►Run
Tegul pasaulis populate()’inasi pats


populate( ) yra naudingas, bet mes vis dar turime
iškviesti jį per meniu.



Mes norime daugintis (populate) patys ;-)

Kaip?
Kvieskite populate() metodą CrabWorld
viduje
Kiekviena klasė specialų metodą, vadinamą konstruktoriumi.
Konkstruktorius iškviečiamas visada, kai objektas sukuriamas.
Pridėkite populate() metodą CrabWorld konstruktoriui.
1. Paredaguokite CrabWorld klasę.

Čia yra
2. Pakeiskite "public CrabWorld()" tokiu būdu: konstruktorius
3. Pridėkite "populate();"
4. Sukompiliuokite ir
uždarykite redaktorių.

public CrabWorld()
{
super(500, 400, 1);
setBackground("sand.jpg");
populate( );
}
Geriau! Krabų pasaulis pats susikuria


Kiekvieną kartą kai “išvalome" (Reset) žaidimą,
Greenfoot sukuria naują krabų pasaulį.



CrabWorld konstruktorius iškviečią populate( ).

1. Reset sukuria naują
krabų pasaulį.
2. Java iškviečia CrabWorld
konstruktorių.
3. Konkstruktorius iškviečia
populate( ).
Apibendrinimai: Objektiškai –
orientuotos prorgamos
Objektiškai orientuotose
programose:
programa susideda iš objektų
 objektai žino būsenas ir

atlieka veiksmus (elgsena)
 objektai gali sąveikauti.
 klasė apibrėžia objektų tipą

Kiekvienas daiktas yra
objektas,
Net ir pasaulis yra objektas
Apibendrinimai: Objektai ir klasės
Klasė yra objekto tipo pavyzdys (šablonas).
Klasė apibrėžia objektų elgseną ir atributus (ką objektai
žino).
Objektai yra klasių egzemplioriai (instances).

Krabų objektai yra
konkretūs gyvūnai

Krabo klasė yra
šablonas
Apibendrinimai: Kas yra klasė?


Klasė apibrėžia (būsimų) objektų atributus
(charakteristikas) ir metodus.



Klasė yra aprašoma programavimo kalba tokia kaip
Java.

public class Crab extends Animal {
public void act() {
move( );
// if you see a Worm then eat it
if ( canSee( Worm.class ) )
eat( Worm.class );
// if at edge of world, then turn
else if ( atWorldEdge() )
turn( 15 );
}
...
Apibendrinimai: Java naudojimas


Krabo klasės išeities kodas yra faile Crab.java.



Pakeiskite Krabo kodą, naudodami redaktorių.



Pakeitus išeities kodą, turite sukompiliuoti jį prieš
naudodami.



Kompiliatorius išverčia Java tekstus į “baitkodą".



Jei yra klaidų, kompiliatorius rodys klaidos pranešimą.



Sukompiliuotas “baitkodas" yra faile Crab.class.
Neredaguokite jo – tai beprasmiška.



Java Virtuali Mašina (JVM) vykdo baitkodą.
Užduotys savarankiškam darbui


Įveskite į krabų pasaulį naują veikėją (vėžį,
delfiną, žuvį, ... ), kurie judėtų ne tiesiai, o ratu.

Patarimas – metode move() kombinuokite super.move()
ir turn(a) komandas bei tinkamai parinkite kampus.
 Sukurkite naujus pasaulius:
pavyzdžiui panaudokite povandeninius rūmus, į kuriuos
įplaukęs krabas žūsta (rūmai suvalgo krabą  );
raketų, skriejančių tarp meteoritų, pasaulį;
bitučių, skaidančių tarp gėlių, pasaulį;
ir panašiai ...

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

GreenFoot 1 dalis

  • 1. 1 dalis: Programavimas Greenfoot’u Ar įsivaizduojate, kas tai yra klasės ir objektai? Tai išsiaiškinsime tiesiog parašydami žaidimą! James Brucker Kasetsart University 2010 Lietuviška (KTU) versija – 2011 Tomas Blažauskas, Eimutis Karčiauskas
  • 2. Greenfootas: kitoks mokymasis Greenfoot yra Java karkasas , kuris padės išmokti prorgamuoti. Jūsų programa Jis turi komponentus jūsų gyvenimo palengvinimui. Jūs galite matyti ir sąveikauti su savo programa. Nepaisant to – programuosite gryna Java. Greenfoot Java
  • 3. Krabų programavimas Pamėginsime suprogramuoti krabų žaidimą. 1. Paleiskite Greenfoot programą. 2. Atidarykite ktu-crab scenarijų...   3. Jis yra kataloge greenfootscenarios Jei nepatinka ktu-crab, naudokite "crab” Išsaugokite kaip "crabgame“: Scenario -> Save a Copy As ... "greenfootscenarioscrabgame" 4. Atidarykite "crabgame" scenarijų (ir uždarykite ku-crab)
  • 4. Programos kūrimo planas 1 etapas aiškinsimės kaip programuojama, naudojant Greenfoot sukuriamas Krabas, kuris juda ir valgo Sliekus sukuriamas Jūros Vėžys, kuris juda ir valgo Krabus 2 etapas valdyti klaviatūrą (kad galėtume žaisti) ir pridėti garsus 3 etapas veikėjų animacija taškų lenta po 3 etapo Patarimai tapti dar kūrybiškesniu
  • 5. Patyrinėkite elgesį patys Naudokite crabgame scenarijų. 1. Sukurkite naują Krabą (new Crab).  Dešiniu mygtuku spustelkite Crab.  Parinkite "new Crab( )".  Padėkite krabą į krabų “pasaulį” kairėje. 2. Dešiniu mygtuku spustelkite ant Krabo. 3. Kokią elgseną turi Krabas? 4. Kokią elgseną paveldi Krabas iš Animal klasės?
  • 6. Krabų žaidimas Krabo objektas sukurtas iš Krabo klasės Čia yra “klasės" Dešinys mygtukas naujo krabo sukūrimui
  • 7. Suteikite krabui judėjimą ir pasisukimą  Dešiniu mygtuku spustelkite krabą... inherited from Animal > move( )  Dar kartą iškvieskite meniu ir... inherited from Animal > turn( int angle ) Veikia!  Dabar pasirinkite "act( )" Krabo metodą. act( ) yra Krabo klasės dalis.  Kas atsitinka? ... Nieko neįvyksta.
  • 8. Krabo elgsena  move( ) ir turn( ) yra krabo elgsenos dalis (metodai).  act( ) yra kita elgsenos dalis.  Elgsena apibrėžiama metodais, parašytais Java kalba. Dabar rašysite Java kodą act( ) elgsenai.
  • 9. Kodėl "act()" yra svarbus act( ) yra Greenfoot "run“ (vykdyti) scenarijaus dalis Mes spaudžiame Greenfoot iškviečia act() metodą pasaulio (world ) objektui ir kiekvienam veikėjui (actor) vieną kartą. Kai spaudžiame Greenfoot liepia pasauliui ir kiekvienam veikėjui vykdyti act( ) vėl ir vėl ir vėl...
  • 10. Paredaguokite Krabo act( ) medotą Pakeiskite act( ) taip, kad jis lieptų krabui judėti. 1. Redaguojame krabo programą: a) b) 2. Dešiniu mygtuku ant Crab klasės pasirinkite Open editor Koreguokite act( ) metodą tokiu būdu: public void act( ) { move(); }
  • 11. Krabas: act( )      Spauskite "compile" Krabo klasės sukompiliavimui. Uždarykite redaktoriaus langą (naujoje versijoje tai nebūtina) Sukurkite naują krabą. Spauskite ">Act". Spauskite "►Run" tam kad iškviesti act() daug kartų.
  • 12. Protingesnis krabas  Kai paspaudžiate ">Run", kas atsitinka? Liūdna – atsimušęs į sieną, užstringa   Reikia krabui įkrėsti proto. Tarkime, pradžioje būtų gerai tokia elgsena: move Jei esate pasaulio krašte, tuomet pasisukite 15 laipsnių
  • 13. atWorldEdge( ) Animal (gyvūnas) turi metodą, pavadintą: atWorldEdge( ). Ką jis daro? 1) Padėkite krabą į pasaulio centrą. Dešiniu mygtuku parinkite: Inherited from Animal -> atWorldEdge() Kokia reikšmė? 2) Pajudinkite krabą į pasaulio kraštą. Dar kartą panaudokite atWorldEdge(). Kokia reikšmė?
  • 14. Naudokite atWorldEdge Krabo kode  Atidarykite Crab klasę redaktoriuje  Pakeiskite "act()" metodą šitaip: public void act() { // atlieka vieną judesio elementą move(); // jei pasaulio krašte - pasisukti if ( atWorldEdge() ) turn( 15 ); } Bus tiesa ("true“), jei krabas yra pasaulio krašte Sukompiliuokite  Uždarykite redaktorių Turite rašyti tiksliai taip kaip pateikta.  Sukurkite naują krabą ir paleiskite (Run) 
  • 15. Kiekvienas Objektas turi savo žinias  Naudokite "new Crab( )" sukuriant 3 krabus.  Pasukite kiekvieną krabą – padarykite kiekvieną krabą skirtingą.  Spauskite "►Run".  Kiekvienas Krabo objektas elgiasi skirtingai. Kiekvienas turn(-45) krabas turi skirtingas atributų reikšmes. turn(-90) Taigi, jie elgiasi skirtingai.
  • 16. Krabai išalko... Reikia pašerti krabus kokiu nors maistu. Sukurkime naują objekto “tipą" pavadintą slieku (Worm). 1. Dešiniu mygtuku spauskite Animal ir pasirinkite "New subclass..." 2. Pavadinkite Worm 3. Parinkite jam paveiksliuką.
  • 17. Worm yra Klasė Ką tik sukūrėte naują klasę "class" pavadintą Worm. Sliekas (Worm) taip pat yra gyvūnas (Animal). Dabar galime sukurti Worm objektus.
  • 18. Pridėkite Worm objektų į pasaulį 1. Dešiniu mygtuku ant Worm pasirinkite "new Worm( )" 2. Kad greičiau sukurti daug sliekų:  Parinkite Worm klasę  Įspauskite SHIFT mygtuką ir dėliokite krabų pasaulyje. 3. Padarykite krabą objektu. 4. ►Run Kas atsitinka?
  • 19. Išmokykite krabą suvalgyti slieką  užveskite krabą ant slieko  Dešiniu mygtuku ant krabo ir inherited from Animal -> eat( Class cls )  įrašykite Worm.class (tipas daikto kurį norime valgyti).
  • 20. Suprogramuokime krabą valgyti sliekus Paredaguokite krabo programą (ir vėl)... new act() elgseną: act( ) move Jei matote slieką, suvalgykite slieką kitaip jei esate pasaulio krašte, pasisukite 15 laipsnių
  • 21. Paredaguokite krabo klasę (redaktoriuje)  Pakeiskite "act()" metodą šitaip: public void act() { move( ); // jei krabas mato valgomą objektą... if ( canSee( Worm.class ) ) eat( Worm.class ); // jei pasaulio krašte - pasisukite else if ( atWorldEdge() ) turn( 15 ); } (1) Sukompiliuokite. (2) uždarykite redaktorių. | (3) Išmėginkite scenarijų.
  • 22. Objektų išdėliojimas krabų pasaulyje Tarkime, mes norime turėti jau išdėstytą krabų pasaulį, kiekvieną kartą paleisdami jį.  Pridėkite populate metodą krabų pasauliui tam, kad sukurti objektus: populate( ) sukurti keletą sliekų sukurti krabą išdėstyti pasaulyje (atsitiktinai)
  • 23. crabWorld.addObject( )  CrabWorld turi metodą pavadintą addObject( ).  Jis turi 1 parametrą: veikėją, kurį norime pridėti.  addObject() padeda objektą atsitiktinėje vietoje.  Išmėginkite! new Crab( )
  • 24. Daugeli objektų įdėjimas automatiškai Tikslas: Realizuoti populate metodą pridedant daugybę sliekų ir vieną krabą. Redaguokite CrabWorld klasę, joje įrašykite: public void populate( ) { // create worms addObject( new Worm() ); addObject( new Worm() ); ... // create one crab, too addObject( new Crab() ); }
  • 25. Patikrinkite populate metodą 1. Dešiniu meniu krabų pasaulyje iškvieskite meniu 2. choose populate() 3. ►Run
  • 26. Tegul pasaulis populate()’inasi pats  populate( ) yra naudingas, bet mes vis dar turime iškviesti jį per meniu.  Mes norime daugintis (populate) patys ;-) Kaip?
  • 27. Kvieskite populate() metodą CrabWorld viduje Kiekviena klasė specialų metodą, vadinamą konstruktoriumi. Konkstruktorius iškviečiamas visada, kai objektas sukuriamas. Pridėkite populate() metodą CrabWorld konstruktoriui. 1. Paredaguokite CrabWorld klasę. Čia yra 2. Pakeiskite "public CrabWorld()" tokiu būdu: konstruktorius 3. Pridėkite "populate();" 4. Sukompiliuokite ir uždarykite redaktorių. public CrabWorld() { super(500, 400, 1); setBackground("sand.jpg"); populate( ); }
  • 28. Geriau! Krabų pasaulis pats susikuria  Kiekvieną kartą kai “išvalome" (Reset) žaidimą, Greenfoot sukuria naują krabų pasaulį.  CrabWorld konstruktorius iškviečią populate( ). 1. Reset sukuria naują krabų pasaulį. 2. Java iškviečia CrabWorld konstruktorių. 3. Konkstruktorius iškviečia populate( ).
  • 29. Apibendrinimai: Objektiškai – orientuotos prorgamos Objektiškai orientuotose programose: programa susideda iš objektų  objektai žino būsenas ir atlieka veiksmus (elgsena)  objektai gali sąveikauti.  klasė apibrėžia objektų tipą Kiekvienas daiktas yra objektas, Net ir pasaulis yra objektas
  • 30. Apibendrinimai: Objektai ir klasės Klasė yra objekto tipo pavyzdys (šablonas). Klasė apibrėžia objektų elgseną ir atributus (ką objektai žino). Objektai yra klasių egzemplioriai (instances). Krabų objektai yra konkretūs gyvūnai Krabo klasė yra šablonas
  • 31. Apibendrinimai: Kas yra klasė?  Klasė apibrėžia (būsimų) objektų atributus (charakteristikas) ir metodus.  Klasė yra aprašoma programavimo kalba tokia kaip Java. public class Crab extends Animal { public void act() { move( ); // if you see a Worm then eat it if ( canSee( Worm.class ) ) eat( Worm.class ); // if at edge of world, then turn else if ( atWorldEdge() ) turn( 15 ); } ...
  • 32. Apibendrinimai: Java naudojimas  Krabo klasės išeities kodas yra faile Crab.java.  Pakeiskite Krabo kodą, naudodami redaktorių.  Pakeitus išeities kodą, turite sukompiliuoti jį prieš naudodami.  Kompiliatorius išverčia Java tekstus į “baitkodą".  Jei yra klaidų, kompiliatorius rodys klaidos pranešimą.  Sukompiliuotas “baitkodas" yra faile Crab.class. Neredaguokite jo – tai beprasmiška.  Java Virtuali Mašina (JVM) vykdo baitkodą.
  • 33. Užduotys savarankiškam darbui  Įveskite į krabų pasaulį naują veikėją (vėžį, delfiną, žuvį, ... ), kurie judėtų ne tiesiai, o ratu. Patarimas – metode move() kombinuokite super.move() ir turn(a) komandas bei tinkamai parinkite kampus.  Sukurkite naujus pasaulius: pavyzdžiui panaudokite povandeninius rūmus, į kuriuos įplaukęs krabas žūsta (rūmai suvalgo krabą  ); raketų, skriejančių tarp meteoritų, pasaulį; bitučių, skaidančių tarp gėlių, pasaulį; ir panašiai ...