Olio-ohjelmoinnin perusteet. Lewis & Loftus & Jukka Juslin 1



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

Java-kielen perusteet

5. HelloWorld-ohjelma 5.1

Java-kielen perusteet

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

4. Lausekielinen ohjelmointi 4.1

P e d a c o d e ohjelmointikoulutus verkossa

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

5. HelloWorld-ohjelma 5.1

Olio-ohjelmointi Javalla

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

9. Periytyminen Javassa 9.1

Ohjelmointi 2 / 2010 Välikoe / 26.3

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Javan perusteita. Janne Käki

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

4. Lausekielinen ohjelmointi 4.1

Rajapinta (interface)

8. Näppäimistöltä lukeminen 8.1

Java-kielen perusteita

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

8. Näppäimistöltä lukeminen 8.1

Mikä yhteyssuhde on?

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

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

Java-kielen perusteita

14. Hyvä ohjelmointitapa 14.1

11. Javan valintarakenteet 11.1

5/20: Algoritmirakenteita III

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

9. Periytyminen Javassa 9.1

Metodien tekeminen Javalla

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

Taulukot. Jukka Harju, Jukka Juslin

MITÄ JAVASCRIPT ON?...3

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

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

13. Hyvä ohjelmointitapa (osa 1) 13.1

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

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

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

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

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

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

Pakkauksen kokoaminen

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

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

812341A Olio-ohjelmointi, Olio-ohjelmoinnin peruskäsitteet ja Java-kieli

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

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

public static void main (String [] args)

12. Javan toistorakenteet 12.1

1. Omat operaatiot 1.1

Ohjelmoinnin perusteet, syksy 2006

20. Javan omat luokat 20.1

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

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

14. Poikkeukset 14.1

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

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

13. Loogiset operaatiot 13.1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Poikkeustenkäsittely

15. Ohjelmoinnin tekniikkaa 15.1

14. Poikkeukset 14.1

17. Javan omat luokat 17.1

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

12. Javan toistorakenteet 12.1

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

Listarakenne (ArrayList-luokka)

ITKP102 Ohjelmointi 1 (6 op)

Ehto- ja toistolauseet

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

7. Näytölle tulostaminen 7.1

Periytyminen (inheritance)

11. Javan valintarakenteet 11.1

11. Javan toistorakenteet 11.1

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

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

1 Tehtävän kuvaus ja analysointi

ITKP102 Ohjelmointi 1 (6 op)

Pakkauksen kokoaminen

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

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

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

YHTEYSSUHDE (assosiation)

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

VIII. Osa. Liitteet. Liitteet Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto

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

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

Transkriptio:

Olio-ohjelmoinnin perusteet Lewis & Loftus & Jukka Juslin 1

Kurssin fokus Oliosuuntautunut ohjelmakehitys Ongelmanratkaisu Ohjelman suunnittelu, toteutus ja testaus Oliosuuntautuneisuuden käsitteitä luokat oliot kapselointi periytyminen monimuotoisuus Java ohjelmointikieli Lewis & Loftus & Jukka Juslin 2

Johdanto Ensin tarkastelemme tietokoneohjelmien perusteita Luku 1 keskittyy seuraaviin: Eclipse työkalu johdanto Javaan oliosuuntautuneen maailman käsitteitä Lewis & Loftus & Jukka Juslin 3

Missä ollaan? Tietojenkäsittely Hardwaren osat Verkot Java ohjelmointikieli Ohjelman kehittäminen Oliopohjainen ohjelmointi Lewis & Loftus & Jukka Juslin 4

Java Ohjelmointikieli määrittää mitä sanoja ja symboleja voimme käyttää ohjelman kirjoittamiseksi Ohjelmointikieli ottaa käyttöön joukon sääntöjä, jotka määräävät kuinka sanoja ja symboleja voidaan laittaa yhteen muodostamaan valideja ohjelman statementteja (käskyjä) Java ohjelmointikielen loi ja sen ylläpidon omistaa Sun Microsystems, Inc (pääsuunnitteluja James Gosling). Java esiteltiin 1995 ja se on leveisyys on kasvanut nopeasti sen jälkeen. Vuonna 2004 esiteltiin J2SE versio 5, joka on suurin muutos sitten vuoden 1995. Lewis & Loftus & Jukka Juslin 5

2000-luvun Java Katsaus tilanteseen: Javasta on tullut wwwsovelluksille hyvin soveltuva tekniikka (tämä ei koske kuitenkaan appletteja) Javan työvälinekirjasto on laajentunut huomattavasti vuoden 2004 J2SE 1.5 version myötä Javan ohjelmointi on laajasti omaksuttua Lewis & Loftus & Jukka Juslin 6

Java ohjelman rakenne Java ohjelmointikielessä: Ohjelma koostuu yhdestä tai useista luokista Luokka sisältää yhden tai enemmän metodeita Metodi sisältää ohjelman käskyt Näitä käsitteitä käsitellään yksityiskohtaisesti tämän kurssin aikana (tosin käskyt-käsite on harvemmin käytetty: lähinnä aina mukana näkymättömästi) Ajettavassa Java-ohjelmassa on aina oltava mainniminen metodi Lewis & Loftus & Jukka Juslin 7

Java ohjelman rakenne // kommentit luokkaa koskien public class CokisAutomaatti { luokan headeri luokan runko } Kommentit voidaan sijoittaa minnetahansa Lewis & Loftus & Jukka Juslin 8

Java ohjelman rakenne // kommentit luokkaa koskien public class CokisAutomaatti { // kommentit metodia koskien public static void main (String[] args) { metodin runko metodin headeri } } Lewis & Loftus & Jukka Juslin 9

Java-ohjelman tyyli Java ohjelman tyyli on keskeinen asia, jotta ohjelmia voi ymmärtää Tyyli pitää olla Java Coding Conventionin mukainen (google hakusana: java coding convention) -> helpottaa lukemista JCC sisältää lisää tietoa siitä miksi JCC on tärkeä Koodin rivinmitta pitää olla enintään 80 merkkiä Lewis & Loftus & Jukka Juslin 10

Kommentit Ohjelman kommentteja kutsutaan inline dokumentaatioksi (helppo ylläpitää ajantasalla!) Inline dokumentaatiota pitää lisätä selvittämään ohjelman (tai luokan) tarkoitusta ja prosessoinnin askeleita Kommentit eivät vaikuta siihen kuinka ohjelma toimii Java kommenteilla on kolme muotoa: // tämä kommentti jatkuu rivin loppuun asti /* tämä kommentti jatkuu terminointi symboliin asti, myös rivinvaihtojen yli*/ /** tämä on javadoc kommentti */ Lewis & Loftus & Jukka Juslin 11

Tunnisteet (identifiers) Tunnisteet ovat sanoja, joita ohjelmoija käyttää ohjelmassa Tunnisteet voivat olla luokan nimiä, attribuutin nimiä, metodin nimiä tai metodin sisällä pelkkiä muuttujien nimiä Tunniste voi koostua kirjaimista, numeroista ja alaviivamerkistä tai dollarinmerkistä (alaviivaa ja dollarinmerkkiä käytetään harvoin) Tunnisteet eivät voi alkaa numerollat Java on ns. case sensitive - Total, total, ja TOTAL ovat kaikki eri tunnisteita Konvention mukaan, ohjelmoijat käyttävät isoja ja pieniä kirjaimia erityyppisille tunnisteille, kuten: eka kirjain isolla luokan nimille - Lincoln kaikki isolla vakioille - MAXIMUM Lewis & Loftus & Jukka Juslin 12

Tunnisteet Joskus valitsemme tunnisteita itse kun kirjoitamma ohjelmaa (kuten Lincoln) Joskus käytämme toisen ohjelmoijan koodia, jolloin käytämme tunnisteita joita hän on valinnut (kuten println) Usein käytämme varattuja sanoja, joilla on jo valmiiksi määritetty tarkoitus ohjelmointikielessä Varattua sanaa ei voi käyttää muullatavalla Lewis & Loftus & Jukka Juslin 13

Varatut sanat Javan varatut sanat: abstract assert boolean break byte case catch char class const continue default do double else enum extends false final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient true try void volatile while Lewis & Loftus & Jukka Juslin 14

Tyhjä tila Välilyöntejä, tyhjiä rivejä ja tabulaattoreita kutsutaan tyhjäksi tilaksi Tyhjää tilaa käytetään erottamaan sanat ja symbolit ohjelmassa Ylimääräinen tyhjä tila ignoroidaan Validi Java-ohjelma voidaan muotoilla monella tavalla Ohjelmat pitäisi muotoilla niin, että niiden luettavuus on mahdollisimman hyvä käyttäen vakiosisennyksiä (tabit konvertoidaan automaattisesti välilyönneksi, textpad asetus, emacsissa oletusarvoisesti) Lewis & Loftus & Jukka Juslin 15

Missä ollaan? Tietojenkäsittely Hardwaren osat Verkot Java ohjelmointikieli Ohjelman kehittäminen Oliopohjainen ohjelmointi Lewis & Loftus & Jukka Juslin 16

Ohjelman kehittäminen Ohjelman kehittämisen mekaniikka sisältää seuraavia aktiviteetteja Ohjelman kirjoittaminen tietyllä ohjelmointikielellä (kuten Java) Ohjelman kääntäminen muotoon, jonka tietokone voi suorittaa Erityyppisten virheiden etsiminen ja korjaaminen (joita voi esiintyä) Ohjelmistotyökaluja voidaan käyttää auttamaan kaikkien näiden osien kanssa Virheiden etsiminen tulostuslauseiden kautta Haluttujen testien määrittäminen ennen toteutusta (XP) Lewis & Loftus & Jukka Juslin 17

Kielen tasot On olemassa neljä ohjelmointikielten tasoa: konekieli assembly kieli korkean tason kieli neljännen sukupolven kieli Jokaisella CPU-tyypillä on oma spesifinen konekielensä Ylemmät tasot luotiin, jotta ihmisen olisi helpompi lukea ja kirjoittaa ohjelmia Kehitys on ollut aina korkeampaan abstraktiotasoon, koska tämä saattaa parantaa tuottavuutta. Toisaalta abstraktiotaso ei tietyiltä osiltaan ole juurikaan muuttunut viimeisen 30 vuoden aikana. Lewis & Loftus & Jukka Juslin 18

Ohjelmointikielet Jokainen CPU tyyppi suorittaa vain tietynlaista konekieltä Ohjelma pitää kääntää konekielelle, ennenkuin se voidaan suorittaa Kääntäjä on ohjelmallinen väline, joka kääntää lähdekoodin tietylle kohdekielelle Usein, kohdekieli on konekieli juuri tietylle CPU tyypille Javan lähestymistapa on hieman erilainen Lewis & Loftus & Jukka Juslin 19

Javan kääntäminen Java kääntäjä kääntää Java lähdekoodin erikoiseksi esitykseksi, jota kutsutaan bytecodeksi Java bytecode ei ole minkään perinteisen koneen konekieltä Toinen ohjelmistotyökalu, kutsutaan tulkiksi (interpreter), kääntää bytecoden konekieleksi ja suorttaa sen Siksi Java kääntäjä ei ole sidottu mihinkään tiettyyn koneeseen (mutta Java JRE, Java Runtime Environment on) Javaa kutsutaa arkkitehtuuri-neutraaliksi Lewis & Loftus & Jukka Juslin 20

Javaohjelman kääntäminen Java lähde koodi Java bytecode Java kääntäjä (compiler) Bytecode kääntäjä Bytecode kääntäjä Machine code Lewis & Loftus & Jukka Juslin 21

Kehitysympäristöt On olemassa monia ohjelmia, jotka tukevat Java-ohjelmien kehittämistä - kuten: Sun Java Development Kit (JDK) Textpad, emacs yms. editorit Sun NetBeans IBM Eclipse Borland JBuilder JBoss BEA Weblogic MetroWerks CodeWarrior BlueJ jgrasp Vaikka näiden ympäristöjen yksityskohdat eroavat toisistaan, perus kääntäminen ja suorittaminen prosesseina ovat aina samoja Lewis & Loftus & Jukka Juslin 22

Syntaksi ja semantiikka Kielen syntaktiset säännöt määräävät kuinka me voimme laittaa yhteen symboleja, varattuja sanoja ja tunnisteita tehdäksemme validin ohjelman Kielen semantiikka määrittelee mitä tietty lause tarkoittaa (sen tarkoitus ja rooli ohjelmassa) Ohjelma, joka on syntaktisesti oikeellinen ei välttämättä ole loogisesti (semanttisesti) oikein Ohjelma tekee aina mitä käskimme sen tehdä, ei mitä tarkoitimme sen tekevän Lewis & Loftus & Jukka Juslin 23

Virheet Ohjelmassa voi olla kolmentyyppisiä virheitä Kääntäjä löytää syntax erroreita (virheitä kieliopissa) ja muista perustavaa laatua olevia ongelmia (käännösaikaiset virheet eli compile-time errors) Jos käännösaikainen virhe esiintyy, suoritettavaa ohjelmatiedostoa ei luoda Ongelma voi esiintyä ohjelman suorituksen aikana (execution), kuten nollalla jakaminen, joka voi aihetuttao ohjelman ennenaikaisen terminoinnin (ajonaikaiset virheet eli run-time errors) Ohjelma voi käynnistyä, mutta tuottaa vääriä tuloksia. Näin käy esimerkiksi jos käytetään väärää ratkaisukaavaa. Näitä kutsutaan loogisiksi virheiksi (logical errors) Lewis & Loftus & Jukka Juslin 24

Perusohjelmakehitys Editoi and Talleta (save) ohjelma virheitä Käännä ohjelma (compile) virheitä Suorita ohjelma (execute) ja evaluoi tulosten oikeellisuus Lewis & Loftus & Jukka Juslin 25

Missä ollaan? Tietojenkäsittely Hardwaren osat Verkot Java ohjelmointikieli Ohjelman kehittäminen Oliopohjainen ohjelmointi Lewis & Loftus & Jukka Juslin 26

Ongelmanratkaisu Ohjelman kirjoittamisen tarkoitus on ratkaista ongelma Ongelman ratkaiseminen koostuu useista aktiviteeteista: Ongelman ymmärtäminen Suunnittele ratkaisu Pohdi vaihtoehtoisia tapoja ratkaisuksi Toteuta ratkaisu Testaa ratkaisu (voi olla myös aikaisemmin valmiina, XP) Nämä aktiviteetit eivät ole puhtaasti lineaarisia, ne ovat ovat osittain päällekkäin ja vuorovaikuttava keskenään (loop) Lewis & Loftus & Jukka Juslin 27

Ongelmanratkaisu Avain suunniteltaessa ratkaisua on osittaa ongelma pienemmiksi palasiksi (joskus palaset on helpompi löytää kuin joskus toiste) Ohjelmia kirjoitettaessa suunnittelemme erillisiä osia, jotka ovat vastuussa ratkaisun tietyistä osista Oliopohjainen lähestymistapa merkitsee tämäntyyppistä vastauksen rakentamista Me jaamme ratkaisumme paloihin, joita kutsutaan olioksi ja luokiksi Lewis & Loftus & Jukka Juslin 28

Oliopohjainen ohjelmointi Java on oliopohjainen ohjelmointikieli Kuten termistä voi olettaa, olio on perustavaa laatua olevat osa Java ohjelmaa Olioita voidaan käyttää tehokkaasti esittämään tosimaailman kohteita Esimerkiksi olio voi esittää tiettyä yrityksen työntekijää Jokainen työntekijäolio vastaa ko. olion toiminnoista ja tiedon hallinnasta Lewis & Loftus & Jukka Juslin 29

Oliot Oliolla on: tila - kuvaavat ominaisuudet käyttäytyminen - mitä se voi tehdä (ja mitä sille voidaan tehdä) Pankkitilin tila sisältää tilin numeron ja senhetkisen saldon Pankkitiliin liittyvät ominaisuuuksiin kuuluu ottojen ja talletusten tekeminen tilille Huomaa, että olion toiminta voi muuttaa sen tilaa Lewis & Loftus & Jukka Juslin 30

Luokat Olio määritellään luokassa (public class) Luokka on olion piirustus (vrt. Rakennuksen rakentaminen vs. piirustus siitä) Luokka käyttää metodeita kuvatakseen olion käyttäytymisen Luokka, joka sisältää Java-ohjelman main-metodin esittää ajettavaa ohjelma Luokka esittää konseptia ja olio esittää tämän konseptin ruumiillistumaa Useita olioita voidaan luoda samasta luokasta Lewis & Loftus & Jukka Juslin 31

Oliot ja luokat luokka (konsepti) Olio (toteutuma) Pankkitili Matin pankkitili Saldo: 5,257 Monia olitoita samasta luokasta Mervin pankkitili Saldo: 1,245,069 Jukan pankkitili Saldo: 16,833 Lewis & Loftus & Jukka Juslin 32

Periytyminen Yksi luokka voi periä ominaisuuset toiselta periytymisen kautta Luokat voidaan organisoida hierarkioiksi Tili Laskutustili Pankkitili Säästötili Käyttötili Lewis & Loftus & Jukka Juslin 33

Työkaluja Tarpeellisia työkaluja kurssilla ovat: Windows: J2SE 1.5 Eclipse IDE WinSCP Dia uml-kaavion piirtoeditori tai MS Visio Lisäksi mahdollisia: Putty ssh Cygwin X-Server, Axe tms. Linux J2SE 1.5 Emacs tekstieditori tai Eclipse dia uml-kaavion piirtoeditori Työkaluja voit ladata täältä: http://myy.helia.fi/~jusju/ict02d/ict02dopiskelijancd/ Lewis & Loftus & Jukka Juslin 34

Kotitehtävä tälle illalle Asenna kotiisi tarvittava ohjelmointiympäristö: Windows tai Linux pohjainen Muut kotitehtävät annetaan harjoituksissa Lewis & Loftus & Jukka Juslin 35

Yhteenveto Luku 1 käsitteli seuraavia: Tietokoneen osat Kuinka nämä osat vuorovaikuttavat Kuinka tietokoneet tallettavat ja manipuloivat informaatiota Tietokoneverkot Internet ja World Wide Web Ohjelmointi ja ohjelmointikielet Johdanto Javaan Katsaus olio-ohjelmoinnin konsepteihin Lewis & Loftus & Jukka Juslin 36