812347A Olio-ohjelmointi, X Reflektiivisyys

Samankaltaiset tiedostot
Mikä yhteyssuhde on?

Olio-ohjelmointi Javalla

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

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

1. Olio-ohjelmointi 1.1

Luokat ja oliot. Ville Sundberg

16. Javan omat luokat 16.1

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

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

Periytyminen (inheritance)

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

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

Metodien tekeminen Javalla

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

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

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

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

Ohjelmistojen mallintaminen, sekvenssikaaviot

9. Periytyminen Javassa 9.1

1 Tehtävän kuvaus ja analysointi

Oliot viestivät metodeja kutsuen

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

public static void main (String [] args)

20. Javan omat luokat 20.1

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

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

Luokan sisällä on lista

Ohjelmoinnin jatkokurssi, kurssikoe

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

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

Pakkauksen kokoaminen

YHTEYSSUHDE (assosiation)

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Olio-ohjelmointi Virhetilanteiden käsittely

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

14. Poikkeukset 14.1

7. Oliot ja viitteet 7.1

2. Olio-ohjelmoinista lyhyesti 2.1

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

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

9. Periytyminen Javassa 9.1

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

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Javan perusteita. Janne Käki

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

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

17. Javan omat luokat 17.1

Listarakenne (ArrayList-luokka)

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely

Rinnakkaisohjelmointi, Syksy 2006

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

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

Ohjelmointi 2 / 2010 Välikoe / 26.3

Rajapinta (interface)

KOHDELUOKAN MÄÄRITTELY

Tietokannat II -kurssin harjoitustyö

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

14. Poikkeukset 14.1

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

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

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

1. Omat operaatiot 1.1

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

15. Ohjelmoinnin tekniikkaa 15.1

19. Olio-ohjelmointia Javalla 19.1

Osio2: Taulukot Jukka Juslin

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Java ja grafiikka. Ville Sundberg

JAVA-OHJELMOINTI 3 op A274615

Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla

Java kahdessa tunnissa. Jyry Suvilehto

Lista luokan sisällä

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

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

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

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

4. Olio-ohjelmoinista lyhyesti 4.1

8/20: Luokat, oliot ja APIt

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

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

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

TyontekijaOhjelma. +main() (käyttää) + = public - = private

TIETORAKENTEET JA ALGORITMIT

ict02d Osio2- luento 3 Olio-ohjelmointi: Luokkien kirjoittaminen

Luento 6. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä

Metodien tekeminen Javalla

T Henkilökohtainen harjoitus: FASTAXON

Sisällys. 15. Lohkot. Lohkot. Lohkot

Ohjelmoinnin perusteet, 1. välikoe

7. Näytölle tulostaminen 7.1

Taulukoiden käsittely Javalla

15. Ohjelmoinnin tekniikkaa 15.1

P e d a c o d e ohjelmointikoulutus verkossa

Transkriptio:

812347A Olio-ohjelmointi, 2016 X Reflektiivisyys

Sisältö 1. Luokkainformaatio 2. Olion luominen luokkaolion avulla 3. Metodit olioina 2

Luokkainformaatio n Reflektio: Mahdollisuus ohjelman suorituksen aikana tarkastella sen ominaisuuksia n Luokkainformaation saamiseksi monissa kielissä luokkaolioita: oliot vastaavat ohjelmointikielen luokkia Java: luokka Class n Javassa reflektiivisyyteen liittyvät luokat joko pakkauksessa java.lang tai java.lang.reflect 3

Luokkainformaatio Javassa n Luokka Class Javassa laaja Saadaan luokasta paljon informaatiota n Tunnetusta luokasta (OmaLuokka) saa luokkaolion Class myclass = OmaLuokka.class; n Luokan emoluokan luokkaolio Class superclass = myclass.getsuperclass(); n Yleensä haetaan olion luokkainformaatio: OmaLuokka ol = new OmaLuokka(); Class aclass = ol.getclass(); 4

Luokkainformaatio public class LuokkaDemo_1 {! public static void main( String [] args ){!! Class myclass = LuokkaDemo_1.class;! printclassname( myclass );!! Class superclass = myclass.getsuperclass();! printclassname( superclass );!! LuokkaDemo_1 ld1 = new LuokkaDemo_1();! Class aclass = ld1.getclass();! printclassname( aclass );!! static void printclassname(object obj) {! System.out.println("Olion \"" + obj +! "\" luokka on " +! obj.getclass().getname());! 5

Luokkainformaatio java LuokkaDemo_1 Olion "class LuokkaDemo_1" luokka on java.lang.class Olion "class java.lang.object" luokka on java.lang.class Olion "class LuokkaDemo_1" luokka on java.lang.class 6

Olion luominen luokkaolion avulla n Onnistuu Javassa luokkaolion avulla n Ohjelmassa luokka class OmaLuokka { public OmaLuokka() { } } n Olion luonti Class classobj = Class.forName("OmaLuokka"); Object obj = classobj.newinstance(); n Onnistuu, jos luokalla parametriton konstruktori 7

Olion luominen luokkaolion avulla public class LuokkaDemo_1 {! public static void main(string [] args)throws InstantiationException, ClassNotFoundException,IllegalAccessException {!! Class classobj = Class.forName("OmaLuokka");! Object obj = classobj.newinstance();! printclassname( classobj );! static void printclassname(object obj) {! System.out.println("Olion \"" + obj +! "\" luokka on " +! obj.getclass().getname());! class OmaLuokka {! public OmaLuokka() {! System.out.println("Luotiin OmaLuokka-olio");! 8

java LuokkaDemo_1 Luotiin OmaLuokka-olio Olion "class OmaLuokka" luokka on java.lang.class 9

Olion luominen luokkaolion avulla (2) n Luokan konstruktorien saaminen: Class-luokan metodi public Constructor<?>[] getconstructors() throws SecurityException Palauttaa taulukon, jossa kaikki konstruktorit public Constructor<T> getconstructor(class<? >... parametertypes) throws NoSuchMethodException, SecurityException Palauttaa konstruktorin, jolla annettu parametrilista n Olio luodaan kutsumalla konstruktorin newinstancemetodia Voidaan antaa parametrilista 10

Metodit olioina n Javassa luokkien metodit ovat olioita Luokka java.lang.reflect.method n Luokan omat metodit voidaan selvittää luokan Class metodilla public Method[] getdeclaredmethods() throws SecurityException Luokassa määritellyt ja uudelleenmääritellyt Konstruktorit metodilla getconstrucutors n Metodia voidaan kutsua Method-luokan metodilla public Object invoke(object obj, Object... args) throws IllegalAccessException, // etc 11

Metodit olioina! OmaLuokka! omal = new OmaLuokka(1, "aa");!! Class omaclass = om1.getclass();! Method met1 = omaclass.getmethod( "tostring",new Class[] {} );! String jono = (String) met1.invoke(omal, new Object[] {} );! System.out.println("toString palautti: " + jono);! tostring palautti: Value: 1 Name: aa 12!

Metodit olioina: käyttökohteita n Harvoin normaaliohjelmoinnissa tarpeen n Hyödyllistä graafisissa kehitysympäristöissä, joissa ohjelmoijan on päästävä käsiksi komponenttien ominaisuuksiin ja metodeihin n Olioiden hajauttaminen helpompaa Voidaan selvittää dynaamisesti olion metodit ja parametrit 13