1 / 17

Föreläsning 13

Föreläsning 13. Polymorfism, Paket och JAR-filer. Polymorfism. Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting som antar många former Överlagring av metoder är en form av polymorfism

anakin
Download Presentation

Föreläsning 13

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Föreläsning 13 Polymorfism, Paket och JAR-filer

  2. Polymorfism • Ordet härstammar från grekiskan • Poly – många • Morf – form • Polymorf – många former • Någonting som antar många former • Överlagring av metoder är en form av polymorfism • Vilken metod som anropas avgörs av antalet parametrar (kompilering)

  3. Polymorfism • Alla metoder i Java har automatisk stöd för polymorfism • En metod kan finnas i flera varianter och vilken som exekveras väljs under körning (dynamisk bindning) • Utnyttjas framför allt när man ärvt och omdefinierat metoder • Används för generella metoder i en arvshierarki (ex, print, beraknaArea)

  4. Exempel GeometriObjekt Kub Rektangel Cirkel Triangel + beraknaArea() : double + beraknaArea() : double + beraknaArea() : double + beraknaArea() : double + beraknaArea() : double OBS!Ej abstrakt längre

  5. Exempel (forts) • Implicit typkonvertering gör följande möjligt: GeometriObjekt r = new Rektangel(10, 10, 20, 20);GeometriObjekt c = new Cirkel(50, 50, 10);r.beraknaArea();c.beraknaArea(); • En variabel av GeometriObjekt kan referera till alla dess subklasser • Vilken metod som ska utföras bestäms under exekveringen

  6. Exempel (forts) • Vi vill skapa en samling av geometri objekt och skapar därför en array GeometriObjekt[] figurer = new GeometriObjekt[4];figurer[0] = new Rektangel(100, 100, 10, 20);figurer[1] = new Cirkel(50,50, 20);figurer[2] = new Kub(20, 70, 10);figurer[3] = new Triangel(150, 10, 50, 10);

  7. Exempel (forts) Variabel Array av GeometriObjekt figurer 0 1 2 3 Cirkel beraknaArea() Kub beraknaArea() Triangel beraknaArea() Rektangel beraknaArea() Objekt • Via arrayen figurer vill vi nu beräkna arean för alla objekt

  8. Exempel (forts) • Finns det inte stöd för polymorfism måste vi själva kolla vilken metod som ska anropas for (int i = 0; i < figurer.length; i++){if (figurer[i] instanceof Rektangel) { Rektangel r = (Rektangel)figurer[i]; //Konvertera till rätt typ r.beraknaArea(); }else if (figurer[i] instanceof Kub) { Kub k = (Kub)figurer[i]; //Konvertera till rätt typ k.beraknaArea(); } // osv… för varje subklass}

  9. Exempel (forts) • Finns stöd för polymorfism hittar exekveringsmiljön själv rätt metod under körning (dynamisk bindning) for (int i = 0; i < figurer.length; i++){ figurer[i].beraknaArea();}

  10. Paket (package) • Används för att gruppera ihop klasser som hör ihop • Javas egna standardbibliotek kommer tillgängliga som paket • java.lang, java.io, javax.swing etc • Vi kan även göra egna paket • Speciella åtkomstregler gäller • protected – ger åtkomst i samma paket

  11. Deklaration Av Paket • Bestäms genom att först i källkods-filen ange paketets namn: package paket_namn; • En klass kan endast tillhöra ett paket • Paketdeklarationen måste stå först • Paketnamn kan bestå av flera delar package javaI.grafik;package javaII.grafik; • Anges inget paket  default-paket

  12. Katalogstruktur • Bytekodfilerna sparas i kataloger baserade på paketnamnet. package grafik;// klasser måste sparas i katalogen grafik package javaI.grafik;// klasser måste sparas i katalogen javaI/grafik package javaII.grafik;// klasser måste sparas i katalogen javaII/grafik • Filer i default-paketet sparas iaktuell katalog

  13. Import Av Paket • För att använda klassen anges paketnamnet före namnet på klassen // Använda Cirkel från paketet javaI.grafikjavaI.grafik.Cirkel c = new javaI.grafik.Cirkel(10, 10, 20); • Enklare att importera klassen import javaI.grafik.Cirkel; // Bara Cirkelimport javaI.grafik.*; // Alla klasser Cirkel c = new Cirkel(10, 10, 20); • Import placeras efter eventuella paketdeklarationer

  14. Classpath • Javamaskinen letar efter klasser som anges i miljövariabeln CLASSPATH • classpath = . • Söker efter ”.class”-filer i aktuell katalog • classpath = .;h:\kurser • Söker efter ”.class”-filer i aktuell katalog och dessutom i h:\kurser • Söker också i underkataloger • Sätts på samma sätt som path

  15. JAR-filer • Filformat baserat på ZIP • Packar ihop många filer till en • Utvecklades för Applets på Internet • Stödjer komprission • Reducerar storleken på filen och ger snabbare nedladdning • Kan öppnas och manipuleras i WinZip JAR = Java ARchive

  16. Skapa JAR-filer • Vi använder verktyget jar • Kräver ett antal indata, t.ex • Namnet på JAR-filen som ska skapas • De class-filer som ska ingå • En manifest-fil (information om jar-filen) Syntax: jar {ctxu}[vfm0M] [jar-fil] [manifest-fil] files ... jar cf minjarfil.jar *.classAlla .class filer i aktuell katalog placeras i filen minjarfil.jar jar cfm minjarfil.jar minmanifest.txt *.classSamma som ovan, men vi använder en egen manisfest-fil

  17. Använda JAR-filer Måste sluta med en blankrad • Manifestfilen innehåller information om bl.a vilken klass som ska startas • För att köra en JAR-fil skriver vi: java –jar minjarfil.jar • För att använda klasser i en JAR-fil måste vi sätta sökvägen till filen: classpath = h:\java\labbar\minjarfil.jar;.

More Related