ACCOUNTS ROOT_BANK ACCOUNT BANK_MENU ... ACCOUNTS. accounts ROOT_BANK ACCOUNT. accounts "123-4567" 10378.50. menu. balance BANK_MENU.



Samankaltaiset tiedostot
1 Tehtävän kuvaus ja analysointi

Olio-ohjelmointi Javalla

Sopimuspohjainen olio-ohjelmointi

58160 Ohjelmoinnin harjoitustyö

Toinen harjoitustyö. ASCII-grafiikkaa 2017

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

Toinen harjoitustyö. ASCII-grafiikkaa

Harjoitus 5 (viikko 48)

Tietokannat II -kurssin harjoitustyö

Tentti: T Ohjelmoinnin peruskurssi, osa 1. Yleistä. Tehtävä 1

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

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Tulosta yrityksesi tuloslaskelma ja tase myöhempää tarkastusta varten. Ota varmuuskopio tilanteesta ennen tilimuunnosta.

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Ohjelmiston toteutussuunnitelma

Harjoitus 2 (viikko 45)

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 2, välikoe

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

public static void main (String [] args)

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

13. Loogiset operaatiot 13.1

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

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

4. Olio-ohjelmoinista lyhyesti 4.1

Interaktiivinen tarinankerronta

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

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

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

CQRS, -ES, PACS, DICOM, WTF?

YHTEYSSUHDE (assosiation)

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

Ohjelmistojen mallintaminen, syksy 2011, laskuharjoitus 2

SOSIAALISEN MEDIAN TYÖKALUPAKKI

Windows Server 2012 asentaminen ja käyttöönotto, Serverin pyörittämisen takia tarvitaan

Automaattinen yksikkötestaus

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

Javan perusteita. Janne Käki

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

DIGITAALISEN TARINAN TUOTTAMINEN MICROSOFT PHOTO STORY 3- OHJELMAN AVULLA VAIHEINEEN

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

7. Näytölle tulostaminen 7.1

VINKKEJÄ OPISKELUUN. Tampereen teknillinen lukio

18. Abstraktit tietotyypit 18.1

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

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

Mikä yhteyssuhde on?

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

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

Ohjelmointi 2 / 2011 Välikoe / 25.3

Ohjelmoinnin perusteet, syksy 2006

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

1. Omat operaatiot 1.1

2. Olio-ohjelmoinista lyhyesti 2.1

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

3. Käsiteanalyysi ja käsitekaavio

Luokan sisällä on lista

Rutiinin muodostaminen. 2. Rutiinin muodostaminen. specification) Määrittely (specification( Määrittelyn osapuolet. Hyvän ohjelman tunnusmerkit

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

Lukemisen ja kirjoittamisen kompensoivat apuvälineet. Marja-Sisko Paloneva lukiapuvälineasiantuntija Datero

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Mietteitä verkkokurssin pitämisestä. Jarkko Lehmuskenttä Tietotekniikan opettaja Turun sivistystoimialan hallinto Suunnittelu- ja kehittämispalvelut

Digitaalisen SLR-kameran laiteohjelmiston päivittäminen

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

HP ProBook 430 G5 kannettavien käyttöönotto

1 Asentaminen. 2 Yleistä ja simuloinnin aloitus 12/

Arvojen tunnistaminen

Ohjelmoinnin jatkokurssi, kurssikoe

DOORS 7.1 Test Tracking Toolkit

17. Javan omat luokat 17.1

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

Sisällys Word Wep App... 3 Excel Web App... 7 Powerpoint Web App OneNote Web App Excel Kysely Valmiin tiedoston tuonti Skydrive Pro

etunimi, sukunimi ja opiskelijanumero ja näillä

Artikkelin lisääminen

Perusopetuksen yleiset valtakunnalliset tavoitteet ovat seuraavat:

Sisällys. 15. Lohkot. Lohkot. Lohkot

17/20: Keittokirja IV

Nimi: Henkilötunnus: {id} {+id}

Suvi Junes Tietohallinto / Opetusteknologiapalvelut 2012

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

Tietokannat II -kurssin harjoitustyö

ITKP102 Ohjelmointi 1 (6 op)

SOSIAALISEN MEDIAN TYÖKALUPAKKI

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Saa mitä haluat -valmennus

JUnit ja EasyMock (TilaustenKäsittely)

Kandityön kirjoittaminen. Opinnäyteseminaari

Harjoitustyön testaus. Juha Taina

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Visma Fivaldi Kirjanpitolaki Yhdistystilikartta muutokset Fivaldissa

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Harjoitus 4 (viikko 47)

Moniasiakkuus ja osallisuus palveluissa -seminaari Moniammatillinen yhteistyö ja asiakaskokemukset

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

Joomla pikaopas. Yksinkertainen opas, jossa neuvotaan esimerkkisivuston teko Joomla julkaisujärjestelmällä vaihe vaiheelta.

Transkriptio:

tehdä ohjelmointiharkka Kuinka vauhdilla? Harjoitustyön tekeminen esittelyluento, kevät 1999 eli Miten harkasta saa helposti Turun yliopiston tietojenkäsittelyoppi ymmärrettävän? http://www.cs.utu./ http://www.cs.utu./sta/hat/eiel-0/ Harri Hakonen Harri Hakonen hat@cs.utu. hat@cs.utu.

nro 0. Tehtävä Tilienhallintaohjelma kassalla työskentelevälle Toteuta tilienhallintaohjelma. pankkitoimihenkilölle on voitava käsitellä tilejä monipuolisesti: Systeemin avaus, lopetus, otto, pano ja saldon kysely. tilin systeemistä valikko-ohjattu niin, että voit Tee toteutuksesi eri toimintoja helposti. Käytä testata apuna tekstitiedostoja tietojen tarvittaessa (raskaan käsisyötön välttämiseksi). lukemiseen ratkaisusi kokonaisrakenne huolellisesti, koska Mieti on tärkein osa työtäsi. Mieti luokkien eri se tärkeyttä kokonaisuuden kannalta, operaatioiden luokalle paras toteutusvaihtoehto ja valitse tilienhallintaohjelma Esimerkkiongelma: peukalosääntöjä Yleisiä Hyväksi havaittuja periaatteita Minä? Mieti kahdesti yhtä asiaa. 1. Erityisesti OO:ssa huonosti suunniteltu osa räjähtää omille silmille. Ongelma? Älä ahmi vaan paloittele. 2. Ajattelun atraimilla ongelma suupaloiksi. Maksaja? Ajattele kohdeyleisöäsi. 3. Ohjelmointi on kommunikointia tietokoneelle ja ihmiselle. Tietokone perustaa muotoseikkoihin, ihminen taas tarkoitukseen. perustele valintasi. joilla liftata ilmaiseksi!

peruskäsitteitä ja piirrellään mietitään Vältetään niitä yksityiskohtia! kuvia. kaavioita tekokin on ratkaistava ongelma Harkan panic!" "Dont Ongelman ratkaiseminen alkaa jääkaapilla ACCOUNTS Asiakaskaavio käynnillä! Sitten istutaan lepotuoliin ROOT_BANK ACCOUNT suttupaperikasan ja kynän kanssa. Kehitellään yleistettyjä esimerkkejä, BANK_MENU Harkan asia sisältö Tietorakennekaavio... ACCOUNTS 1. Ongelman kuvaus accounts 2. Ratkaisun ajatukset ja rajoitukset ROOT_BANK ACCOUNT accounts id "123-4567" menu BANK_MENU balance 10378.50 3. Kaavioita ja tapausesimerkkejä account 4. Aliosien liittymät ja erityishuomautukset 5. Testijärjestely eli toimintaesimerkkejä 6. Yksityiskohdat joten pilkotaan se osiin!

Sisällys Ongelman ja ratkaisun kuvaus 1. Kun jotain on hahmoteltu, mietitään koko oletusten, rajoitusten ja jos-kokeilua löytämiseksi. laajennussuuntien Huilataan ja täydennetään jääkaappia tekokin on ratkaistava ongelma Harkan Harkan sisälmyslista 1.1. Tehtävän kuvaus "Dont panic!", osa II 1.2. Ratkaisun ideat 1.3. Systeemin rajoitukset 1.4. Laajennuksia juttu alusta lähtien toisen kerran. Käydään juttelemassa kavereille ja/tai työn 2. Kaaviot 2.1. Asiakaskaavio ohjaajalle. Haetaan keskeisiä käsitteitä ja niiden 2.2. Tietorakennekaavio 3. Luokkien esittely 3.1. ACCOUNT-luokka yhteyksiä. Maailmankuva muuttuu oikeaan 3.2. ACCOUNTS-luokka suuntaan kun kuuluu loksahtelua. Tehdään absurdeja esimerkkejä ja mitä 3.3. BANK_MENU-luokka 3.4. Testausluokka ROOT_BANK 4. Testiajot 5. Liite: Ohjelmalistaukset 5.1. ACCOUNT.E 5.2. ACCOUNTS.E 5.3. BANK_MENU.E 5.4. ROOT_BANK.E tulevaa ponnistusta varten. 5.5. ACE.ROOT_BANK joten pilkotaan se osiin!

otsikko, otsikkokommentti sekä merkitys: ja loppuehdot (lisäksi alku- vaan mietitään miksi ja missä vasaraa, pieleen. menee Jo olemassaoleva ei ole pyhää, joskus on heittää kaikki tehty roskiin uskallettava aliosien riippumattomuus maksimoidaan niiden tietovirtasidokset. minimoimalla keinoina ovat: parametrit, Tiedonsiirron attribuutit. paluuarvot, Yritetään olla ytimekkäitä perustelemaan. selviä. ja Kerrataan jo tehtyä ja hiotaan sitä (eli on kytkentärajapinta Liityntä tekokin on ratkaistava ongelma Harkan panic!", osa III "Dont Kerrataan liittymiin liittyvien osien Liitynnöistä Tiedon on liikuttava luontevasti. Ts. luokkainvariantit). Mennään koneelle ja kirjoitetaan aliosien valmiiksi. Ajettavaa koodia ei liittymät tehdä! Keskeinen kysymys on Kenen vastuulla pitää olla ja miksi?. Tätä pitää tämän Käytetään opittuja käsitteitä ja luodaan Ollaan pikkutarkkoja ja nipotetaan uusia. hokea jatkuvasti liityntöjä suunniteltaessa. I/O nakertaa aina ylläpidettävyyttä, joten yksityiskohdista. Jos jossain alkaa tökkiä, ei haeta isompaa se hätistetään pois toimivasta osasta. Kaikki tehdyt ratkaisut on pystyttävä iteroidaan). Pidetään taukoja ja nukutaan öisin. (onneksi tosi harvoin). kuten Lego-palikoissakin. joten pilkotaan se osiin!

class ACCOUNT creation{any} make... ACCOUNT-liityntä... ACCOUNT-liityntä... ACCOUNT-luokka Päivitykset Alustaminen feature{none} deposit(amount: REAL) -- Lisää `amount saldoon. make(new_id: STRING) -- Alusta tunnisteeksi `new_id. sane_amount: 0.0 <= amount id_exists: new_id /= Void deposit_denition: balance = old balance + amount id_set: equal(id, new_id) no_money: balance = 0.0 withdraw(amount: REAL) -- Vähennä `amount saldosta. Perustiedot sane_amount: 0.0 <= amount id: STRING -- Tunniste. withdraw_denition: balance: REAL balance = old balance - amount -- Saldo markkoina.

end -- ACCOUNT class ACCOUNTS creation{any} make ACCOUNTS-liityntä...... ACCOUNT-liityntä Muunnokset ACCOUNTS-luokka to_string: STRING Alustaminen -- Merkkijonoarvo. string_value_denition: make -- Alusta kokoelma tyhjäksi. -- Result = -- "<account><id>id</id> -- <balance>balance</balance> -- </account>" Muunnokset to_string: STRING Sisäisestä toteutuksesta -- Merkkijonoarvo. feature{none} Tätä ei ole vielä tehty. string_value_denition: -- Result = Objektin eheys invariant -- "<accounts>account 1...account N -- </accounts>" id_exists: id /= Void

... ACCOUNTS-liityntä...... ACCOUNTS-liityntä... Perustiedot Tilatiedot has(account_id: STRING): BOOLEAN -- Onko tili `account_id kokoelmassa? symbols: STRING is "1234567890-" key_exists: account_id /= Void -- Tilisymbolit. has_denition: is_id(id: STRING): BOOLEAN -- Result = tili `account_id on -- Onko `id tilitunniste? -- kokoelmassa. id_exists: id /= Void item(account_id: STRING): ACCOUNT id_denition: -- Tili `account_id. -- Result implies key_exists: account_id /= Void -- `id on muotoa "s 1 s 2...s m -s 1 s 2...s n " valid_key: has(account_id) -- missä s i on jokin symboli -- `symbols:sta ja 1 < m, n. account_found: has(result.id) and equal(account_id, Result.id)

end -- ACCOUNT... ACCOUNTS-liityntä... ACCOUNTS-liityntä... Päivitykset put(account: ACCOUNT) -- Lisää `account. Sisäisestä toteutuksesta account_exists: account /= Void feature{none} Tätä ei ole vielä tehty. legal_id: is_id(account.id) not_in_yet: not has(account.id) Objektin eheys invariant account_inserted: has(account.id)??? symbols_exists: symbols /= Void accounts_exists: accounts /= Void account_inserted: item(account.id) = account -- accounts_sane: aina is_id((accounts @ i).id) prune(account_id: STRING) -- accounts_unique: (accounts @ i).id -- Poista tili `account_id. -- yksikäsitteinen key_exists: account_id /= Void is_in: has(account_id) account_pruned: not has(account_id)

valid_choice: legal_last_choice: Tarkoituksenmukaisin käyttö riippuu Yleensä voidaan tehdä erillään muusta (kunhan osaa jakaa vastuut järjestelmästä... käsittelystä Tiedoston tekemisestä Valikon Menun toteuttaminen interact -- Kysy ja suorita menuvalinnat. choice_keys: STRING is "PpOoSsTtZz" Tiedostojen käytöstä -- Menuvalinnat. is_nished: BOOLEAN -- Poistutaanko menusta? last_choice: CHARACTER -- Nykyinen menuvalinta. tapauksesta. Kyse on vastuun jakamisen järjestämisestä. read_choice -- Pyydä menuvalinta. choice_keys.has(last_choice) do_choice -- Suorita valittu operaatio. oikein). choice_keys.has(last_choice) display_choices -- Näytä ja selitä eri toiminnot. Yksi menyy, kiitos...

löytää mielenkiintoisia Miten esimerkkejä? räiskiä vauhkona haulikolla sinne kannata vaan parempi on hakea täsmäaseeksi tänne ja tehdä vain tähdättyjä lyöntejä. vasara sekä työn tekijä, ulkopuolinen Näin että täi pääsevät vähemmillä tarkkailija vammoilla. henkisillä Tee ensin testijärjestelyn käsikirjoitus. Mieti, millainen testaustapa soveltuu testata mahdollisimman paljon Kuinka vähällä kokeilemisella? mahdollisimman Invariantit: (tyhjä ja 1-kokoinen erikoistapaukset ääriarvot (min. ja max.)). rakenne, Alku- ja loppuehdot: yhdelmät, tiedon perustapausten Ajon simulointi: on vaikeaa... Testaus on vaikeaa... Testaus Testiajoista Kuinka vakuuttaa lukija toimivuudesta? Testaaminen on tapausanalyysiä Kuinka demonstroida erikoistapauksia? Motto: tukkimiehen täin tappamiseksi ei testata yhtä asiaa kuin kerran! Ei Automaattinen, piilossa oleva, tarkastaminen on aina toivottava. yksittäiset kulkeutuminen oikein. Eksplisiittinen, silmin tehtävä, mihinkäkin kohtaan. Testijärjestely voi koostua useista tarkastaminen on työlästä ja virhealtista. kohtauksista. Tue lukijaa väliselostuksilla. taskulaskin, välitulostukset,....

jotka talletetaan oletustiedostoon. tiliä, yhteydessä testataan myös Tässä tiedostoksi Empty.dat (tämän talletetaan lataaminen tyhjentää tiedoston joten erillistä poista kaikki tilikokoelman, ei tarvita). tilit-toimintoa Jatketaan oletustiedoston latauksella ja listauksella. Tileistä valitaan yksi tilien jolloin saadaan tilin muutettavaksi, (BANK_MENU). Tehdään ylläpitomenu tilinkäsittelytemppu ja palataan muutama (ROOT_BANK). ohjelmamenuun Lopuksi näytetään tilitiedot ja kokoelma Empty.dat-tiedoston tyhjennetään testauksen käsikirjoitus testaus Tilienhallintaohjelman Luodaan tyhjään tilikokoelmaan kolme tilisymbolien oikeellisuustarkistusta. Tilit poistetaan ja tyhjä tilikokoelma avulla ja poistutaan ohjelmasta.