CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

Samankaltaiset tiedostot
Rajapinta (interface)

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Metodien tekeminen Javalla

Ohjelmointi 2 / 2010 Välikoe / 26.3

ITKP102 Ohjelmointi 1 (6 op)

1. Mitä tehdään ensiksi?

Ohjelmoinnin jatkokurssi, kurssikoe

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Olio-ohjelmointi Javalla

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Listarakenne (ArrayList-luokka)

Sopimuspohjainen olio-ohjelmointi

Javan perusteita. Janne Käki

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Java-API, rajapinnat, poikkeukset, UML,...

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

ITKP102 Ohjelmointi 1 (6 op)

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

7/20: Paketti kasassa ensimmäistä kertaa

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

1. Omat operaatiot 1.1

ITKP102 Ohjelmointi 1 (6 op)

16. Javan omat luokat 16.1

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Mikä yhteyssuhde on?

18. Abstraktit tietotyypit 18.1

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

17. Javan omat luokat 17.1

Jypelin käyttöohjeet» Miten voin liittää törmäyksiin tapahtumia?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

1 Tehtävän kuvaus ja analysointi

Java-kielen perusteet

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet

Sisältö. 22. Taulukot. Yleistä. Yleistä

4. Luokan testaus ja käyttö olion kautta 4.1

Taulukot. Jukka Harju, Jukka Juslin

P e d a c o d e ohjelmointikoulutus verkossa

Java kahdessa tunnissa. Jyry Suvilehto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Hakemistojen sisällöt säilötään linkitetyille listalle.

Luokan muodostimet (Constructors)

Ohjelmoinnin perusteet, syksy 2006

Ohjelmointi 2, välikoe

Java-kielen perusteet

Ohjelmointi 1 Taulukot ja merkkijonot

Lista luokan sisällä

Sisältö. 2. Taulukot. Yleistä. Yleistä

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Ohjelmoinnin perusteet, kurssikoe

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

14. Poikkeukset 14.1

Sisällys. 15. Lohkot. Lohkot. Lohkot

UML ja luokkien väliset suhteet

58131 Tietorakenteet ja algoritmit (syksy 2015)

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

4. Olio-ohjelmoinista lyhyesti 4.1

Java-kielen perusteet

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

14. Poikkeukset 14.1

Ohjelmoinnin perusteet Y Python

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

public static void main (String [] args)

Olio-ohjelmointi Syntaksikokoelma

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

Ohjelmointiharjoituksia Arduino-ympäristössä

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

9. Periytyminen Javassa 9.1

Ohjelmistojen mallintaminen, sekvenssikaaviot

17. Javan omat luokat 17.1

Zeon PDF Driver Trial

15. Ohjelmoinnin tekniikkaa 15.1

ITKP102 Ohjelmointi 1 (6 op)

7. Näytölle tulostaminen 7.1

Eclipse ja JUnit-ohjelmoijatestit

12. Näppäimistöltä lukeminen 12.1

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi

11. Javan valintarakenteet 11.1

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Loppukurssin järjestelyt

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

M. Merikanto 2012 XML. Merkkauskieli, osa 2

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Venekilpailu! Esteiden väistely ja hahmon ohjaaminen

Transkriptio:

CODEONLINE Monni Oo- ja Java-harjoituksia Version 1.0

Revision History Date Version Description Author 25.10.2000 1.0 Initial version Juha Johansson Inspection History Date Version Inspectors Approved by Public Monni 2000 Page 2 (5)

Table of Contents 1. JOHDANTO...4 2. TYÖKALUT JA MENETELMÄT...4 2.1 KEHITYSTYÖKALUT...4 2.2 JAVA API...4 3. TEHTÄVÄ: PIENI PELIHALLI...4 Public Monni 2000 Page 3 (5)

Oo- ja Java-harjoituksia 1. Johdanto Tähän dokumenttiin kerätään pienet ohjelmointitehtävät, vinkit ja linkit, joiden avulla Monniprojektissa voi opiskella tai kerrata Java-kieltä ja olio-ohjelmointia. 2. Työkalut ja menetelmät 2.1 Kehitystyökalut Koetetaan keksiä, mistä saisi koteihin tavallisia tekstieditoreita ja komentoriviltä kutsuttavaa javakääntäjää paremman kehitysympäristön. Codeonlinessä olevaa ryhmän käyttöön varattua konetta voi mennä käyttämään, kun Mikko tai Kimmo on paikalla. 2.2 Java API Monni-projektissa käytetään Java-kielen yleisen (ja vähän laajennetunkin) sovellusohjelmointirajapinnan versiota 1.3, joka sisältyy Java 2 Platformiin (mikä hitto se sitten onkin). Seuraavasta linkistä löytyy koko API; hyödyllinen niin sille joka tietää mitä luokkaa ja metodia etsii kuin toivottavasti myös sille, joka tietää vain millaiseen ongelmaan etsii valmista ratkaisua: http://java.sun.com/j2se/1.3/docs/api/index.html Muuta siihen liittyvää voi metsästää osoitteen http://java.sun.com/j2se/1.3/ alta. Vanhempi API, versio 1.2: http://java.sun.com/products/jdk/1.2/docs/api/index.html Enemmän linkkejä (eo. mukaan lukien) kerätään kotisivuille, lisäksi Juha pistää palvelimelle ainakin yhden kotiin vietävän ilmaisen Java-oppaan (HTML- tai PDF, englanniksi) ja kukaties Sunin tutorialeja. 3. Tehtävä: Pieni pelihalli Ohjelman toiminta: Ruudulle tulostetaan pelien 1 ja 2 nimet ja käyttäjä valitsee jomman kumman. Pelit ovat pieniä, yksinkertaisia (vaikka kivi-paperi-sakset, jätkänshakki, laivanupotus) eikä ikkunagrafiikkaa kaivata, mutta niissä on voitava kerätä pistesaldoa. Tutummaksi toivon mukaan tulevat näin mm. olioiden instantiointi, attribuutit ja niiden käsittely, metodit, rajapinnat, Javan perustietotyypit, syntaksin eroja C ja C++:aan nähden, java API, javadoc sekä poikkeuskäsittely. Työohje: 1. Tee pääohjelma luokkaan GameHall. Luokan alussa instantioidaan pelioliot kohdassa 3 määritellyistä peliluokista ja talletetaan ne indekseillä 1 ja 2 (tai A ja B) joko java.util.vector- tai java.util.hashtable-luokan olioon, joka tallettaa rajapinnan Game täyttäviä olioita. Ainakaan jos et tunne hajautustaulua (hash table), käytä vektoria. Tämän jälkeen mennään silmukkaan, jossa tulostetaan käyttäjälle pelien valintanumerot/kirjaimet ja niiden kuvaukset. Kuvaukset haetaan peliolioilta itseltään metodilla getdescription. Luokka java.lang.system auttaa näppis- ja ruutui/o:ssa. Kun käyttäjä valitsee pelin, pääsilmukka käynnistää sen metodista playgame. Pelin päättymisen jälkeen pääsilmukka hakee pelaajan pistesaldon pelioliosta metodilla getscore ja tulostaa sen ruudulle (vaikka kommenttien kera). Sitten silmukka alkaa alusta. Pelaaja voi aina valita pelin sijaan exit, jolloin ohjelma päättyy. 2. Tee rajapinta Game. Rajapinnassa pitää olla kolme metodia: void playgame(), String getdescription() ja int getscore(). Public Monni 2000 Page 4 (5)

Pelien 1 ja 2 pitää toteuttaa rajapinta Game, ts. niitä on voitava aina käyttää siellä missä viitataan Game-rajapintaan ja sen tarjoamiin toimintoihin (metodeihin). 2. Tee luokat CrissCrossGame ja BattleShipGame tai mitä pelejä vain haluat. Niiden täytyy toteuttaa rajapinta Game, joten niissä on oltava ainakin em. kolme luokan ulkopuolelle näkyvää metodia. Jotta Java-syntaksi tulee tutuksi, käytä molemmissa kontrollirakenteita (if else, case, while, jne.) eli syötteestä tai satunnaisuudesta riippuvia vaihtoehtoisia pelinkulkuja. Muuta: Kun playgame() kutsutaan pääohjelmasta (valintasilmukasta), peli käynnistyy, tekee mitä nyt haluatkin ja päätyttyään palaa pääohjelmaan ilman paluuarvoa. Attribuutissa score (tyyppi int) on tallessa päättyneen pelin pistesaalis. Käytä toisessa luokassa javan exceptionia. Poikkeus voidaan heittää vaikkapa käyttäjän antamasta sääntöjen vastaisesta syötteestä, ohjelman voi jossain vaiheessa peliä antaa vahingossa viitata taulukkoon yli sen määritellyn koon tms. Jos ei muuta, pelin pitää ainakin tässä virhetilanteessa keskeytyä siististi (graceful death) ja palata päävalikkoon. Kokeile omien luokkien määrittelyä ja perintää, jos viitsit/ehdit. Interfacet tulevat olemaan todella tärkeä javan piirre Monni-projektissa, koetetaan päästä yhtä harjoitusta tutummaksi niiden kanssa. Mikään kysymys ei ole liian yksinkertainen tai tyhmä kysyttäväksi vaikkapa Juhalta tai Kimmolta. Public Monni 2000 Page 5 (5)