Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

DAIMIIntroducerende objektorienteret programmering12A.1 Moduler Packages i Java.

Lignende præsentationer


Præsentationer af emnet: "DAIMIIntroducerende objektorienteret programmering12A.1 Moduler Packages i Java."— Præsentationens transcript:

1 DAIMIIntroducerende objektorienteret programmering12A.1 Moduler Packages i Java

2 DAIMIIntroducerende objektorienteret programmering12A.2 Abstraktion  Begrebet abstraktion er centralt i datalogien: At overskue komplicerede problemstillinger kræver at vi kan pakke detaljerne væk og koncentrere os om de “store linjer”.  Et godt eksempel er Java compileren: Mange års forskning og arbejde er pakket ind bag en meget simpel kontrakt: I skal bare trykke F7.  Vi har brugt dette ustandseligt her i kurset til at pakke komplekse ting ind bag relativt simple kontrakter.

3 DAIMIIntroducerende objektorienteret programmering12A.3 Abstraktionsniveauer  Abstraktion foretager vi på alle niveauer  En række (java)sætninger, der løser et delproblem samles og navngives i en metode  En række metoder med tilhørende data, som repræsentere en konkret del af vores problemområde samles i en klasse

4 DAIMIIntroducerende objektorienteret programmering12A.4 Abstraktionsniveauer  Næste trin er naturligvis:  En række tæt samarbejdende klasser, der repræsenterer en del af vores problemområde, samles i et  Modul  eller mere java’sk: En pakke (package)

5 DAIMIIntroducerende objektorienteret programmering12A.5 Eksempler  Vores (snart lidt kedelige) skildpadde er realiseret i klassen Turtle, men kræver en sandkasse (TurtleWorld), der igen er realiseret som et vindue (TurtleWindow) eller en applet (TurtleApplet). Disse klasser er indbyrdes stærkt afhængige, deres samarbejde giver os abstraktionen: En skildpadde i en sandkasse.  Pakken: ioop.turtle

6 DAIMIIntroducerende objektorienteret programmering12A.6 Eksempler  Det samme gælder de øvrige pakker:  ioop.media:Klasser som arbejder sammen om at give et Presenter framework.  ioop.recipes:Klasser som håndterer en database af opskrifter.

7 DAIMIIntroducerende objektorienteret programmering12A.7 Package  En java package tillader at gruppere en række klasser i en enkelt, navngiven, enhed som virker som et selvstændigt virkefelt (scope).

8 DAIMIIntroducerende objektorienteret programmering12A.8 Brug af en package  En klasse har kun virkefelt indenfor en given pakke.  For at vi kan se en klasse fra en pakke i en anden, skal vi importere klassen:  Der er to måder at gøre dette på:  import ioop.turtle.Turtle; En navngiven (og public!) klasse importeres.  import ioop.turtle.*; Alle (public!) klasser i pakken importeres.

9 DAIMIIntroducerende objektorienteret programmering12A.9 Synlighed repetition  private –Metoden/variablen er kun tilgængelige i klassen selv.  package (ingen modifikation) –Metoden/variable er tilgængelig i klassen selv, og tilgængelig for, og nedarves til, kode i samme pakke (package).  protected –Metoden/variable er tilgængelig i klassen selv, og tilgængelig for, og nedarves til, kode i samme pakke (package) og kode i subklasser.  public –Tilgængelig for alle med tilgang til klassen, og nedarves til alle subklasser

10 DAIMIIntroducerende objektorienteret programmering12A.10 Erklæring af pakker  En pakke erklæres implicit, nemlig ved at en klasse (egt. alle klasser i en javafil) angiver et tilhørsforhold til en given pakke.  Dette gøres ved at angive en ‘package-sætning’ som den første i en java fil:  package myPackage;  public class mySuperDuperClass {  …  }

11 DAIMIIntroducerende objektorienteret programmering12A.11 Packagenavne  Packagenavne har en semantik som er nært forbundet med javafilens fysiske placering på ens harddisk.  Et packagenavn er en række navne, adskildt med punktum: java.util, ioop.recipes, java.awt.event,...  Hvert navn skal modsvares af et fysisk katalog med samme navn på ens disk.

12 DAIMIIntroducerende objektorienteret programmering12A.12 Packagenavne  Dvs. klasserne (egt..class filerne) i ioop.recipes skal ligge i et katalog:  ioop.recipes  …\ioop\recipes  java.awt.event  …\java\awt\event  (Alternativt kan.class filerne ligge i en zip eller jar fil, som er pakket med den rigtige katalogstruktur.)

13 DAIMIIntroducerende objektorienteret programmering12A.13 Indlejrede pakker  Pakker kan have ‘underpakker’ i et hierarki, nøjagtigt som et katalog kan have underkataloger. Dette hierarki bruges til at udtrykke et naturligt tilhørsforhold:  ioop.recipes: pakken recipes tilhører pakken ioop.  Der kan være klasser på alle niveauer, f.eks. så ligger klassen Date direkte i ioop pakken:  import ioop.Date;

14 DAIMIIntroducerende objektorienteret programmering12A.14 Virkefelt for indlejrede pakker  At pakker er hierarkisk indlejrede har dog ingen semantisk betydning for virkefelt; selvom ioop.recipes ligger i pakken ioop kan den alligevel ikke se ioop.Date med mindre den eksplicit importer den.  Det er udelukkende et redskab for programmørerne til at organisere pakker på en logisk, hierarkisk, måde.

15 DAIMIIntroducerende objektorienteret programmering12A.15 CLASSPATH  For at java compileren og fortolkeren kan finde pakkerne, skal den vide, hvor den skal begynde at lede. Dette fortæller man vha. CLASSPATH  I Kawa vælger man menu ‘Project’ undermenu ‘Classpath…’:  Dette er stien til den jar fil som indeholder alle.class filer i ioop pakken.

16 DAIMIIntroducerende objektorienteret programmering12A.16 CLASSPATH  Hvis man bruger Java fra en DOS-prompt, skal man sætte environment-variablen CLASSPATH.  Kig i filen ‘setup.bat’ i c:\ioop\iooplib  I denne indgår også stien til Java 1.1.7B’s klasser (f.eks. java.util.Vector) samt Kawa’s egne pakker. Dette er i Kawa sat op af os (menu ‘Customize’, undermenu ‘Options...’, faneblad ‘Directories’)

17 DAIMIIntroducerende objektorienteret programmering12A.17 Tilføje pakker  Hvis vi vil lave en ny pakke (eks: us14) skal der laves følgende trin  1. Tilføj en package statement i javafilerne Husk at.class filerne skal ligge i et katalog med samme navn som pakkenavnet.  2. Tilføj forældre kataloget til din classpath  Eksempel:  Diskstruktur: C:\ioop\us14\myClass.class  Package: “package us14;”  CLASSPATH = C:\ioop\

18 DAIMIIntroducerende objektorienteret programmering12A.18 Default package  Hvad med alle de java filer vi har skrevet indtil nu?  Java har automatisk en default, unavngiven, pakke, som alle klasser i filer uden en package- sætning lægges i. Kataloget svarende til denne pakke er simpelthen det katalog som filerne ligger i.


Download ppt "DAIMIIntroducerende objektorienteret programmering12A.1 Moduler Packages i Java."

Lignende præsentationer


Annoncer fra Google