812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Samankaltaiset tiedostot
Rajapinta (interface)

Olio-ohjelmointi Javalla

Mikä yhteyssuhde on?

20. Javan omat luokat 20.1

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

16. Javan omat luokat 16.1

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

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

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

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

Pakkauksen kokoaminen

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

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

17. Javan omat luokat 17.1

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

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

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

Javan perusteita. Janne Käki

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Pakkauksen kokoaminen

17. Javan omat luokat 17.1

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

9. Periytyminen Javassa 9.1

Luokan sisällä on lista

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

Ohjelmointi 2 / 2010 Välikoe / 26.3

9. Periytyminen Javassa 9.1

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

public static void main (String [] args)

Metodien tekeminen Javalla

1 Tehtävän kuvaus ja analysointi

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

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

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

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

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

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

Listarakenne (ArrayList-luokka)

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

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

Ohjelmoinnin jatkokurssi, kurssikoe

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

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

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

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Periytyminen (inheritance)

Java kahdessa tunnissa. Jyry Suvilehto

Tietokannat II -kurssin harjoitustyö

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

2. Olio-ohjelmoinista lyhyesti 2.1

KOHDELUOKAN MÄÄRITTELY

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

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

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

18. Abstraktit tietotyypit 18.1

14. Poikkeukset 14.1

7. Oliot ja viitteet 7.1

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

Luokat ja oliot. Ville Sundberg

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

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

YHTEYSSUHDE (assosiation)

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

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

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

1. Omat operaatiot 1.1

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

Oliot viestivät metodeja kutsuen

Java-kielen perusteet

4. Olio-ohjelmoinista lyhyesti 4.1

private TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla;

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

14. Poikkeukset 14.1

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:

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

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

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Java-kielen perusteita

Ohjelmoinnin perusteet, kurssikoe

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

7. Näytölle tulostaminen 7.1

19. Olio-ohjelmointia Javalla 19.1

15. Ohjelmoinnin tekniikkaa 15.1

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

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

Java-kielen perusteita

Rinnakkaisohjelmointi, Syksy 2006

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

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

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

Ohjelmointi 2, välikoe

JAVA-OHJELMOINTI 3 op A274615

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

Luokan muodostimet (Constructors)

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Ohjelmistotekniikan menetelmät, suunnittelumalleja

Transkriptio:

812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa

Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää n Ei edellytä luokasta luotua oliota n Piirteeseen viitataan LuokanNimi.piirteenNimi 2

Luokkakohtaiset piirteet n Luokkakohtaiset piirteet määritellään käyttäen staticavainsanaa public class Opiskelija { private static int luotujenlukumaara; //luokkakoht atrib. private int monesko; //oliokohtainen attrib. private String nimi; //oliokohtainen attrib. public Opiskelija(String nimipar){ luotujenlukumaara++; nimi = nimipar; monesko = luotujenlukumaara; } public static int getlukumaara(){ return luotujenlukumaara;} public String tostring(){ return("olen +nimi+" ja numeroni on +monesko+" ja meita on kaikkiaan +luotujenlukumaara); 3

Luokkakohtaiset piirteet import java.io.*; public class OpiskelijaDemo { public static void main(string [] args){ Opiskelija op1 = new Opiskelija("Kalle"); System.out.println(op1); Opiskelija op2 = new Opiskelija("EinoMies"); System.out.println(op2); System.out.println(op1); System.out.println("Opiskelijoiden lukumaara: "+ Opiskelija.getLukumaara()); 4

Luokkakohtaiset piirteet olen Kalle ja jarjestysnumeroni on 1 ja meita on kaikkiaan 1 olen EinoMies ja jarjestysnumeroni on 2 ja meita on kaikkiaan 2 olen Kalle ja jarjestysnumeroni on 1 ja meita on kaikkiaan 2 Opiskelijoiden lukumaara: 2 5

Luokkakohtaiset piirteet n Luokkakohtaississa metodeissa ei voi käyttää this-viittausta oliokohtaisia piirteitä n esim. getlukumaara ei voi käyttää monesko attribuuttia n Luokkakohtaisen attribuutin voi alustaa luokkakohtaisella alustajalla public class Satunnaisluku { public static final int SATUNNAISLUKU; static { Random rand = new Random(); SATUNNAISLUKU = rand.nextint(100); 6

Luokkakohtaiset piirteet n Luokkakohtaiset metodit ovat työkalumetodeja n esim. Math-luokan matemaattiset operaatiot n Tehdasmetodi Vaihtoehto rakentajille (konstruktoreille) Huolehtii olion luomisesta Esim. String luokan valueof metodit public static String valueof(boolean b){ return b? true : false ; 7

Luokkakohtaiset piirteet n Ainokainen Oliosta luodaan vain yksi instanssi Kaikki pääsevät käsiksi Luokan kaikki rakentajat yksityisiä, vain luokan sisällä voi luoda instanssin public class Ainokainen{ public static final Ainokainen AINOKAINEN = new Ainokainen(); private Ainokainen(){ 8

Luokkakohtaiset piirteet n Ainokaisen voi luoda myös toisin Käytetään tehdasmetodia public class Ainokainen{ private static final Ainokainen AINOKAINEN = new Ainokainen(); private Ainokainen(){ public static Ainokainen getinstance(){ return AINOKAINEN; 9

Pakkaukset ja luokkien tuonti Pakkausten (package) avulla hallinnoidaan luokkakokonaisuuksia Yhteenkuuluvat luokat samaan pakkaukseen Javassa kansio, jonne luokka talletetaan Hierarkkinen rakenne, Java-ympäristön pakkaukset pakkauksen java alipakkauksissa java.lang, kielen perusluokat java.io, tiedostoihin ja tietovirtoihin liittyvät luokat java.util, yleiskäyttöisiä luokkia jne pakkauksilla voi olla alipakkauksia 10

Pakkaukset n Omat luokat kannattaa jakaa asiakokonaisuuksittain pakkauksiin n Pakkaukset otetaan käyttöön import lauseella n Alussa pakkauksen nimi, piste ja luokan nimi import java.util.scanner; n Jos samasta pakkauksesta käytetään useita luokkia, käytetään luokan nimen paikalla tähteä import java.io.*; n Jokaiseen käännösyksikköön tuodaan automaattisesti java.lang pakkauksen luokat mm. String ja System 11

Pakkaukset n Pakkaukset luovat nimiavaruuden n Samannimisiä luokkia voi olla eri pakkauksissa n Samaan käännösyksikköön eri pakkauksista tuotavat samannimiset luokat on eroteltava toisistaan java.util.list java.awt.list n import -määrittelyllä voidaan tuota myös luokkakohtaisia piirteitä, joita voi käyttää suoraan piirteen nimellä import java.lang.math.pi; import java.lang.math.pow; 12

Pakkaukset import static java.lang.math.pi; import static java.lang.math.pow; public class YmpyranAlanLaskuri { public static double laskeympyranala(double r){ return PI * pow(r, 2.0); 13

Rajapintaluokka (liittymä, interface) n Rajapintaluokassa määritellään vain metodien otsikot n Rajapinnan toteutus ja rajapinta erotetaan toisistaan (java SE 8:ssa voi olla myös metodin oletustoteutus) n Metodit automaattisesti abstrakteja medodeja n Abstraktin metodin määrittely päättyy puolipisteeseen n Rajapinnan dokumentointi oleellista n Metodit on kuvattava niin tarkasti, että toteuttaja osaa toteuttaa ne ja metodien käyttäjä osaa niitä käyttää 14

Rajapintaluokka n Ainoastaan abstrakteja metodeja sisältävän rajapintaluokan merkitys on staattinen, ei vaikutusta olioiden suoritusaikaiseen käyttäytymiseen n Rajapinnan toteuttavan luokan on toteutettava kaikki rajapinnan abstraktit metodit n Toteuttavia luokkia voi olla useita n Rajapinnan määrittelyssä käytetään sanaa interface sanan class tilalla n Määrittely muistuttaa luokan määrittelyä n Rajapintaluokkaa käyttävän luokan toteutuksessa käytetään implements-avainsanaa 15

Rajapintaluokka interface Ajattelija{ public String ajattele(); class Koomikko implements Ajattelija { private String ajatus; public Koomikko(String nimi, String aatos) { ajatus = aatos; public String ajattele(){ return ajatus; Lähde:Ari Vesanen Olio-ohjelmoiti 2010 16

Rajapintaluokka n Luokka voi toteuttaa usita rajapintaluokkia, rajapintojen nimet erotetaan pilkuilla esim. String-luokka public final class String implements Serializable, CharSequence, Comparable<String> { //... n Aina ei voi toteuttaa yhtäaikaa monta liittymää 17

Rajapintaluokka interface RajapintaA{ public void lisaa(object o); //lisäys viimeiseksi public void poista(); //poista olio interface RajapintaB{ public void lisaa(object o);//lisäys ensimmäiseksi public Object poista(); //poista ja palauta poistettu olio n Molemmat rajapinnat ytäaikaa toteuttavaa luokkaa ei voi toteuttaa Samalle metodille (lisaa) ei voi tehdä kahta erialista toteutusta, koska otsikot ovat samat 18

Rajapintaluokka poista-metodin kohdalla metodin paluuarvo ei tee vielä eroa metodien välille n Java 8 sallii rajapintaluokan metodeille oletustoteutuksen, metodi on tällöin konkreetti eli ei-abstrakti n Mahdollistaa metodien lisäämisen rajapintaluokkaan niin että rajapinnan toteuttaviin luokkiin ei tarvitse tehdä muutoksia jälkikäteen n Oletusmetodin määrittelyssä käytetään defaultavainsanaa 19

Rajapintaluokka public interface DoubleJoukko { //... /* palauttaa joukon lukujen summan */ public default double summa(){ double summa = 0.0; for( double doublearvo: taulukko){ summa = summa + doublearvo; return summa; public class TaulukkoDoubleJoukko implements DoubleJoukko { //... public double summa(){ return summa; 20