Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

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

Samankaltaiset esitykset


Esitys aiheesta: "Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet."— Esityksen transkriptio:

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

2 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 Grotenfelt217.9.2012

3 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 Grotenfelt317.9.2012

4 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 Grotenfelt417.9.2012

5 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 Grotenfelt517.9.2012

6 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 Grotenfelt617.9.2012

7 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 Grotenfelt717.9.2012

8 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 Grotenfelt817.9.2012

9 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 Grotenfelt917.9.2012

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

11 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 Grotenfelt1117.9.2012

12 Esimerkki 1: Staattinen muuttuja Outi Grotenfelt1217.9.2012 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."); }

13 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 Grotenfelt1317.9.2012

14 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 Grotenfelt1417.9.2012

15 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); }

16 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); }

17 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 Grotenfelt1717.9.2012 AccessSpecifier abstract class ClassName; AccessSpecifier abstract ReturnType MethodName(ParameterList);

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

19 Esimerkki: abstraktit luokat ja metodit.. Vesa Ollikainen & Outi Grotenfelt1917.9.2012

20 Esimerkki: abstraktit luokat ja metodit.. Vesa Ollikainen & Outi Grotenfelt2017.9.2012

21 Esimerkki: abstraktit luokat ja metodit.. Vesa Ollikainen & Outi Grotenfelt2117.9.2012

22 www.metropolia.fi www.facebook.com/MetropoliaAMK Outi.grotenfelt@metropolia.fi KIITOS!


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

Samankaltaiset esitykset


Iklan oleh Google