Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Harjoitustyö.

Samankaltaiset esitykset


Esitys aiheesta: "Harjoitustyö."— Esityksen transkriptio:

1 Harjoitustyö

2 Harjoitustyö Työ tehdään pääosin itse.
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

3 Harjoitustyö Keskiviikkona 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

4 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

5 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 B 640x480) #2 Gold is for pleps. #3 Platinum is the best element! (platinum.jpg B 1000x800) >new Hydrogen is the number one. Olio-ohjelmoinnin perusteet | Kevät 2018 | Jorma Laurikkala

6 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

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

8 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 tiedosto-olioon (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

9 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 ". Olio-ohjelmoinnin perusteet | Kevät 2018 | Jorma Laurikkala

10 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

11 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

12 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

13 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 B 640x480) #2 Gold is for pleps. #3 Platinum is the best element! (platinum.jpg B 1000x800) >new Hydrogen is the number one. Olio-ohjelmoinnin perusteet | Kevät 2018 | Jorma Laurikkala

14 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 B 640x480) #2 Gold is for pleps. #5 You mispelled plebs. (picard_facepalm.webm B 10.5 s) #3 Platinum is the best element! (platinum.jpg B 1000x800) #4 Hydrogen is the number one. >empty 2 >list # Olio-ohjelmoinnin perusteet | Kevät 2018 | Jorma Laurikkala

15 Esimerkkiajo >head 1 #1 Nothing compares to gold. (au.gif B 640x480) >tail 1 #5 You mispelled plebs. (picard_facepalm.webm B 10.5 s) >find gif >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

16 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 B 640x480) # #5 You mispelled plebs. (picard_facepalm.webm B 10.5 s) #8 you mispelled misspelled #3 Platinum is the best element! (platinum.jpg B 1000x800) #4 Hydrogen is the number one. >exit Bye! See you soon. Olio-ohjelmoinnin perusteet | Kevät 2018 | Jorma Laurikkala


Lataa ppt "Harjoitustyö."

Samankaltaiset esitykset


Iklan oleh Google