Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afSimone Bak Redigeret for ca. et år siden
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.
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.