7/20: Paketti kasassa ensimmäistä kertaa

Samankaltaiset tiedostot
6/20: Tietorakenteita

8/20: Luokat, oliot ja APIt

11/20: Konepelti auki

20. Javan omat luokat 20.1

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

13/20: Kierrätys kannattaa koodaamisessakin

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1

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

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

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

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

5/20: Algoritmirakenteita III

Olio-ohjelmointi Javalla

18. Abstraktit tietotyypit 18.1

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

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

7. Oliot ja viitteet 7.1

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

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

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

9/20: Puhu mun stdinille

19/20: Ikkuna olio-ohjelmoinnin maailmaan

Java-kielen perusteet

4/20: Algoritmirakenteita II

Taulukot. Jukka Harju, Jukka Juslin

16. Javan omat luokat 16.1

17/20: Keittokirja IV

Ohjelmoinnin peruskurssien laaja oppimäärä

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

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

Metodien tekeminen Javalla

Ohjelmointi 1 / syksy /20: IDE

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

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

Java-kielen perusteet

Ohjelmointi 2 / 2010 Välikoe / 26.3

ITKP102 Ohjelmointi 1 (6 op)

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

Mikä yhteyssuhde on?

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

Java-kielen perusteet

Tietueet. Tietueiden määrittely

ITKP102 Ohjelmointi 1 (6 op)

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

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

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

Ohjelmointi 1 Taulukot ja merkkijonot

7. Näytölle tulostaminen 7.1

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

Tieto- ja tallennusrakenteet

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Ohjelmoinnin jatkokurssi, kurssikoe

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Javan perusteita. Janne Käki

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

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

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

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

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

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

ITKP102 Ohjelmointi 1, syksy 2007

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin peruskurssi Y1

Muuttujat ja kontrolli. Ville Sundberg

Ohjelmointi 2, välikoe

Ohjelmointiharjoituksia Arduino-ympäristössä

ITKP102 Ohjelmointi 1, syksy 2007

ITKP102 Ohjelmointi 1, syksy 2007

14/20: Keittokirja I

Osio2: Taulukot Jukka Juslin

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

15. Ohjelmoinnin tekniikkaa 15.1

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

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

19. Olio-ohjelmointia Javalla 19.1

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Olio-ohjelmointi Syntaksikokoelma

2. Olio-ohjelmoinista lyhyesti 2.1

4. Olio-ohjelmoinista lyhyesti 4.1

1. Olio-ohjelmointi 1.1

13. Loogiset operaatiot 13.1

15. Ohjelmoinnin tekniikkaa 15.1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit:

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

Ohjelmoinnin perusteet Y Python

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Java-kielen perusteita

Harjoitus 5 (viikko 48)

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

14. Poikkeukset 14.1

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

Transkriptio:

Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/16

Tämän luennon rakenne Eilinen loppuun: moniulotteiset taulukot ja merkkijonot Paketti kasassa ensimmäistä kertaa : nyt on nähty mistä ohjelmoinnissa on kyse. Syntaksin käsite Ohjelman rakentuminen syntaktisten rakenteiden hierarkiana Suoritus tapahtuu lauseiden jatkumona Ohjelman tarina : Muuttujat, lauseet, kontrollirakenteet, aliohjelmat. Olio-ohjelmoinnissa oliot ja viitteet Jatko on kertaamista ja syöksymistä syvemmälle Ohjelmointi 1 / syksy 2007 p.2/16

Taulukko 1/4: perusidea Määritelmä: Taulukko on indeksoitu, määrätynkokoinen, kokoelma tietyn tyyppisiä muuttujia (Javassa siis primitiivejä tai tietyn luokan olioiden viitteitä). Taulukko on tyypillinen tietorakenne ohjelmointikielissä, ja sen syntaksikin on usein lähes samanlainen; opettelemme asian Javassa, mikä helpottaa saman idean käyttöä missä tahansa kielessä myöhemmin. Vahvasti tyypitetyissä kielissä (joissa siis muuttujien tyyppien suhteen ollaan jatkuvasti niuhotarkkoja ) myös taulukon tyyppi on määriteltävä tarkasti eikä se voi muuttua esittelynsä jälkeen. Ohjelmointi 1 / syksy 2007 p.3/16

Taulukko 2/4: syntaksi javassa Taulukon eli indeksoidun, määrätynkokoisen, kokoelman tietyn tyyppisistä muuttujista voi Javassa esitellä seuraavalla syntaksilla: Tyyppi[] taulukonnimi; Kuten primitiiveille, taulukolle voi antaa esittelyn yhteydessä sisällön seuraavalla syntaksilla: Tyyppi[] taulukonnimi = {arvo1, arvo2,..., arvon}; (Ero primitiivin alustukseen: arvoja on monta ja ne ovat kiharasulkujen sisällä) Alkioiden käyttö tapahtuu hakasulkusyntaksilla: esimmuuttuja = esimtaulu[indeksi]; Jos taulukkoa ei alusteta, se luodaan new:llä: double[] neljanluvuntaulu = new double[4]; Ohjelmointi 1 / syksy 2007 p.4/16

Taulukko 3/4: Javassa taulukko on olio Javassa on huomattava, että taulukko on olio. Se käyttäytyy kaikistellen, kuten oliot aina. Taulukon tyyppi on siis olioluokka (vaikka sen käyttöön on erityinen syntaksi). Syntaksissa (ed. kalvo) Tyyppi on mikä tahansa tyyppi (primitiivi tai olioviite) ja taulukosta tulee viite indeksoituun, määrätynkokoiseen, kokoelmaan juuri sen tyyppisiä alkioita kuin mikä Tyyppi on. Ohjelmointi 1 / syksy 2007 p.5/16

Taulukko 4/4: useampia ulottuvuuksia Alustava havainto moniulotteisista taulukoista: Taulukko voi sisältää taulukoita, esim. voidaan ajatella rivivektoria taulukkona koordinaateista, ja matriisia taulukkona rivivektoreista. Syntaksi kaksiulotteiselle taulukolle: Tyyppi[][] taulukonnimi; Toinen esimerkki, jossa myös alustus: double[][][] isotaulu = { { {1.0, 2.0}, {3.0, 4.0} }, { {5.0, 6.0}, {7.0, 8.0} } }; Dimensioiden määrää rajoittaa vain se, mikä on järkevää. Ohjelmointi 1 / syksy 2007 p.6/16

Merkkijonot 1/4: Perusidea Yksi merkki on yksi merkki (esim. A tai b tai \ ). Teksti koostuu useista merkeistä (esim. Arton ABC-kirja ). Sanotaan merkkien jonoa merkkijonoksi. Merkkijono vaatii tietokoneessa muistia vähintään niin paljon kuin sen merkit yhteensä. Merkkijonoja on kätevää käsitellä kuin ne olisivat kokonaisuuksia. Merkkijonoja käytetään todella moneen asiaan, mm. konsolisyöttöön, tulostukseen ja tiedon tallentamiseen. Ohjelmointi 1 / syksy 2007 p.7/16

Merkkijonot 2/4: Javassa merkkijono on olio Javassa on huomattava, että merkkijono on olio. Se käyttäytyy kaikistellen, kuten oliot aina. Erityispiirteinä mahdollisuus käsitellä merkkejä yksittäin ja osajonoina. Merkkijonon tyyppi on siis olioluokka, String (tai StringBuilder tai StringBuffer; ero ilmenee myöh. kalvolla). Ohjelmointi 1 / syksy 2007 p.8/16

Merkkijonot 3/4: esimerkkinä argumenttilista Argumenttilista on taulukko, joka sisältä merkkijonoviitteitä. Havaitaan tarkasti, mikä on String[] args, ja miten sitä käytetään: ohjelma, joka tulostaa argumenttinsa ja tutkii niistä ominaisuuksia kuten merkkijonon pituus, ensimmäinen ja viimeinen merkki ym. pikkuhassua. Samalla String-luokan APIa tutummaksi. samalla kertautuu olioyksilön ja -viitteen ero: Parametrina mainiin tuleva muuttuja args on viite taulukko-olioon, josta on viitteitä merkkijono-olioihin. Ohjelmointi 1 / syksy 2007 p.9/16

Merkkijonot 4/4: Muuttumaton ja muuttuvainen olio Merkkijonot ovat ensimmäinen kohtaaminen muuttuvaisten (mutable) ja muuttumattomien (immutable) olioiden kanssa: Esim. merkkijonoliteraalit ilmenevät suorituksen aikana String-luokan olioina. Niiden sisäinen tila ei koskaan voi muuttua olion elon aikana! Niiden luokan rajapinta ei mahdollista tätä. String-luokan merkkijono-operaatioissa syntyy aina uusi olio, jos tulos on erilainen kuin aiempi/aiemmat String-merkkijonot. Esim. yhteenliittäminen plussalla. Muuttuvainen merkkijono on tehtävä erikseen StringBuilder -luokan oliona (tai StringBuffer). Ohjelmointi 1 / syksy 2007 p.10/16

esimerkki olioiden ja sisältöjen vertailusta Merkkijonot ovat myös ensimmäinen kohtaaminen sellaisten olioiden kanssa, joiden sisältö voi olla sama, vaikka olioyksilöt ovat eri. Samuuden vertailu metodilla equals() Merkkien mukainen mukainen vertailu compareto() HUOM: Yhtäsuuruusoperaattori == vertaa olioviitteitä (viittaavatko samaan yksilöön) eikä osaa kertoa mitään olioista, jotka ovat identtisiä kaksosia mutta eri yksilöitä. Esim merkkijonot Marja ja Marja. Ohjelmointi 1 / syksy 2007 p.11/16

Java-kielen muuttujat ja tietorakenteet Tyyppi koko literaaliesim. Totuusarvot boolean? true, false Merkit char 16 A, \u0041 Kokonaisluvut byte 8 14, 123, -128, 0x7A short 16-14, 0123, 32767 int 32 14, -1234, 32767 long 64 14L, 9223372036854775807 Liukuluvut float 32 14.0, 1.234, 3.4e38 Olioviitteet double 64 14.0, 1.234, 4.9e-324 LuokanNimi Javassa erikoisasemassa olevat olioluokat: taulukot ja String, joille on omaa syntaksia itse kielessä. Esim.: Tyyppi alustusliteraali Taulukko int[] {1, 2, -7} Merkkijono String "Heippa" Ohjelmointi 1 / syksy 2007 p.12/16

Siinäkö oli kaikki tietorakenteet? Primitiivityypit, merkkijonot ja taulukot on toteutettu useimmissa ohjelmointikielissä valmiina (eli kieli tarjoaa keinot eikä tarvitse itse ohjelmoida tietorakenteen toteutusta). Tulemme näkemään, millä tavoin tämä on tehty Javassa. Usein käytetään monipuolisempia tietorakenteita (esim. pinot, jonot, listat, puut, hakemistot, verkot,... ) mutta ne pitää yleensä toteuttaa käyttäen yksinkertaisempia, ohjelmointikielen tarjoamia rakenteita. Miten? Luomalla sisäinen toteutus ohjelmointikielen keinoin ja tarjoamalla aliohjelmien/metodien kautta käytettävä rajapinta. Ohjelmointi 1 / syksy 2007 p.13/16

Luetaan APIa! Mieluummin ennemmin kuin myöhemmin on opittava lukemaan APIa jos toistakin. API = Application Programming Interface Suomeksi sovellusohjelmointirajapinta tai ihan vaan rajapinta Javassa jonkun luokkakokoelman tarjoamat julkiset metodit ja attribuutit. Ohjelmointi 1 / syksy 2007 p.14/16

Mitäpä APIsta löytyy Katsotaan esimerkiksi String, StringBuilder ja StringBuffer -APIen dokumentaatiota. Pari uutta havaintoa: Konstruktorit, aliohjelmien kuormittaminen. Katsotaan vertailun vuoksi satunnaisesti valitun Javaluokan APIa. Ohjelmointi 1 / syksy 2007 p.15/16

Paketti kasassa ensimmäistä kertaa Paketti kasassa ensimmäistä kertaa : nyt on nähty mistä ohjelmoinnissa on kyse. Syntaksin käsite Ohjelman rakentuminen syntaktisten rakenteiden hierarkiana Suoritus tapahtuu lauseiden jatkumona Ohjelman tarina : Muuttujat, lauseet, kontrollirakenteet, aliohjelmat. Olio-ohjelmoinnissa oliot ja viitteet Jatko on kertaamista ja syöksymistä syvemmälle kuhunkin aiheeseen Ohjelmointi 1 / syksy 2007 p.16/16