OOP&M - teori1 OOP2– Föreläsning vecka 0507 OBJEKT Mer om ärvning... Paket...
OOP&M - teori2 Objekt Kalle är en Människa som har ett födelseår och har ett namn och har en far och har en mor och har en skostorlek. public class Human{ int born; String name = ”okänt”; int shoeSize; Human mother; Human father; }
OOP&M - teori3 Ä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 - teori4 Ärvning exempel: class Vehicle{ private String licenseNbr; private double FuelC; private Person owner; } class PassengerVehicle extends Vehicle{ private int maxPass; } class Car extends PassengerVehicle{ private boolean towingHook; } class Bus extends PassengerVehicle{ private boolean toilet; }
OOP&M - teori5 Ärvning Car, Bus är direkta subklasser/delklasser till PassengerVehicle PassengerVehicle är direkt subklass till Vehicle Vehicle är superklass till passengerVehicle Allmänt En subklass utvidgar(extends) sin superklass. Man skapar ofta bara objekt på lägsta nivå i klassträdet
OOP&M - teori6 Fördelar med Ärvning Beskrivningen liknar det verkliga systemet. Gemensamma attribut och metoder samlas på ett ställe och ärvs nedåt (De är dock inte tillgängliga om de är deklarerade private i superklassen)
OOP&M - teori7 Ärvning Superklassens konstruktor anropas först i subklassens konstruktor med: super(eventuella parametrar); Detta initierar eventuella parametrar i superklassen. this: Refererar till aktuellt objekt super: refererar till superklassen
OOP&M - teori8 UML (Unified Modeling Language) Grundnotation för en klass Klassnamn variabler konstruktorer metoder
OOP&M - teori9 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 - teori10 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 - teori11 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 - teori12 Kluster är en samling klasser UML (Kluster) Fordon Passagerarford on BilBuss MC Lastmaskine r KarossMotorHjul Kamaxel Cylinder * * 1 2..* Fordon
OOP&M - teori13 Nyckelordet instanceof Ibland behöver amn avgöra om ett objekt är en instans av en viss klass: Detta är till exempel användbart för att avgöra om man kan omvandla (casta) ett objekt till en viss klass. if (Object instanceof Klass){ //Do something }
OOP&M - teori14 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 - teori15 Skydd Skyddsnivå Tillgänglig: publicprotectedpackageprivate Inom samma klassJa Klass i samma paket Ja Nej Subklass i annat paket Ja Nej Annat paketJaNejNajNej
OOP&M - teori16 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 - teori17 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 - teori18 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 - teori19 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 - teori20 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 och variabelbeklarationer och skall var kortfattade Det finns ett antal parametrar man kan ange till exempel –m.fl javadoc –d *.java skapar dokumentation Mer info på
OOP&M - teori21 Javadoc i JCreator Man kan ställa in JCreator så att man skapar dokumenattion. I detta fall skapar vi den i en katalog som heter doc i aktuellt projekt. Gå till configure/options o markera Tools tryck på knappen New Om du inte får rätt på det ange Prompt for arguments och Capture output osv…..Om du får ett felmedelande typ Invalid command line så kan det bero på att du har för lång kommandosträng. Detta kan hända om filerna ligger på ”desktop” så att det blir långa sökvägar.
OOP&M - teori22 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
OOP&M - teori23 Att göra körbara jar-filer
OOP&M - teori24 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 - teori25 ?