Sopimuspohjainen olio-ohjelmointi

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

Sopimuspohjainen olio-ohjelmointi Java-kielellä

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

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

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

13. Loogiset operaatiot 13.1

4. Olio-ohjelmoinista lyhyesti 4.1

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

13. Loogiset operaatiot 13.1

Loogiset konnektiivit

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

16. Javan omat luokat 16.1

Ohjelmointi 2 / 2010 Välikoe / 26.3

2. Olio-ohjelmoinista lyhyesti 2.1

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

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

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

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

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

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1

Ohjelmointi 2, välikoe

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

20. Javan omat luokat 20.1

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

ITKP102 Ohjelmointi 1 (6 op)

Yleistä. Digitaalisen äänenkäsittelyn perusteet. Tentit. Kurssin hyväksytty suoritus = Harjoitustyö 2(2) Harjoitustyö 1(2)

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

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

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

Ohjelmoinnin perusteet Y Python

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

Rajapinta (interface)

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

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

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

Ohjelmoinnin jatkokurssi, kurssikoe

Java-kielen perusteet

19. Olio-ohjelmointia Javalla 19.1

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

1. Omat operaatiot 1.1

Fysiikan opinnot Avoimen yliopiston opiskelijoille

5/20: Algoritmirakenteita III

1 Tehtävän kuvaus ja analysointi

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

Ohjelmointi 2 / 2011 Välikoe / 25.3

Olio-ohjelmointi Syntaksikokoelma

Loppukurssin järjestelyt C:n edistyneet piirteet

Olio-ohjelmointi Javalla

Loppukurssin järjestelyt

Diskreetit rakenteet. 3. Logiikka. Oulun yliopisto Tietojenkäsittelytieteiden laitos 2015 / 2016 Periodi 1


Java-kielen perusteet

Harjoitus 5 (viikko 48)

UML ja luokkien väliset suhteet

Listarakenne (ArrayList-luokka)

1. Mitä tehdään ensiksi?

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

Java kahdessa tunnissa. Jyry Suvilehto

Ohjelmointi II. Erkki Pesonen Luennot ja harjoitukset. Itä-Suomen yliopisto Tietojenkäsittelytieteen laitos 2015

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

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

Ohjelmoinnin perusteet Y Python

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

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

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

ITKP102 Ohjelmointi 1 (6 op)

Java-kielen perusteet

7/20: Paketti kasassa ensimmäistä kertaa

P e d a c o d e ohjelmointikoulutus verkossa

Javan perusteita. Janne Käki

FI3 Tiedon ja todellisuuden filosofia LOGIIKKA. 1.1 Logiikan ymmärtämiseksi on tärkeää osata erottaa muoto ja sisältö toisistaan:

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Ratkaisu: Yksi tapa nähdä, että kaavat A (B C) ja (A B) (A C) ovat loogisesti ekvivalentit, on tehdä totuustaulu lauseelle

Tietokoneverkot. T Tietokoneverkot (4 op) viimeistä kertaa CSE-C2400 Tietokoneverkot (5 op) ensimmäistä kertaa

LOGIIKKA johdantoa

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

Harjoitus 2 (viikko 45)

12. Monimuotoisuus 12.1

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Ohjelmoinnin perusteet Y Python

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

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

T Ohjelmistojen määrittely- ja suunnittelumenetelmät

9. Periytyminen Javassa 9.1

7. Oliot ja viitteet 7.1

811120P Diskreetit rakenteet

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

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

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

9. Periytyminen Javassa 9.1

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

Transkriptio:

Sopimuspohjainen olio-ohjelmointi Jouni Smed Kevät 2007 Yleistä Laajuus: 5 op. (3 ov.) Esitiedot: Olio-ohjelmoinnin perusteet (tai ent. Ohjelmointi I) Ilmoittautuminen: https://www.it.utu.fi/kurssi-ilmo/ ilmoittautuminen päättyy 8.3.2007! Kotisivu: Kotisivu: http://vco.ett.utu.fi/moodle/course/ view.php?id=13 kurssiavain: spoo2007 Korvaavuus Ohjelmointi II poistunut nykyisestä tutkintorakenteesta Ohjelmointi II = Sopimuspohjainen olio-ohjelmointi + Olio-ohjelmoinnin jatkokurssi OOJ järjestetään syksyllä 2007 Luennot 5.3. 5.3. 4.4.2007 Luentoajat maanantaisin 12 14 14 salissa α 5.3, 12.3 ja 19.3 keskiviikkoisin 14 16 16 salissa α torstaisin 10 12 12 salissa α Demonstraatiot 1(2) Neljä demonstraatiokertaa Ryhmät maanantaisin 10 12, 12, 12 14, 14, 14 16 16 ja 16 18 18 Päivät demot 1: 26.3 demot 2: 2.4 demot 3: 16.4 demot 4: 23.4 Demonstraatiot 2(2) Ei osallistumispakkoa! Ei minimirajoja! Ei kirjallisia vastauksia! 1

Kurssin arvostelu Arvostelu perustuu 30 pisteeseen Tentissä jaossa 28 pistettä Demonstraatioissa jaossa 4 pistettä kullakin kerralla 1 kokonainen piste Ei demopakkoa: 0% demoja max. 28 pistettä 50% demoja max. 30 pistettä 100% demoja max. 32 pistettä Kurssin arvostelu 2(2) Hyväksytty kurssi vaatii yhteensä 15 pistettä Arvosana [15, 18) 1 [18, 21) 2 [21, 24) 3 [24, 27) 4 [27, 32] 5 Tentit Kurssikirja 1(2) Tenttipäivät 1. toukokuussa 2007? 2. kesäkuussa 2007? 3. syyskuussa 2007? Varmista tenttiaika ja -paikka http://www.it.utu.fi/opetus/tentit/ Muista ilmoittautua ajoissa! Smed, Hakonen, Raita: Sopimuspohjainen olio-ohjelmointi Java-kielellä,, 2007. ISBN 978-952-92-1776-2 http://staff.cs.utu.fi/staff/jouni.smed/shr07-spoo.pdf SPOO-kurssiin tulevat kirjan luvut 1: johdanto, Java- kielestä 2: rutiinin määrittely 3: luokka 4: luokkakonaisuus 5.1 5.4: 5.4: periytymisen käyttö 6.1 6.3: 6.3: alustus, samuus 7.1: geneerisyyden käyttö 8.2: kokoelmaluokat Kurssiaikataulu 1(2) Kerta Pvm 1. 2. 3. 4. 5. 6. 7. 8. 9. 5.3 ma 7.3 ke 8.3 to 12.3 ma Luokan muodostaminen 14.3 ke 15.3 to 19.3 ma Esimerkki, testauksesta 21.3 ke 22.3 to Aihe Alustus, Javasta, rutiinin määrittely Sopimuspohjaisuus Erikoistilanteiden käsittely Sisäisen esitysmuodon eheys Luokkakokonaisuuden muodostaminen Periytymisen käyttö Perusoperaatiot 2

Kurssiaikataulu 2(2) 1. Johdanto Kerta Pvm (i) 10. 11. (ii) 12. (iii) (iv) 26.3 ma 1. demonstraatiot 28.3 ke 29.3 to 2.4 ma 4.4 ke Aihe Geneerisyyden käyttö, kokoelmat Kokoelmat 2. demonstraatiot Esimerkkejä, lopetus 16.3 ma 3. demonstraatiot 23.3 ma 4. demonstraatiot 1. Java-kielestä 2. Käytetyistä merkkinnöistä Javan versiohistoria Kääntäminen ja ajaminen Versio Julkaistu 1.0 1.1 1.2 1.3 1.4 5.0 6.0 toukokuu 1996 helmikuu 1997 joulukuu 1998 toukokuu 2000 helmikuu 2002 syyskuu 2004 joulukuu 2006 Luokkia 212 504 1520 1842 2991 3279 3777 Pakkauksia 8 23 59 76 135 166 202 Erityistä sisäluokat Collections assert geneerisyys javac MunKoodi.java javac -Xlint MunKoodi.java java -enableassertions MunKoodi Javadoc Javadocin perustäkyt Hae kurssin kotisivulta tiedostot common.jd ja project.jd javadoc @common.jd @project.jd @author @version @since @throws @param @return @see tekijä versio mukana versiosta poikkeuksen esittely parametrin esittely paluuarvon esittely ristiviittaus 3

common.jd-tiedostossa esiteltyjä lisätäkyjä @.pre @.post @.classinvariant @.abstractionfunction abstraktiofunktio @.correspondence @.download @.todo alkuehto loppuehto luokkainvariantti tekijän yhteystiedot lähdekoodilinkki työn alla project.jd-tiedosto -windowtitle 'Projektin' otsikko' -doctitle 'Dokumentin' otsikko' -overview mahdollinen-projektin-yleiskuvaus.html -bottom ' 2007 Etunimi Sukunimi.. All Rights Reserved.<p align="right">conforms to Java<sup><small>TM</small></sup> 2 API Specification Version 6.0' EsimerkkiTiedosto1.java EsimerkkiTiedosto2.java Käytetyistä määrittelymerkinnöistä Loogiset operaatiot Implikaatio: ==> Ekvivalenssi: <==> Universaalikvanttori: FORALL Eksistenssikvanttori: EXISTS Arvo ennen rutiinikutsua: OLD Rutiinin paluuarvo: RESULT Loogiset operaatiot Operaatio negaatio konjunktio disjunktio poissulkeva disjunktio oikosulkeva konjunktio oikosulkeva disjunktio Merkintä! & ^ && Implikaatio ==> Ekvivalenssi <==> Ilmaisee riittävää tai välttämätöntä edellytystä p ==> q = def (!p) q Tosi jos ja vain jos ehtojen totuusarvot ovat samat p <==> q = def!(p ^ q) 4

Universaalikvanttori: FORALL FORALL(alkio : kokoelma; totuusarvolauseke) FORALL(muuttuja : muuttujan totuusehto; totuusarvolauseke) Esimerkki * @.pre FORALL(mj : lauma; * mj.equals("cow Cow")) public void muut(string String[] lauma) * @.pre FORALL(i : 0 <= i < lauma.length; * lauma[i].equals("cow Cow")) public void muut(string String[] lauma) Eksistenssikvanttori: EXISTS EXISTS(alkio : kokoelma; totuusarvolauseke) EXISTS(muuttuja : muuttujan totuusehto; totuusarvolauseke) Esimerkki * @.pre EXISTS(mj : parvi; * mj.equals("chicken )) public void kotkot(string String[] parvi) * @.pre EXISTS(i : 0 <= i < parvi.length; * parvi[i].equals("chicken )) public void kotkot(string String[] parvi) Arvo ennen rutiinikutsua: OLD Rutiinin paluuarvo: RESULT * @.pre true * @.post this.equals(old(this)) public void konservoi() * @.pre s!= null * @.post RESULT.length == t.length & * FORALL(i : 0 <= i < t.length; * RESULT[i] == * t[(t.length - 1) - i]) public int[] käännä(int int[] t) 5

UML-merkinnöistä 1(2) UML-merkinnöistä 2(2) Notaatio Merkitys riippuvuus Notaatio Kana Merkitys luokka Virallinen notaatio assosiaatio (suunnattu) toteutus yleistys Lintu Lentäväinen abstrakti luokka rajapintaluokka «abstract» Lintu «interface» Lentäväinen Esimerkki Comparable Asiantuntija Lemmikki Henkilö Koira Kissa 6