8/20: Luokat, oliot ja APIt

Samankaltaiset tiedostot
7/20: Paketti kasassa ensimmäistä kertaa

13/20: Kierrätys kannattaa koodaamisessakin

19/20: Ikkuna olio-ohjelmoinnin maailmaan

9/20: Puhu mun stdinille

11/20: Konepelti auki

17/20: Keittokirja IV

Ohjelmointi 1 / syksy /20: IDE

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

4/20: Algoritmirakenteita II

14/20: Keittokirja I

1. Olio-ohjelmointi 1.1

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op)

5/20: Algoritmirakenteita III

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

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

ITKP102 Ohjelmointi 1 (6 op)

1. Omat operaatiot 1.1

6/20: Tietorakenteita

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

Ohjelmoinnin jatkokurssi, kurssikoe

Java-kielen perusteet

Ohjelmointi 2 / 2010 Välikoe / 26.3

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

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

Luokat ja oliot. Ville Sundberg

Taulukot. Jukka Harju, Jukka Juslin

Java kahdessa tunnissa. Jyry Suvilehto

Test-Driven Development

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

Oliot viestivät metodeja kutsuen

Javan perusteita. Janne Käki

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

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages

Ohjelmointi 1 C#, kevät 2014, 2. uusintatentti NIMI:

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

5. HelloWorld-ohjelma 5.1

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

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

Kesäkurssi Opettaja: Paavo Nieminen Tervetuloa!

812347A Olio-ohjelmointi, X Reflektiivisyys

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

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

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

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op)

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Test-Driven Development

1. Mitä tehdään ensiksi?

Metodien tekeminen Javalla

Mikä yhteyssuhde on?

20. Javan omat luokat 20.1

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

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

Java-kielen perusteet

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

Ohjelmoinnin perusteet Y Python

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Antitammirobotti. Antti Meriläinen Martin Pärtel 29. toukokuuta 2009

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

P e d a c o d e ohjelmointikoulutus verkossa

Aalto Yliopisto T Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Tietorakenteet, laskuharjoitus 7,

Ohjelmoinnin perusteet Y Python

Ryhmäharjoitus III: Mitä on koodaaminen? A. TIEY4 Tietotekniikkataidot, kevät 2017 Tehdään ryhmäharjoitustunnilla 20.3.

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

Ohjelmointi 1. Kumppanit

15. Ohjelmoinnin tekniikkaa 15.1

Groovy. Niko Jäntti Jesper Haapalinna Group 31

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Olio-ohjelmointi Javalla

17. Javan omat luokat 17.1

Ohjelmoinnin peruskurssi Y1

Java-kielen perusteet

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

T Henkilökohtainen harjoitus: FASTAXON

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Olioiden yhteistoiminta

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Koodaamme uutta todellisuutta FM Maarit Savolainen

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

19. Olio-ohjelmointia Javalla 19.1

ITKP102 Ohjelmointi 1, syksy 2007

KTKO104. Luento

1. Miten tehdään peliin toinen maila?

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmointi 1 C#, kevät 2013,

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

4. Olio-ohjelmoinista lyhyesti 4.1

2. Olio-ohjelmoinnin perusteita 2.1

Transkriptio:

Ohjelmointi 1 / syksy 2007 8/20: Luokat, oliot ja APIt Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8

Kohti ymmärrystä ohjelmoinnista Hierarkkinen ja rekursiivinen ajattelumalli: esim. ohjelman suunnittelu, syntaksi, tiedon järjestäminen (tietorakenteet, tiedostojärjestelmä). Koodauskäytänteiden merkitys; esimerkkejä selkeistä ja epäselkeistä koodeista. Tarkennusta olioiden käyttämiseen: luominen, konstruktori, rajapinta. Tarkennusta aliohjelmiin: kuormittaminen, method signature. Jälleen API-dokumentaation lukeminen: esim. StringBuilder/StringBuffer -APIt. Ohjelmointi 1 / syksy 2007 p.2/8

Ajattelu ja kommunikointi Hierarkkinen ja rekursiivinen ajattelumalli toteutuu monessa paikassa tietojenkäsittelyssä, esim: ohjelman suunnittelu, syntaksi tiedon järjestäminen (tietorakenteet, tiedostojärjestelmä). Koodauskäytänteet ovat elinehto ohjelmoijan kommunikoinnille: rakenteen sisällä oleva rakenne sisennettävä jämptisti! kaikki nimet on annettava merkityksen mukaan! Javassa luokat isolla ja muuttujat pienellä alkukirjaimella! rivien pituus pieni; jakaminen selkeästi vain selkeitä ohjelmointiratkaisuja ei hämäriä! esimerkkejä selkeistä ja epäselkeistä koodeista. Ohjelmointi 1 / syksy 2007 p.3/8

Kommunikaation taito haltuun! Omia ja toisten koodeja sekä ohjelmoinnin rakenteita on helpompaa opetella kun kaikki koodit KIRJOITTAA SELKEÄSTI alusta lähtien ja oppii myös lukemaan toisten koodia olettaen että niissä on sisennykset ym. kohdallaan. Toistaiseksi demoissa ollut vielä huolimattomuutta muotoseikoissa... Osaavalta ohjelmoijalta sitä ei suvaita kuin selkeissä vahinkotapauksissa! Tähän kannattaa keskittyä tuleva viikko, koska kyseessä ei ole vain esitysmuoto, vaan ymmärtäminen ja kommunikointi! Ohjelmointi 1 / syksy 2007 p.4/8

Metodin nimen kuormittaminen method signature Yleensä kaikkien nimettyjen asioiden on oltava yksikäsitteisiä (ei samaa nimeä uudelleen). Metoditkin ovat, mutta yksikäsitteisyydessä otetaan nimen lisäksi huomioon parametrilista. Jos on saman niminen mutta erityyppiset parametrit vastaanottava metodi kuin joku toinen, sanotaan, että kyseinen nimi on kuormitettu (overloaded). Kuormitus on tullut jo vastaan, jos on lukenut APIsta esim. erilaisten konstruktorien otsikoita ja toimintaa. Ohjelmointi 1 / syksy 2007 p.5/8

Katsotaan tarkemmin, mikä on luokka Oliolla on sisäinen, piilotettu tila. Julkinen rajapinta metodeina (== aliohjelmina, jotka tuntevat jonkun olioyksilön eli instanssin sisäisen tilan). Luokka kuvailee, millaisia siihen luokkaan kuuluvat oliot ovat. Konstruktori on erityismerkityksessä oleva metodi. Konstruktoria kutsutaan olioyksilön luonnin (eli instantoinnin) yhteydessä. Ensimmäinen esimerkki (ja ehkä myös syksyn viimeinen) itse tehdystä luokasta, johon kuuluvan yksilön eli instanssin voi luoda. Ohjelmointi 1 / syksy 2007 p.6/8

Mistä tyvestä puuhun Äsken nähtiin itse tehty olioluokka, jonka tyyppisen olion voi luoda. Periaatteessa luokan tekeminen on helppoa, mutta siihen syvennytään vasta jatkokursseilla. Olioperustainen ohjelmointi ja suunnittelu soveltuu ISOJEN ohjelmien tekemiseen, ja siihen sisältyy rutkasti monimutkaisuutta ja vaaranpaikkoja. Alusta loppuun ohjelmointi edellyttää vahvaa ymmärrystä tietokoneen sekä ohjelmoinnin perusrakenteiden toiminnasta, joihin keskitymme aluksi. Ohjelmointi 1 / syksy 2007 p.7/8

StringBuilderin API, ero Stringiin Esimerkkiohjelma: alleviivauksen tulostaminen. Toteutetaan Stringeillä ja plus-operaattorilla; mikä on suoritusaika Toteutetaan StringBuilderilla ja append-metodilla; mikä on suoritusaika Havaittaneen dramaattinen ero, joka johtuu konepellin alla tapahtuvista olioiden luonneista. Ohjelmointi 1 / syksy 2007 p.8/8