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



Samankaltaiset tiedostot
Rajapinta (interface)

Olio-ohjelmointi Javalla

Java-kielen perusteet

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

20. Javan omat luokat 20.1

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

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Metodien tekeminen Javalla

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

16. Javan omat luokat 16.1

7. Näytölle tulostaminen 7.1

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

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

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

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

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

JAVA-OHJELMOINTI 3 op A274615

Mikä yhteyssuhde on?

17. Javan omat luokat 17.1

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

15. Ohjelmoinnin tekniikkaa 15.1

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

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

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

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

9. Periytyminen Javassa 9.1

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

9. Periytyminen Javassa 9.1

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

Pakkauksen kokoaminen

19. Olio-ohjelmointia Javalla 19.1

1. Omat operaatiot 1.1

1 Tehtävän kuvaus ja analysointi

7/20: Paketti kasassa ensimmäistä kertaa

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

15. Ohjelmoinnin tekniikkaa 15.1

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

17. Javan omat luokat 17.1

Java-kielen perusteet

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Periytyminen (inheritance)

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

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

Javan perusteita. Janne Käki

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

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

Java-kielen perusteet

Java kahdessa tunnissa. Jyry Suvilehto

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

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

Listarakenne (ArrayList-luokka)

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

Ohjelmoinnin jatkokurssi, kurssikoe

Pakkauksen kokoaminen

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

Luokan sisällä on lista

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

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

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

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

18. Abstraktit tietotyypit 18.1

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

KOHDELUOKAN MÄÄRITTELY

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Java-kielen perusteita

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

Java-kielen perusteita

Taulukot. Jukka Harju, Jukka Juslin

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointi 2 / 2010 Välikoe / 26.3

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

6. Muuttujat ja Java 6.1

public static void main (String [] args)

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

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

7. Oliot ja viitteet 7.1

Taulukot, silmukat ja muut joka koodin pikku veijarit

5. HelloWorld-ohjelma 5.1

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

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

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

Luokat ja oliot. Ville Sundberg

TIETORAKENTEET JA ALGORITMIT

11. Javan valintarakenteet 11.1

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

Luokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram)

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

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

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

C++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi

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

Java-kielen perusteet

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

2. Olio-ohjelmoinista lyhyesti 2.1

OutputStream ja InputStream. Tietovirrat ja niiden suunnat. Tietovirtojen käyttö. FileInputStream esimerkki. DataOutputStream ja DataInputStream

Oliot viestivät metodeja kutsuen

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Transkriptio:

JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi, Talentum 2004. JAVA-PERUSTEET Javan ominaisuuksista Tietotyypit Alkeistietotyypit Taulukot Merkkijonot Java-ohjelman rakenne Luokka ja instanssit Luokan rakenne ja tarkentimet Yksinkertainen esimerkki 2006 2 JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA Java vs. C++? Syntaksi samantapainen Javasta on poistettu C++:n vaarallisia piirteitä: pointterit, headerit, esiprosessori, goto, delete, Javan uusia ominaisuuksia Tiukka oliomalli Roskienkeruu Interfacet Java-ohjelma Java API JVM Käyttöjärjestelmä Java koostuu erilaisista API-rajapinnoista ja virtuaalikoneesta (JVM) Java APIt ovat valmiiksi käännettyjä luokkakirjastoja Säästävät aikaa ja vaivaa Vähentävät virheiden mahdollisuutta Ohjelmat käännetään tavukoodiksi, jotka JVM tulkkaa Eri tekniikoita olemassa tulkkaamisen nopeuttamiseksi 2006 3 2006 4

JAVA OHJELMAN RAKENNE JAVA OHJELMAN RAKENNE Javassa jokainen julkinen luokka sijoitetaan omaan.java tiedostoonsa Pääohjelma on pääluokan julkinen luokkametodi main Tarkentimet static ja void Parametrina String-taulukko args Yksinkertainen ohjelma: class MyFirstApp { public static void main(string[] args){ System.out.println( Hello World!"); Laitetaan tiedostoon MyFirstApp.java Käännetään tavukoodiksi ja ajetaan: $ javac MyFirstApp.java $ java cp. MyFirstApp Hello World! 2006 5 2006 6 TIETOTYYPIT TIETOTYYPIT Javan tietotyypit ovat joko alkeistietotyyppejä tai olioita Alkeistietotyypit ovat ympäristöstä riippumatta saman kokoisia siirrettävyys Kaikille alkeistietotyypeille on kuitenkin omat (wrapper-) oliotyyppinsä JDK 1.5:ssä on alkeistietotyypeille automaattinen käärintä ja käärinnän purku Uutena ominaisuutena JDK 1.5:ssä ovat geneerinen tietotyyppi ja lueteltu tietotyyppi Geneerisellä tietotyypillä voi parametroida luokan käyttämän tietotyypin (vähän kuten C++:n templatet) Luetellulla tietotyypillä voi määrittää uuden tietotyypin, jossa on ns. lueteltuja vakioita (vähän kuin C++:n enum) 2006 7 2006 8

ALKEISTIETOTYYPIT TAULUKOT Primitive data types boolean true, false 1 bit 1) char Unicode-merkki 16 bits byte tavu 8 bits short kokonaisluku 16 bits int kokonaisluku 32 bits long kokonaisluku 64 bits float desimaaliluku 32 bits double desimaaliluku 64 bits 1) JVM:ssä kuitenkin integerejä 0 tai 1 Taulukot luodaan operaattorilla new int table[] = new int[10]; Tai ne voidaan alustaa staattisesti int table[] = {1,2,3,4,5,6,7,8,9,10; Moniulotteisissa taulukoissa ulomman taulukon alkiot ovat taulukoita: int[][] multidim = {{2,{3,5,{; int[][] foobar; foobar = new int[10][]; foobar[1] = new int[3]; foobar[1][1] = 2; Hakasulut voivat olla joko tyypin tai taulukon nimen jälkeen 2006 9 2006 10 MERKKIJONOT MERKKIJONOT Merkkijonot ovat luokan String instansseja String-oliot voidaan alustaa operaattorilla new tai se voidaan myös jättää pois String msg = new String( Hello ); String to = World! ; Merkkijonoja ei voida muokata alustuksen jälkeen Merkkijonoja voidaan kuitenkin yhdistellä ja sijoittaa + ja += -operaatioilla: String sentence = msg + + to; String newmsg = Reboot ; newmsg += ing ; Lisäksi merkkijonoon voidaan liittää numeerisia arvoja, jotka muutetaan automaattisesti merkkijonoiksi int itime = 10; newmsg += in + itime + seconds... ; 2006 11 2006 12

JAVA OHJELMAN RAKENNE LUOKAN RAKENNE JA TARKENTIMET Tarkentimet edellisen esimerkkiohjelman main()-metodissa class MyFirstApp { public static void main(string[] args){ System.out.println( Hello World!"); public metodi näkyy muille ja JVM voi suorittaa sen static luokasta ei tarvitse tehdä instanssia. Tämä on mahdollista, jos myös kaikki ko. metodin käyttämät oliot ja metodit on määritelty static:ksi. void metodilla ei ole paluuarvoa Javassa ei ole otsikkotiedostoja Ei public:- ja private:-lohkoja Jokaisen attribuutin ja metodin näkyvyys määritellään erikseen omalla tarkentimella Näkyvyystarkentimet: public näkyy ulospäin protected näkyy tälle ja periytetyille luokille sekä pakkauksen sisällä private näkyy vain tälle luokalle oletuksena näkyvät saman pakkauksen sisällä 2006 13 2006 14 LUOKAN RAKENNE JA TARKENTIMET: ESIMERKKI LUOKKA JA INSTANSSIT // [tarkentimet] class luokan_nimi public class MyClass { // Jäsenmuuttujia private final static int MY_CONSTANT = 10; private double dval; public int inum; // Konstruktori MyClass() { dval = 0.0; inum = 0; // Muita metodeja public void setval(double d){ dval = d; public double getval(double d){ return d; Jos luokka sisältää attribuutteja tai metodeja, jotka eivät ole static:eja, niin luokkia käytettäessä niistä luodaan instanssit Näitä metodeja ja attribuutteja kutsutaan instanssimetodeiksi ja attribuuteiksi Toisaalta static-tarkentimella määriteltyjä attribuutteja ja metodeja kutsutaan luokkametodeiksi ja attribuuteiksi 2006 15 2006 16

LUOKKA JA INSTANSSIT LUOKKA JA INSTANSSIT Luokkametodit voivat siis käsitellä vain luokka-attribuutteja Instanssimetodit voivat käsitellä sekä instanssiattribuutteja että luokka-attribuutteja Luokka-attribuutista on muistissa vain yksi versio Instanssiattribuuteista on jokaisesta omansa class myclass { int idata; static int istatic = 0; public myclass(){ idata = 0; public static void setstatic(int i){ istatic = i; public void set(int i){ idata = i; myclass A = new myclass(); myclass B = new myclass(); A.set(10); B.set(20); B.setStatic(50); myclass A: idata = 10; istatic myclass B: idata = 20; istatic istatic=50; 2006 17 2006 18 LUOKAN RAKENNE JA TARKENTIMET PAKKAUKSET Kaikkien luokkien perimmäinen kantaluokka on Object Luokkamäärittelyyn voidaan liittää public, abstract ja final Oletuksena luokka ei näy pakkauksen ulkopuolelle public tekee näkyvyydestä globaalin Abstrakti kantaluokka tarkentimella abstract Tarkennin final kieltää periyttämisen Pakkaus (package) on kokoelma luokkia Auttaa jakamaan ohjelmia pienempiin kokonaisuuksiin Esimerkiksi javax.swing sisältää luokan JButton eli ko. luokan täydellinen nimi on javax.swing.jbutton Pakkauksia ja luokkia voidaan ottaa käyttöön import-lauseella: import javax.swing.jbutton; 2006 19 2006 20

PAKKAUKSET RAJAPINNAT Jokainen luokka kuuluu johonkin pakkaukseen jollei määritelty, niin kuuluu oletuspakkaukseen Pakkausmäärittely tehdään luokan alkuun package-lauseella, esim: package oma.apu; Pakkauksen nimi on käytännössä hakemistopolku eli esim. pakkauksen oma.apu luokat löytyvät hakemiston oma/apu -alta Javassa erittäin kätevä ominaisuus on rajapinta-käsite (interface) Tavallaan korvaa moniperinnän Samantyyppistä toiminnallisuutta toteuttaville luokille voi määritellä yhteisen rajapinnan Luvataan, että luokka toteuttaa (implements) rajapinnan mukaiset metodit Metodia ei toteuteta rajapinnassa, vaan määritellään ainoastaan prototyyppi 2006 21 2006 22