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.

Slides:



Advertisements
Liknande presentationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Advertisements

1 2I1049 Föreläsning 8 KTH-MI Peter Mozelius Grafiska gränssnitt, Java interface och händelsehantering.
Funktioner och programorganisation
Programmeringsteknik
2I1049 Föreläsning 11 Modularisering, återanvändning och JavaBeans
Klassarv och inkapsling
OOP Objekt-orienterad programmering
Metoder i java Det finns två typer av metoder i java
Inkapsling.
Polymorfism.
Välkommen Vahid Mosavat
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Föreläsning 8 Appletprogram/fristående grafiska program Rita linjer, rektanglar mm Skriva text Byta färg Appletprogram html.
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Konstruktor Ser till att objektets data är korrekt initierade MinKlass::MinKlass(); MinKlass::MinKlass(int.
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 11 Arrayer.
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
Sid 41 Fordon int antalhjul; int vikt;
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Vektorer (klassen Vector) Sortering
Polymorfism.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Objektorienterad Modellering Programmering och Analys
Programmeringsteknik för Media1 & K1
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Java paket och jar-filer
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Föreläsning 4 Klasser Och Objekt.
1. Ett problem/uppgift.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
1 Föreläsning 8 Mer om klasser och objektorientering.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Arv repetition Arv = Är relation Tillgänglighet public, protected och private. Överklass ös Direkt härledd underklass dhu: Class dhu : public ös{} Indirekt.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Föreläsning 9 Inläsning och utskrift på fil –SimpleTextFileReader –SimpleTextFileWriter Felsökning Java API.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
OOP - teori1 OOP del II– Föreläsning 5 vecka 6. OOP - teori2 Klasser Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Malmö högskola Rolf Axelsson 2003/2004 DA7235, 4 poäng Fält som returvärde Sortera fält Söka i fält Tvådimensionella fält Fält och spelplan Föreläsning.
OOP&M - teori1 OOP del II– Föreläsning 2 vecka 46 Konstruktorer Instansmetoder Kapitel 14 i kursboken.
DA7351 Programmering 1 Fält och objekt Tvådimensionella fält Sortera fält Föreläsning 13.
OOP&M - teori1 OOPM del II – Föreläsning vecka Sista föreläsning del II Kapitel 21 plus paket Abstrakta klasser/metoder igen Gränssnitt/Interface.
Arv, abstrakta klasser och gränssnitt
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
OOP&M - teori1 OOP2– Föreläsning vecka 0507 OBJEKT Mer om ärvning... Paket...
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Repetitionsföreläsning 1: Lite rekursion & problemlösning
Presentationens avskrift:

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 Vilken metod som anropas avgörs av antalet parametrar (kompilering)

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)

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

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

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

Exempel (forts) Via arrayen figurer vill vi nu beräkna arean för alla objekt figurer Variabel 3210 Array av GeometriObjekt Cirkel beraknaArea() Kub beraknaArea() Triangel beraknaArea() Rektangel beraknaArea() Objekt

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 }

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

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

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

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 Filer i default-paketet sparas i aktuell katalog package javaII.grafik; // klasser måste sparas i katalogen javaII/grafik

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

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

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

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 *.class Alla.class filer i aktuell katalog placeras i filen minjarfil.jar jar cfm minjarfil.jar minmanifest.txt *.class Samma som ovan, men vi använder en egen manisfest-fil

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