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 klasser igen
OOP&M - teori2 Ärvning Används vid relationer av typen är en/ett ! exempel: en människa är ett däggdjur. en hund är ett däggdjur. en tax är en hund. en hund är ett däggdjur osv
OOP&M - teori3 Skydd private: Endast tillgängligt inom klassen public: Generellt tillgänglig protected: Tillgänglig inom klassen och i alla subklasser och inom aktuellt paket
OOP&M - teori4 Abstrakt klass Används på en klass för att förhindra att klassen instansieras. En subklass kan instansieras om den implementerar samtliga abstrakta metoder i superklassen Används på en metod i en superklass för att styra så att en metod måste implementeras i subklassen. Syntax för metod //se ut som vanlig metod utan implementation public abstract void myMetod(); Medför som tidigare att en objekt-variabel kan deklareras med superklassens typ men ändå använda metoder från subklass.
OOP&M - teori5 Interface Gränsnitt Används på en klass för att styra så att vissa metoder måste implementeras i den klass som använder gränssnittet. Syntax för interfaceklass //se ut som vanlig metod utan implementation public interface myName{ public void mymethod(parameters); } Medför att en objekt av helt olika typ kan använda samma metoder genom att en variabel deklareras av intrefacetypen. Kan ej instansieras och har ingen konstruktor Kan endast ha variabler av typen static final.
OOP&M - teori6 UML (Unified Modeling Language) Grundnotation för en klass Klassnamn variabler konstruktorer metoder
OOP&M - teori7 UML (Association) Associationsstruktur Relation mellan två olika typer av objekt BilPerson 0..* 1..* En relation mellan två klasser som modellerar ett ägarskap- Relationen utläses som: -En bil har 1 eller flera ägare. -En person äger 0 eller flera bilar.
OOP&M - teori8 Aggregatstruktur Starkare koppling än en association. Objekten är fundamentala beståndsdelar i en större helhet. UML (Aggregat) Bil Kaross MotorHjul KamaxelCylinder * * 1 2..*
OOP&M - teori9 Arv Vid ärvning beskriver en generell klass (superklassen) egenskaper gemensamma för en grupp specialiserade klasser (subklasser). UML (Ärvning) Fordon Passagerarfordon BilBuss MC Lastmaskiner
OOP&M - teori10 Arv Vid ärvning beskriver en generell klass (superklassen) egenskaper gemensamma för en grupp specialiserade klasser (subklasser). UML (Abstrakta klasser) > Fordon > Passagerarfordon BilBuss MC Lastmaskiner
OOP&M - teori11 Interface Vid ärvning beskriver en generell klass (superklassen) egenskaper gemensamma för en grupp specialiserade klasser (subklasser). UML (Interface/Gränssnitts klasser) > Shape CircleRectangle > Citizen PlummerGardener > Drawable _______________ +draw
OOP&M - teori12 Kluster är en samling klasser UML (Kluster) Fordon Passagerarford on BilBuss MC Lastmaskine r KarossMotorHjul Kamaxel Cylinder * * 1 2..* Fordon
OOP&M - teori13 Skydd private: Endast tillgängligt inom klassen public: Generellt tillgänglig protected: Tillgänglig inom klassen och i alla subklasser package: Standard om inget annat anges motsvarar kompileringsenhet
OOP&M - teori14 Skydd Skyddsnivå Tillgänglig: publicprotectedpackageprivate Inom samma klassJa Klass i samma paket Ja Nej Subklass i annat paket Ja Nej Annat paketJaNejNajNej
OOP&M - teori15 Skydd Riktlinjer för användning: public: för metoder som skall vara publika (setters, getters) protected: används för metoder och variabler som kan vara av intresse för någon som subklassar metoden private: används för variabler och metoder som endast skall vara tillgängliga i klassen och dolda för övrigt package: används för variabler och metoder som används av andra klasser i samma paket
OOP&M - teori16 Javadoc Används för att automatiskt skapa dokumentation. /**kommentarer placerade här kommer med*/ Kommentarerna kan innehålla enkla HTML-taggar fet Kommentarer placeras före klass och metod (men efter import) och variabelbeklarationer och skall var kortfattade. Mer info på
OOP&M - teori17 Javadoc i JCreator Så här kopplar du en verktygsknapp till javadoc i JCreator. I detta exempel hamnar resultatet i en katalog c:\doc. Ändra så det passar dig. 1.Välj Configure/Options/Tools 2.Tryck New/Program 3.Leta upp javadoc.exe tryck Apply 4.Välj ditt ”tool” i vänstermenyn 5.skriv tex *.java -d c:\doc 6.Välj project directory ($[PrjDir]) som initial directory. 7.Sen skall det fungera se till att alla klasser du vill ha med har angiven skyddsklass. Endast klasser som är angivna public kommer med.
OOP&M - teori18 Package Paket Används för att samla ett antal klasser så att de kan importeras av en annan klass. Skall ha unikt namn ofta används domännamn baklänges Klassfilerna placeras i en mappstruktur som motsvarar paketnamnet. Syntax för paket //måste stå på första raden package se.mah.k3.mypackage; /*importeras sen med (classpath till biblioteket där klasserna finns måste anges)*/ import se.mah.k3.mypackage.*; Medför att det är enklare att använda färdiga klasser i nya program
OOP&M - teori19 Package Paket se mah k3 shapes lut mypackage Klassfilerna ligger för paketet se.mah.k3.mypackage i mappen mypackage Javafilerna ligger för paketet se.mah.k3.mypackage i mappen mymapp mymapp
OOP&M - teori20 Classpath Anger var kompilatorn söker efter klasser. Rotkatalogen för klassfilerna skall anges Kan skrivas ut och anges på PC med vid DOS- prompt På PC skriver man till exempel set CLASSPATH = %CLASSPATH%;c:\myfolder antingen vid kommandoprompt eller via inställningar i My Computer Kan anges i Jcreator via project settings Antingen anges rotmappen för klassfilerna eller en JAR- fil (packade javafiler)
OOP&M - teori21 Paketera paket till arkiv Java Archive files JAR Kompilerade klasser kan packas till.jar filer Medför att det är enklare att använda färdiga klasser i nya program Gör det enklare att distribuera och snabbare att exekvera jar som innehåller applikationer kan göras körbara mha en manifestfil som innehåller information om var main-metoden finns Det går enkelt i BlueJ men är lite klyddigere annars
OOP&M - teori22 Paketera paket till arkiv (commandoprompt) Exempel på manifestfil för ett paket som heter se.mah.k3.game1 som har en klassfil Game1.class i mappen game1 Main-Class: se.mah.k3.game1.Game1 Name: se/mah/k3/game1/Game1.class Skapa jarfilen från projektets rotkatalog med kommandot (obs punkt) Därefter kan jar-filen köras med java –jar my.jar på alla datorer med korrekt JVM. Ofta kan filen köras genom att man dubbelklickar på den.
OOP&M - teori23 Arkiv (jar) i JCreator 1.Skapa en fil Manifest.mf i samma katalog som klassfilerna. Eller om du använder packet i samma katalog som se-mappen. 2.Filen Manifest.mf skall se ut exakt så här förutom att du skall ha dina egna klassnamn. I mitt fall heter paketet se.mah.k3.Game1 och mainmetoden ligger i Game1.class Main-Class: se.mah.k3.game1.Game1 Name: se/mah/k3/game1/Game1.class Obs case sensitive. 3.Skapa ett tool i JCreator som med javadoc där du pekar på programmet jar.exe med dessa parametrar: Arguments: cvfm $[PrjName].jar MAN.txt *.class Initial directory: $[PrjDir] 4.Sen kan det fungera. Om JCreator lagt filerna i en mapp som heter classes så skall Manifestfilen även läggs där och initial directory vara $[PrjDir]/classes
OOP&M - teori24 ?