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

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

Minimaalinen Java-ohjelma •Kaikki ohjelmakoodi on luokkamäärityksen sisällä •Ohjelma käynnistyy ”public static void main(String[] args)”-metodista •System.out.print()
Osion kaksi kertaus Jukka Juslin © Jukka Juslin.
6. Metodit.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
© Jukka Harju, Jukka Juslin1 Java-ohjelmointi opas ammattimaiseen osaamiseen Luku 13 Monimuotoisuus.
16. Javan omat luokat.
© 2004 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Java-perusteet Kari Kujansuu
Outi Grotenfelt & Vesa Ollikainen
Polymorfismi Sisältö Mitä on polymorfismi?
Nämä kalvot on lisensoitu Creative Commons Attribution-ShareAlike 1
Tuloksellinen Java-ohjelmointi Luku 9 Taulukot ja perustietorakenteet
Taulukot Jukka Juslin © Jukka Juslin 2006.
Taulukot: Array Taulukko Javassa pitää aina perustaa (new)
Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille
Käännösaikaiset virheilmoitukset • Tulee silloin, kun koodissa on jotain sellaista, joka ei ole Javan syntaksin mukaista • Esim. – Syntax error, insert.
Ohjelmointitaito (ict1td002, 12 op) Syksy 2008
13. Pakkaukset.
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
Perintä. Yleistä Olio-ohjelmoinnin menetelmä muodostaa uusia luokkia aiemmin määriteltyjen luokkien avulla Luokka saa automaattisesti käyttöönsä kaikki.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Yksinkertaiset graafiset syöttö- ja tulostustoiminnot.
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap.
16. Lohkot Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat.
Poikkeustenkäsittely  Mitä poikkeustenkäsittely tarkoittaa?  Poikkeuksen käsitteleminen  Poikkeusluokkien hierarkia  Poikkeuksen heittäminen 1.
9. Periytyminen Javassa.
Toiston tekeminen Javalla  Mikä toistorakenne on?  while toistorakenne  do-while toistorakenne  for toistorakenne 1.
13. Hyvä ohjelmointitapa (osa 1)
© Jukka Harju, Jukka Juslin
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
7. Oliot ja viitteet.
Luokan määrittely class-määreellä tMyn1 Luokan määrittely class-määreellä Luokan määrittely tarkoittaa luokan tietojäsenten esittelyä ja jäsenfunktioiden.
String-vertailusta ja Scannerin käytöstä (1/2)
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
20. Javan omat luokat.
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Standardi- ja tietorakenneluokkia.
Kuinka niitä käsitellään
1 DataOutputStream ja DataInputStream DataOutputStream:lla voidaan tallentaa perustietotyyppien arvoja binäärimuotoiseen tiedostoon DataInputStream:lla.
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Olioon kohdistuvia perustoimintoja tMyn1 Olioon kohdistuvia perustoimintoja Kopiointimuodostin (copy constructor) alustaa olion tietojäsenet saman luokan.
Poikkeukset Yleistä Virheeseen varautuminen tarkoittaa sitä, että ohjelmoija huomioi koodia kirjoittaessaan ajonaikaisen virheen mahdollisuuden.
17. Kooste Kooste Kooste (aggregation) on luokkien A ja B välinen suhde, joka tarkoittaa “A on B:n osa” tai “A kuuluu B:hen”. − Koostesuhteessa.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op.
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely.
Oliot ja luokat Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olio- ohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma,
Vesa Ollikainen & Outi Grotenfelt
Olioiden taulukointi Perustaulukon käyttö Luokan ilmentymät voidaan tallettaa taulukkoon samoin kuin muuttujat Esimerkki talletetaan taulukkoon opintojaksojen.
11. Rajapinnat Sisällys Mitä rajapinnat ovat? Kuinka ne määritellään ja otetaan käyttöön? Moniperiytyminen rajapintojen avulla. Varoituksen.
Graafinen käyttöliittymä, osa 1
Kantaluokan määrittely tMyn1 Kantaluokan määrittely Perinnän käyttöön liittyvät varatut sanat private, protected, public, final ja abstract. Ne tarkoittavat.
Javan oliovirrat eli oliotiedostojen käsittely. Olio- eli objektitiedostojen käsittely Käsittely täysin samanlaista kuin muiden tiedostojen 1.Otetaan.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
14. Poikkeukset Sisällys Johdanto poikkeuksiin. Poikkeusten käsittely: − Poikkeusten käsittely paikallisesti. − Poikkeusten heittäminen. Exception.
5. Kapselointi.
6. Metodit.
11. Rajapinnat.
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
Kantaluokan määrittely
6. Metodit.
13. Pakkaukset.
4. Attribuutit.
7. Näytölle tulostaminen
3. Attribuutit.
13. Pakkaukset.
4. Luokan testaus ja käyttö olion kautta
eli oliotiedostojen käsittely
Esityksen transkriptio:

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

Pakkaukset ja määreet  Toisiinsa liittyvät luokkatiedostot voidaan koota pakkauksiksi.  Luo hierarkiaa ja järjestystä ohjelmistotuotteeseen.  Helpottaa uudelleenkäyttöä.  Näkyvyysmääreet (muuntimet) säätelevät luokkien näkyvyyttä ja käytettävyyttä.  Suojaa ohjelmistokehittäjiä virheiltä ja sivuvaikutuksilta.  public ja private metodien ja instanssimuuttujien yhteydessä ovat esimerkkejä määreistä. Vesa Ollikainen & Outi Grotenfelt

Pakkaukset ja määreet  Pakkaukset ovat nimettyjä luokkaryhmiä.  Pakkaukset voivat sisältää toisia pakkauksia.  Yllä kutsutaan javax -pakkaukseen kuuluvan swing -pakkauksen JOptionPane -luokan staattista metodia ShowMessageDialog().  pakkaus on graafinen käyttöliittymäkirjasto Vesa Ollikainen & Outi Grotenfelt

Pakkausten tuonti  Yllä import -lauseella tuodaan kaikki javax.swing - pakkaukseen kuuluvat luokat näkyville.  Pakkauksen nimeä ei tarvitse erikseen antaa.  NetBeans-/JBuilder-ympäristössä lähdekoodit menevät oletusarvoisesti oletuspakkaukseen.  pakkauksen nimen voi vaihtaa luokkaa luotaessa.  Saman projektin toisen pakkauksen luokat saa näkyville lauseella import pakkauksenNimi.*; Vesa Ollikainen & Outi Grotenfelt

Luokkien näkyvyys  Luokka voi olla julkinen tai pakkauskohtainen  Julkinen luokka ( public -määre) näkyy kaikkiin muihin luokkiin  Pakkauskohtainen luokka (ei määrettä) näkyy samaan pakkaukseen Vesa Ollikainen & Outi Grotenfelt

Metodien ja muuttujien näkyvyys  Metodit ovat näkyvyydeltään  julkisia ( public )  pakkauksen sisälle ja aliluokkiin näkyviä ( protected )  pakkauksen sisäisiä (ei määrettä)  luokan sisäisiä ( private )  Myös asetus- ja saantimetodien (”setterit” ja ”getterit”) näkyvyys on syytä harkita tapauskohtaisesti  Asetetaan pienin riittävä näkyvyys  Kaikille ei tarvitse antaa samaa näkyvyyttä. Vesa Ollikainen & Outi Grotenfelt

final -muunnin  final -luokka ei voi saada aliluokkaa.  Esimerkiksi String -luokka on final -määreinen.  motiivina kielen perusteiden selkeys  final -muuttuja on vakio.  Arvoa ei voi koskaan muuttaa.  Arvo asetetaan käännöksen tai suorituksen aikana.  Kääntäjä vaatii, että arvo asetetaan ennen käyttöä.  final -metodia ei voi ylikirjoittaa aliluokassa.  Konstruktorien kutsumista metodeista suositellaan tehtävän final -määreisiä. Tällöin aliluokassa ylikirjoitettu koodi ei voi aiheuttaa sivuvaikutuksia konstruktorin toimintaan. Vesa Ollikainen & Outi Grotenfelt

Esimerkki: final -muuttuja  Yllä olevassa esimerkissä on kaksi vakiota.  vakion eka arvo asetetaan käännösaikaisesti.  vakion toka arvo asetetaan suorituksen aikana. Vesa Ollikainen & Outi Grotenfelt

Esimerkki: final -metodi  Kulkuneuvo -luokan konstruktori kutsuu parannaÄäntä() - metodia.  Jos konstruktorin kutsuma metodi ylikirjoitettaisiin aliluokassa, koodin modulaarisuus kärsisi.  Asetetaan metodilla final -määre. Nyt kulkuneuvon luonti hoidetaan varmasti kokonaan tässä luokassa. Vesa Ollikainen & Outi Grotenfelt

 final -määreisen metodin parannaÄäntä() ylikirjoitusyritys aiheuttaa käännösaikaisen virheilmoituksen. Vesa Ollikainen & Outi Grotenfelt

Staattiset metodit ja muuttujat  Staattinen metodi tai muuttuja ( static -määre) on yhteinen luokan kaikille olioille.  Staattista metodia kutsutaan luokkametodiksi.  Staattista muuttujaa kutsutaan luokkamuuttujaksi.  Metodin tai muuttujan vaatima muistitila varataan vain kerran.  Staattisiin muuttujiin voi koota luokan olioille yhteiset tiedot.  Staattinen metodi ei voi suoraan viitata luokan instanssimuuttujaan.  tarvitaan olioviittaus  myös this -avainsana on kielletty.  ei ole olemassa ilmentymää, johon this viittaisi. Vesa Ollikainen & Outi Grotenfelt

Esimerkki 1: Staattinen muuttuja Outi Grotenfelt public class Countable { private static int instanceCount = 0; public Countable() { instanceCount++; // increments the static field } public int getInstanceCount(){ return instanceCount; // number of created instances } public class StaticDemo { public static void main(String[] args) { int objectCount; Countable obj1 = new Countable(); Countable obj2 = new Countable(); Countable obj3 = new Countable(); objectCount = obj1.getInstanceCount(); System.out.print("Countable class has“ +objectCount+" objects."); }

Esimerkki2: Staattinen muuttuja ja metodi  Muuttuja henkilöidenLkm on laskuri luoduille luokan olioille.  Olioille yhteisenä muuttujana se määritellään luokkamuuttujaksi ( static ).  Staattisen muuttujan arvo haetaan staattisella metodilla getHenkilöidenLkm(). Vesa Ollikainen & Outi Grotenfelt

Esimerkki2: Staattinen muuttuja ja metodi..  Huomaa luokkametodin kutsu.  Myös kutsu eka.getHenkilöidenLkm() olisi syntaktisesti oikein, mutta olioviittauksen käyttö tässä olisi harhaanjohtavaa koodia. Vesa Ollikainen & Outi Grotenfelt

30/3/15Helsinki Metropolia University of Applied Sciences 15 public class PassObject { public static void main(String[] args) { Rectangle box = new Rectangle(14.0, 3.3); System.out.println("Contents of the box object:" + "\n length: "+box.getLength()+ "\n widht: "+box.getWidth()); changeRectangle(box); System.out.println("Contents of the box object now:" + "\n length: "+box.getLength()+ "\n widht: "+box.getWidth()); } public static void changeRectangle(Rectangle r){ r.setLength(0.0); r.setWidth(0.0); }

30/3/15Helsinki Metropolia University of Applied Sciences 16 import javax.swing.JOptionPane; public class ReturnObject { public static void main(String[] args) { BankAccount myAccount; myAccount = getAccount(); JOptionPane.showMessageDialog(null, "Your account has “ +”the balance of €"+ myAccount.getBalance()); } public static BankAccount getAccount(){ String input; double balance; input = JOptionPane.showInputDialog("Give the account” +“balance:"); balance = Double.parseDouble(input); return new BankAccount(balance); }

Abstraktit luokat ja metodit  Abstraktista luokasta ei voi luoda ilmentymää.  Abstraktista metodista ei määritellä toteutusta.  Toteutus on määriteltävä abstraktin luokan aliluokassa.  Aliluokan määritys kelpaa kääntäjälle vasta, kun yliluokan abstrakti metodi on saanut toteutuksen.  Luokka on määriteltävä abstraktiksi (avainsana abstract ) aina, jos sillä on vähintään yksi abstrakti metodi. Vesa Ollikainen & Outi Grotenfelt AccessSpecifier abstract class ClassName; AccessSpecifier abstract ReturnType MethodName(ParameterList);

Esimerkki: abstraktit luokat ja metodit  Abstraktin skaalaa() -metodin määritys pakottaa toteuttamaan skaalausoperaation kaikissa Kuvio -luokalle määriteltävissä aliluokissa. Vesa Ollikainen & Outi Grotenfelt

Esimerkki: abstraktit luokat ja metodit.. Vesa Ollikainen & Outi Grotenfelt

Esimerkki: abstraktit luokat ja metodit.. Vesa Ollikainen & Outi Grotenfelt

Esimerkki: abstraktit luokat ja metodit.. Vesa Ollikainen & Outi Grotenfelt

KIITOS!