Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

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

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Harjoitustyö. 1. Johdanto Tehtävä

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Toinen harjoitustyö. ASCII-grafiikkaa 2017

Toinen harjoitustyö. ASCII-grafiikkaa

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Ohjelmoinnin jatkokurssi, kurssikoe

Harjoitus 5 (viikko 48)

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

Harjoitus 2 (viikko 45)

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

Harjoitus 5 (viikko 41)

Mikä yhteyssuhde on?

Harjoitus 3 (viikko 39)

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

Harjoitus 6 (viikko 42)

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

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

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

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

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

9. Periytyminen Javassa 9.1

18. Abstraktit tietotyypit 18.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Listarakenne (ArrayList-luokka)

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

Harjoitus 4 (viikko 47)

dogs worlds_ugliest_dog.jpg

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

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

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

14. Poikkeukset 14.1

Olio-ohjelmointi Javalla

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

2. Olio-ohjelmoinista lyhyesti 2.1

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

Metodien tekeminen Javalla

Harjoitus 6 (viikko 42)

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

4. Olio-ohjelmoinista lyhyesti 4.1

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

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

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

9. Periytyminen Javassa 9.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

14. Poikkeukset 14.1

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

15. Ohjelmoinnin tekniikkaa 15.1

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

5. HelloWorld-ohjelma 5.1

Java-kielen perusteet

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

15. Ohjelmoinnin tekniikkaa 15.1

Ohjelmoinnin perusteet, kurssikoe

Pakkauksen kokoaminen

Oliot viestivät metodeja kutsuen

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Interaktiivinen tarinankerronta

7. Oliot ja viitteet 7.1

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

Java kahdessa tunnissa. Jyry Suvilehto

7. Näytölle tulostaminen 7.1

Ohjelmointi Tunnilla 1 (5) Viikko 7 tuntitehtäviä: metodien tekeminen Javalla

Jypelin käyttöohjeet» Ruutukentän luominen

Javan perusteita. Janne Käki

Ohjelmointiharjoituksia Arduino-ympäristössä

Harjoitus 1 (viikko 44)

19. Olio-ohjelmointia Javalla 19.1

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

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

Kurssiesite Lausekielinen ohjelmointi Syksy Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

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

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Ohjelmoinnin peruskurssi Y1

16. Javan omat luokat 16.1

Taulukot. Jukka Harju, Jukka Juslin

ITKP102 Ohjelmointi 1 (6 op)

TIETORAKENTEET JA ALGORITMIT

20. Javan omat luokat 20.1

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

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät Olio-ohjelmoinnin perusteet (5 op) Tavoitteena

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

opiskelijan ohje - kirjautuminen

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

Ohjelmoinnin perusteet Y Python

Sisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2

opiskelijan ohje - kirjautuminen

7/20: Paketti kasassa ensimmäistä kertaa

ITKP102 Ohjelmointi 1 (6 op)

Mitä on periytyminen?

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Pakkauksen kokoaminen

Transkriptio:

Harjoitustyö 1

Harjoitustyö Tehtävä: ohjelmoi Java-kielellä keskustelualuetta simuloiva olioperustainen ohjelma (Simple Oope Board, S.O.B). Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen. Työ tehdään pääosin itse. Ideoita voi vaihtaa koodia ei. Henkilökohtaista ohjausta mikroluokissa. Ohjaajilta voi kysyä sähköpostilla. Palautus WETO-järjestelmään noin kahden kuukauden kuluttua. Testaus automaattisesti julkisilla ja salaisilla testeillä. Palautustakaraja on perjantai 27.4. Olio-ohjelmoinnin perusteet Kevät 2018 Jorma Laurikkala 2

Harjoitustyö Keskiviikkona 11.4. on välipalautuspiste, johon mennessä täytyy palauttaa WETOon osa harjoitustyön koodista (ainakin luokkahierarkia, oma lista ja luokka viesteille). WETO auttaa opettajaa tarkistamalla koodia automaattisesti. Tarkka tehtävänanto julki tällä viikolla. Varaa työlle aikaa, aloita ajoissa, tee työtä säännöllisesti ja käy ohjauksissa jo niiden alkuvaiheessa, jos tarvitset enemmän apua. Olio-ohjelmoinnin perusteet Kevät 2018 Jorma Laurikkala 3

Keskustelualue Vaikka harjoitustyön keskustelualueella voi puhua vain itsensä kanssa, muistuttaa harjoitustyö jossain määrin oikeaa keskustelualuetta. Alueella on keskusteluketjuja (lankoja), jotka koostuvat viesteistä. Ketjun viesti voi olla uusi kommentti tai vastaus aikaisempaan viestiin. Viestiin voi liittää kuva- tai videotiedoston. Tiedostokaan eivät ole oikeita, vaan kuvien ja videoiden keskeisiä tietoja sisältäviä tekstitiedostoja. Keskustelijat ovat nimettömiä. Ohjelmalla on kankea tekstipohjainen käyttöliittymä viestit ja keskustelut yksilöidään juoksevan tunnisteluvun avulla ja ohjelmaa ohjataan komennoin. Olio-ohjelmoinnin perusteet Kevät 2018 Jorma Laurikkala 4

Keskustelualue Welcome to S.O.B. >add What is the best chemical element? And why it is gold? >new Nothing compares to gold. &au.gif >catalog #1 What is the best chemical element? And why it is gold? (1 messages) >reply 1 Gold is for pleps. >reply 1 Platinum is the best element! &platinum.jpg >tree = == #1 What is the best chemical element? And why it is gold? (3 messages) === #1 Nothing compares to gold. (au.gif 307200 B 640x480) #2 Gold is for pleps. #3 Platinum is the best element! (platinum.jpg 73136 B 1000x800) >new Hydrogen is the number one. Olio-ohjelmoinnin perusteet Kevät 2018 Jorma Laurikkala 5

Ohjelman rakenne Viestit organisoidaan Viesti-luokan olioiden ketjuiksi siten, että kukin viesti, joka ei ole vastaus toiseen viestiin muodostaa oksan, johon kaikki kyseisen viestin vastaukset liitetään. Yksittäisestä viestistä x on a) viite viestin vastaamaan viestiin (null, jos ei vastattu), b) viitteet kaikkiin viestiin x tulleisiin vastauksiin ja c) viite tiedostoon (null, jos ei tiedostoa). Vastausten viitteet säilötään omalle listalle, joka on tyhjä (ei null), jos viestiin ei ole vastauksia. Oksat ovat viestiketjun omistamalla omalla listalla tunnuksen määräämässä nousevassa järjestyksessä. Viestiketjut ovat puolestaan keskustelualueen omistamalla omalla listalla tunnuksensa mukaisessa järjestyksessä. Olio-ohjelmoinnin perusteet Kevät 2018 Jorma Laurikkala 6

Ohjelman rakenne Viestialueen lista säilöö viestiketjuihin liittyvät viitteet. #2 For testing purposes only Ensimmäinen ketju, jonka listalta on viitteet ketjun oksaviesteihin. Toisen ketjun lista on tyhjä, koska ketjussa ei ole vielä viestejä. #1 What is the best chemical element? null #4 Hydrogen is the number one. #2 Gold is for pleps. Oksaviestiin #1 on kaksi vastausta. Vastausviestit #2 ja #3 viittaavat oksaviestiin ja oksaviestin listalta on puolestaan viitteet vastauksiin. Oksaviesti ei vastaa mihinkään viestiin. null null #1 Nothing compares to gold. #3 Platinum is the best element! au.gif 307200 B 640x480 Viestit #1 ja #3 liittyvät viitteen kautta tiedostoolioihinsa. Viesteihin #2 ja #4 ei ole liitetty tiedostoja. Oksaviestin #4 lista on tyhjä, koska siihen ei ole vastauksia. Oksaviesti ei vastaa mihinkään viestiin. null platinum.jpg 73136 B 1000x800 Olio-ohjelmoinnin perusteet Kevät 2018 Jorma Laurikkala 7

Ohjelman rakenne Viesti-luokassa on Viesti-, OmaLista- ja Tiedosto-tyyppisten tyyppisten attribuuttien lisäksi attribuutit viestin tunnisteelle (int, >0) ja tekstille (String, vähintään yksi merkki). Kapseloi Viesti-luokka ja tee sille ainakin neliparametrinen rakentaja, jolle annetaan parametreina viestin tunniste (int), teksti (String), viite vastattuun viestiin (Viesti) ja viite tiedostoolioon (Tiedosto). Tiedosto- ja Viesti-viitteille sallitaan null-arvo. Vastauksiin liittyvät viitteet säilövä OmaLista-olio luodaan Viesti-luokan rakentajassa. Luokan on toteutettava opettajan antama rajapinta. Olio-ohjelmoinnin perusteet Kevät 2018 Jorma Laurikkala 8

Ohjelman rakenne Tiedostoja mallinnetaan abstraktilla yliluokalla Tiedosto- ja konkreettisilla Kuva- ja Video-aliluokilla. Tiedostoille yhteisiä tietoja ovat nimi (String) ja koko tavuina (int, > 0). Kuvan omat tiedot ovat leveys ja korkeus (int, > 0). Videon oma tieto on sen pituus sekunteina (double, > 0). Tee luokille parametrilliset rakentajat, aksessorit ja korvaa tostring-metodi ketjuttaen. Sijoita luokkahierarkia tiedostot-nimiseen pakkaukseen. Tiedoston tiedot ovat yhdellä riviltä tekstitiedostossa. Esimerkiksi au.gif-tiedoston sisältö on merkkijono "Kuva 307200 640 480". Olio-ohjelmoinnin perusteet Kevät 2018 Jorma Laurikkala 9

Ohjelman rakenne Peri LinkitettyLista-luokasta OmaLista-luokka. Listaan on kirjoitettava ainakin opettajan antamassa rajapinnassa määritellyt uudet listaoperaatiot, joita on käytettävä ohjelmassa. Operaatioiden on oltava puhtaita : niissä ei saa esiintyä esimerkiksi Viesti-tyyppiä. OmaLista-luokkaa käytetään Viesti-luokassa ja muissa luokissa, joissa tarvitaan säiliö viitteille. Tee oma luokka käyttöliittymälle ja tee erillinen main-metodin sisältävä ajoluokka. Kaikki käyttäjän antamat tiedot luetaan käyttöliittymässä. Pääsilmukan luonteva paikka on käyttöliittymän luokka. Sijoita mahdollisimman vähän ohjelman logiikasta vastaavaa koodia käyttöliittymään. Esimerkiksi ketjun hallinnoinnin on oltava muualla. Olio-ohjelmoinnin perusteet Kevät 2018 Jorma Laurikkala 10

Tulkin komennot add: lisää alueelle uuden viestiketjun. catalog: listaa alueen viestiketjut. select: asettaa tunnisteella yksilöidyn viestiketjun aktiiviseksi. new: tekee uuden viesti, joka ei ole vastaus mihinkään aikaisempaan viestiin. Valinnaisena tietona on viestiin liitettävän tiedoston nimi. reply: vastaa tunnisteella yksilöityyn viestiin. Valinnaisena tietona on viestiin liitettävän tiedoston nimi. tree: tulostaa ketjun viestit puuna. list: tulostaa ketjun viestit listana tunnuksen mukaan nousevaan järjestetykseen järjestettynä listana. head: tulostaa parametrina annetun määrä vanhimpia viestejä tunnuksen mukaan järjestettynä listana. Olio-ohjelmoinnin perusteet Kevät 2018 Jorma Laurikkala 11

Tulkin komennot tail: tulostaa parametrina annetun määrä uusimpia viestejä tunnuksen mukaan järjestettynä listana. empty: tyhjentää tunnisteella yksilöidyn viestin. find: hakee annettua merkkijonoa kaikista ketjun viesteistä ja tulostaa löydetyt viestit tunnuksen mukaan järjestettynä listana. exit: lopettaa ohjelman. Muuta: Pienet ja isot kirjaimet katsotaan eri merkeiksi. Tiedostojen nimissä sallitaan vain tietyt merkit. Kaikkiin virheisiin reagoidaan tulostamalla merkkijono Error! Olio-ohjelmoinnin perusteet Kevät 2018 Jorma Laurikkala 12

Esimerkkiajo Welcome to S.O.B. >add What is the best chemical element? And why it is gold? >new Nothing compares to gold. &au.gif >catalog #1 What is the best chemical element? And why it is gold? (1 messages) >reply 1 Gold is for pleps. >reply 1 Platinum is the best element! &platinum.jpg >tree = == #1 What is the best chemical element? And why it is gold? (3 messages) === #1 Nothing compares to gold. (au.gif 307200 B 640x480) #2 Gold is for pleps. #3 Platinum is the best element! (platinum.jpg 73136 B 1000x800) >new Hydrogen is the number one. Olio-ohjelmoinnin perusteet Kevät 2018 Jorma Laurikkala 13

Esimerkkiajo >reply 2 You mispelled plebs. &picard_facepalm.webm >tree = == #1 What is the best chemical element? And why it is gold? (5 messages) === #1 Nothing compares to gold. (au.gif 307200 B 640x480) #2 Gold is for pleps. #5 You mispelled plebs. (picard_facepalm.webm 1048576 B 10.5 s) #3 Platinum is the best element! (platinum.jpg 73136 B 1000x800) #4 Hydrogen is the number one. >empty 2 >list = == #1 What is the best chemical element? And why it is gold? (5 messages) === #1 Nothing compares to gold. (au.gif 307200 B 640x480) #2 ---------- #3 Platinum is the best element! (platinum.jpg 73136 B 1000x800) #4 Hydrogen is the number one. #5 You mispelled plebs. (picard_facepalm.webm 1048576 B 10.5 s) Olio-ohjelmoinnin perusteet Kevät 2018 Jorma Laurikkala 14

Esimerkkiajo >head 1 #1 Nothing compares to gold. (au.gif 307200 B 640x480) >tail 1 #5 You mispelled plebs. (picard_facepalm.webm 1048576 B 10.5 s) >find gif #1 Nothing compares to gold. (au.gif 307200 B 640x480) >add For testing purposes only >catalog #1 What is the best chemical element? And why it is gold? (5 messages) #2 For testing purposes only (0 messages) >select 2 >new testing, testing, 1, 2, 3 >new icicles >tree = == #2 For testing purposes only (2 messages) === #6 testing, testing, 1, 2, 3 #7 icicles Olio-ohjelmoinnin perusteet Kevät 2018 Jorma Laurikkala 15

Esimerkkiajo >select 1 >reply 5 you misspelled mispelled >tree = == #1 What is the best chemical element? And why it is gold? (6 messages) === #1 Nothing compares to gold. (au.gif 307200 B 640x480) #2 ---------- #5 You mispelled plebs. (picard_facepalm.webm 1048576 B 10.5 s) #8 you mispelled misspelled #3 Platinum is the best element! (platinum.jpg 73136 B 1000x800) #4 Hydrogen is the number one. >exit Bye! See you soon. Olio-ohjelmoinnin perusteet Kevät 2018 Jorma Laurikkala 16