Next previous Björn Eiderbäck NADA, KTH Innehåll Klassdiagram i mer detalj Visibility och modifierare (vilka.

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

Avlusning Debugger (”avlusare”) Breakpoints Watch.
Innehåll, huvudpresentation 4. Rangordning av ordningsstörningar (fråga 1) 5. Problem med nedskräpning (fråga 1a) 6. Problem med skadegörelse (fråga 1b)
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
BENÄMNA lätta ord SPRÅKTRÄNING VID AFASIKg VIII
Klasser och objekt.
Tillämpning av bolagsstyrningskoden vid årsstämmor 2005 och 2006.
Next previous Något om hantering av krav. Testning. Undantagshantering OOMPA 2000 Föreläsning 11.
Next previous Innehåll Klassen URL Arbeta med URLer, exempel Referenser Harold,”Java Network Programming”, Elliotte Harold Hall, "CORE Web Programming"
Klassarv och inkapsling
OOP Objekt-orienterad programmering
Eddie Arnold - Make The World Go Away Images colorées de par le monde Déroulement automatique ou manuel à votre choix 1 för dig.
Objektorienterad utveckling Lektion 2 Objekt, överlagring, överskuggning, klasshierarkier och dynamisk bindning KTH Peter Mozelius.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Next previous Lite mer om synkronisering. Mer om Java och trådar. RMI Objektorienterad Realtidsprogrammering 2000 Objektorienterad Realtidsprogrammering.
Next previous Innehåll Klassen URL Arbeta med URLer, exempel Speciella referenser (som används i här) Harold, dvs kursboken ”Java Network Programming”
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser Harold, dvs boken ”Java Network.
Java Nätverks API URL sockets.
Karolinska Institutet, studentundersökning Studentundersökning på Karolinska Institutet HT 2013.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Bastugatan 2. Box S Stockholm. Blad 1 Läsarundersökning Maskinentreprenören 2007.
Exception Handling Kapitel 9. Agenda Exceptions try, throw and catch Skapa en egen exception-klass Multipla throw / catch Slänga vidare en exception Olika.
Streams and File I/O Kapitel 10. Agenda Exceptions Textfiler Skriva Appenda Läsa File Sökvägar.
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.
Variabler: Datatyp - grundläggande : int, double, char, boolean eller
Programmering i C# 3. Klasser.
Repetition inför slutprovet
Enkätresultat för Grundskolan Elever 2014 Skola:Hällby skola.
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.
1 Vänsterskolan Debattartiklar. 2 Aktuell krok 3 Aktuella krokar 1. Direkt krok.
Next previous Föreläsning ii - Mer om Java bla this och konstruktorer Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe.
Hittarps IK Kartläggningspresentation år 3.
Från Gotland på kvällen (tågtider enligt 2007) 18:28 19:03 19:41 19:32 20:32 20:53 21:19 18:30 20:32 19:06 19:54 19:58 20:22 19:01 21:40 20:44 23:37 20:11.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
Objektorienterad Modellering Programmering och Analys
Arv.
TÄNK PÅ ETT HELTAL MELLAN 1-50
OOP Objekt-orienterad programmering
Kouzlo starých časů… Letadla Pár foteček pro vzpomínku na dávné doby, tak hezké snění… M.K. 1 I Norrköping får man inte.
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.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Enkätresultat för Grundskolan Föräldrar 2014 Skola - Gillberga skola.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
TILLÄMPAD DATALOGI (TILDA) Övning 3
Föreläsning 4 Klasser Och Objekt.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
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.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Förskoleenkät Föräldrar 2012 Förskoleenkät – Föräldrar Enhet:Hattmakarns förskola.
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
Bild 1 Prognos för länets arbetsmarknad Stefan Tjb.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
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 =
TILLÄMPAD DATALOGI (TILDA) Övning 2
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Presentationens avskrift:

next previous Björn Eiderbäck NADA, KTH Innehåll Klassdiagram i mer detalj Visibility och modifierare (vilka kommer åt attribut, metoder, osv) Abstrakta klasser och Interface Undantagshantering (Exception handling) Från UML till kod Javas API och paket Visibility och Java API September 26, 2001

previous next 2 Visibility och Java API OOMPA, F8 Klassdiagram (halvrepetition) •Vi kan skriva klassdiagram på en form som anger parametrar mm

previous next 3 Visibility och Java API OOMPA, F8 Klassdiagram: notation Klassnamn attribut : Typ = initialtVärde operation(argumentlista) : returTyp Klassnamn Klass Generalisering Supertyp Subtyp1Subtyp2 superklass (basklass) subklass (härledd klass) klassbox, lång form klassbox, kort form

previous next 4 Visibility och Java API OOMPA, F8 Klass: attribut •Strukturen av en klass representeras av attribut •Attributen kan hittas genom att utforska klassdefinitioner, från kravspecifikationen och med hjälp av domänkunskap CourseOffering number location time Varje kurs har ett nummer, en plats där den genomförs och en tid då den går

previous next 5 Visibility och Java API OOMPA, F8 Exempel: Klassen Person med två instanser Person name : String age : Integer : Person name = Lisa age = 23 : Person name = Kalle age = 25 Klass Instanser Rita en klass Person med hjälp av a) ett klassdiagram med attributen name: String och age: Integer b) två instanser av klassen Rita en klass Person med hjälp av a) ett klassdiagram med attributen name: String och age: Integer b) två instanser av klassen

previous next 6 Visibility och Java API OOMPA, F8 Exempel: Färgat geometriskt objekt, med defaultvärden FärgatObjekt color : Color = röd position : Point = (10, 10) geo1: FärgatObjekt color = röd position = (10, 10) geo2: FärgatObjekt color = röd position = (30, 50) defaultvärden Rita ett klassdiagram med med ett geometriskt objekt a) där defaultvärdet för färgen är röd och för positionen är (10, 10) b) "rita" också två instanser Rita ett klassdiagram med med ett geometriskt objekt a) där defaultvärdet för färgen är röd och för positionen är (10, 10) b) "rita" också två instanser eget namn (frivilligt)

previous next 7 Visibility och Java API OOMPA, F8 Visibility •Vi kan också ange om attribut och metoder syns utanför den aktuella klassen

previous next 8 Visibility och Java API OOMPA, F8 Modifierare Klassnamn +publikt_attribut #protected_attribut -privat_attribut klassvariabel +publik_operation() #protected_operation() -privat_operation() klassmetod() visibility name : type-expression = initial-value { property-string } där visibility någon av: + public visibility (dvs alla kan använda det) # protected visibility (dvs endast synlig i klassen eller dess subklasser) - private visibility (endast synlig i klassen) understruken betyder klassmetoder och attribut om visibility inte sätts ut betyder det bara att den inte visas (inte att den är privat eller publik)

previous next 9 Visibility och Java API OOMPA, F8 Exempel: modifierare Person # name : String # dateOfBirth : Date - pinCode : Integer + name() : String + age() : Integer + equals(Person) : boolean # name(String) + create(name : String, dateOfBirth : Date) : Person - hashCode() : Integer

previous next 10 Visibility och Java API OOMPA, F8 Modifierare i Java •I Java kan vi använda följande modifierare: –public •kan användas överallt –protected •kan användas i klass eller subklasser –private •kan bara användas inne i klassens beskrivning –static •klassmetod eller klassvariabel –final •kan ej ändras (variabelfallet), kan ej subklassas (klassfallet) –abstract •måste specificeras i subklasser –ingen •package visibility

previous next 11 Visibility och Java API OOMPA, F8 Abstrakta klasser och Interface

previous next 12 Visibility och Java API OOMPA, F8 Abstrakta metoder och klasser •En klass kan deklareras abstrakt –Då kan inga instanser av klassen skapas •En klass kan deklarera en eller flera av sina metoder som abstrakta –Då blir också klassen automatiskt abstrakt •Inga instanser av klassen kan därför skapas –En subklass blir också abstrakt till dess att alla abstrakta metoder fått en definition •Tex om metoderna m1() och m2() deklarerats abstrakta i klassen A men subklassen B endast implementerar m1() så är B också abstrakt Om en klass C deklareras som subklass till B och implementerar m2() så blir C konkret och kan instansieras

previous next 13 Visibility och Java API OOMPA, F8 Exempel: abstrakt klass abstract class GraphicObject{ int x, y;... void moveTo(int newX, int newY) {...} abstract void draw(); } class Circle extends GraphicObject { void draw() {...} } class Rectangle extends GraphicObject { void draw() {...} }

previous next 14 Visibility och Java API OOMPA, F8 Exempel: abstrakt klass public abstract class Shape { public abstract double area(); public abstract double circumference(); } class Circle extends Shape { protected double r; protected static final double PI = 3.14; public Circle() {this(1.0);} public Circle(double r) {this.r = r;} public double area( {return PI * r * r;} public double circumference () {return 2 * PI * r;} } class Rectangle extends Shape { protected double w, h; public Rectangle (){this(0.0, 0.0);} public Rectangle (double w, double h) {this.w = w; this.h = h;} public double area() {return w * h;} public double circumference() {return 2 * (w + h);} }

previous next 15 Visibility och Java API OOMPA, F8 Vektorer •Deklareras på följande sätt Typ[] vektor; •Instansiering (tex) vektor = new Typ[10] •Kan skapas från primitiva typer int[] tal = new int[5]; tal[0] = 2000; Sytem.out.println(tal[0]); •Kan skapas mer direkt Point[] punkter = {new Point(2, 3), new Point(56,72)}

previous next 16 Visibility och Java API OOMPA, F8... •Så kan vi skapa en vektor av Shapes Shape[] shapes = new Shape[3]; shapes[0] = new Circle(2.0); shapes[1] = new Rectangle(1.0, 2.0); shapes[2] = new Rectangle(10.0, 20.0); double totalArea = 0; for(int i = 0; i < shapes.length; i++) total_area += shapes[i].area();

previous next 17 Visibility och Java API OOMPA, F8 Interface •Ett interface är som en abstrakt klass med enbart abstrakta metoder och konstanter public interface InterfaceX { public ReturTyp1 m1(X x); public ReturTyp2 m2(Y y); } •En klass kan deklarera att den implementerar ett eller flera interface –Observera att en klass endast är direkt subklass till en klass men att den kan implementera flera interface class MinFigur extends Figur implements Interface1, Interface2 {...} •Ett interface kan utvidga ett eller flera andra interface public interface InterfaceN extends Interface1, Interface2, Interface3 {...}

previous next 18 Visibility och Java API OOMPA, F8 Exempel: interface public interface Sleeper { public void wakeUp(); public long ONE_SECOND = 1000; public long ONE_MINUTE = 60000; } public class GUIClock extends Applet implements Sleeper {... public void wakeUp() { repaint(); clock.letMeSleepFor(this, ONE_MINUTE); } Konstanter nås via Interfacenamn.konstant tex Sleeper.One_Second

previous next 19 Visibility och Java API OOMPA, F8..med interface med följande definitioner... public interface Drawable{ public void setColor(Color c); public void setPosition(Point p); public void draw(Window dw); } public DrawableRectangle extends Rectangle implements Drawable{ private Color c; private Point pos; public void setColor(Color c) {this.c = c}; public void setPosition(Point p) {pos = p;} public void draw(Window dw) {dw.drawRect(pos.x, pos.y, height, width);} } Rectangle

previous next 20 Visibility och Java API OOMPA, F8... så kan vi konstruera en vektor av interface Drawable[] drawables = new Drawable[3]; drawables[0] = new DrawableCircle(2.0); drawables[1] = new DrawableSquare(20.0); drawables[2] = new DrawableRectangle(10.0, 20.0); for(int i = 0; i < drawables.length; i++){ drawables[i].setPosition(i * 10.0, i * 5.0); drawables[i].draw(myWindow); } (Givet att vi också konstruerat en DrawableCircle och en DrawableSquare på motsvarande sätt)

previous next 21 Visibility och Java API OOMPA, F8 Undantagshantering

previous next 22 Visibility och Java API OOMPA, F8 Undantagshantering (eng. Exception handling) •Java är från början konstruerat med insikten om att fel uppkommer-ofta oväntade fel •Programmeraren skall alltid vara beredd att hantera ett fel •Därför ingår undantagshantering som en grundläggande mekanism i Java •En "exception" är en händelse som "stör" det normala programflödet och hindrar programmet från att fortsätta •Undantag kan vara av två olika modeller: –terminerande, dvs vi kan inte fortsätta från den punkt felet uppstod utan att åter anropa metoden som resulterade i felet –återupptagbar, vi kan fortsätta från avbrottspunkten (eventuellt med vissa data förändrade i felhanteringen) Java använder en terminerande modell

previous next 23 Visibility och Java API OOMPA, F8 Exceptions •Hanterar situationer då fel har uppstått •Kan orsakas av fel koden inte klarar av att exekvera –tex division med noll •eller okontrollerbara fel hos externa enheter –tex filsystemet har gått ner eller annat fel i filhantering •Om något går fel –systemet signalerar ett avbrottsobjekt –Avbrottsobjektet letar sig upp i anropsstacken tills dess att en hanterare för det aktuella felet hittas. try {//"normal" kod} catch(Feltyp e) {//kod för att hantera felet} try {//"normal" kod} catch(Feltyp e) {//kod för att hantera felet}

previous next 24 Visibility och Java API OOMPA, F8 Konsekvenser •Genom att använda exceptions kan vi först fokusera på att skriva koden för normalfallet –Först sedan tar vi hand om olika fel •Vi kan också (uniformt) hantera fel av grundläggande karaktär eller som sker i systemobjekt, som den virtuella maskinen •Ett fel som uppstår i en del av koden kan hanteras i en annan (där man förmodligen bättre vet hur lämplig hantering skall gå till) •Ett alternativ är att returnera null och sedan låta anropande rutin testa för detta fel –men vad händer om vi verkligen vill använda null som ett möjligt värde/resultat?

previous next 25 Visibility och Java API OOMPA, F8 Javas exceptions •I Java kan en metod deklarera att den "kastar" ett exception •Användare av en sådan metod kan inte "glömma" att ta hand om ett sådant undantag utan är tvingade att skriva kod som hanterar felsituationen •Tar man inte hand om undantaget så säger kompilatorn ifrån try { //kod som använder metod som kastar AktuelltUndantag } catch(AktuellUndantag e) {} try { //kod som använder metod som kastar AktuelltUndantag } catch(AktuellUndantag e) {} public void m() throws AktuelltUndantag {…}

previous next 26 Visibility och Java API OOMPA, F8 Exempel: fånga IOException try { File f = new File("exceptiontest1.result"); FileWriter w = new FileWriter(f); PrintWriter out = new PrintWriter(w); out.println("Det blev inga fel!"); out.println(); out.close(); } catch(IOException e) { System.err.println("Fel i filhantering"); }

previous next 27 Visibility och Java API OOMPA, F8 Exempel: aritmetiskt fel int res, a = 10, b = 0; try { res = a / b; } catch(ArithmeticException e) { out.println(e); res = 1; } out.println("Efter felhantering är res: " + res);

previous next 28 Visibility och Java API OOMPA, F8... kan också fångas via generellare Exception try { res = a / b; } catch(Exception e) { out.println(e); // skriv ut info om felet res = 100; } out.println("Efter felhantering är res: " + res);} •ArithmeticException subklass till RuntimeException som är subklass till Exception

previous next 29 Visibility och Java API OOMPA, F8 Felsignalerna bildar en hierarki Throwable Error LinkageError IncompatibleClassChangeError InstantiationError VirtualMachineError InternalError OutOfMemoryError StackOverflowError Exception IllegalAccessException IOException EOFException FileNotFoundException InterruptedIOException MalformedURLException RuntimeException ArithmeticException ClassCastException EmptyStackException IndexOutOfBoundsException ArrayIndexOutOfBoundsException StringIndexOutOfBoundsException NegativeArraySizeException NullPointerException SecurityException

previous next 30 Visibility och Java API OOMPA, F8 Skapa och signalera fel •Ny egen exception skapas som subklass till klassen Exception •Signalera fel med meddelandet throw throw new MyException() public class MyException extends Exception { public MyException() {super();} public MyException(String s) {super(s);} } public class MyException extends Exception { public MyException() {super();} public MyException(String s) {super(s);} }

previous next 31 Visibility och Java API OOMPA, F8 Exempel: throw package java.util public class Stack extends Vector { public Object push(Object item) {addElement(item); return item;}... public synchronized Object peek() { intlen = size(); if (len == 0) throw new EmptyStackException(); return elementAt(len - 1); }...

previous next 32 Visibility och Java API OOMPA, F8 Fånga flera fel •Vi kan fånga flera olika fel genom: •Vi kan använda finally om vi alltid vill utföra ett kodblock try{öppna fil} catch(SomeException e) {felhantering} finally{fil.close()} try{...} catch(ExceptionOne e1) {} catch(ExceptionTwo e2) {} catch(ExceptionThree e3) {} try{...} catch(ExceptionOne e1) {} catch(ExceptionTwo e2) {} catch(ExceptionThree e3) {} try{...} catch(SomeException e) {} finally {//Gör alltid detta} try{...} catch(SomeException e) {} finally {//Gör alltid detta}

previous next 33 Visibility och Java API OOMPA, F8 Fler exempel try { int a[] = new int[2]; a[4]; } catch (ArrayIndexOutOfBoundsException e) { System.out.println("exception: " + e.getMessage()); e.printStackTrace(); } Argumentet givet då undantaget kastades Skriv information om felet på System.err

previous next 34 Visibility och Java API OOMPA, F8 Deklarera att ett exception kastas •Vi kan i en metod deklarera att ett exception kastas •Eller flera samtidigt public void myOpenFile() throws IOException {...} public File search(String s) throws IOException, MyException1, MyException2 {...}

previous next 35 Visibility och Java API OOMPA, F8 Vissa exceptions behöver man inte ta hand om, om man inte vill •Av praktiska skäl behöver man inte ta hand om exceptions som är subklasser till –Error –RuntimeException •Annars skulle man behöva ha exceptionhandling överallt –Varför?

previous next 36 Visibility och Java API OOMPA, F8 Exempel: Throwtest // Några egna Exceptions. class MyException extends Exception { public MyException() {super(); } public MyException(String s) {super(s);} } class MyOtherException extends Exception { public MyOtherException() { super(); } public MyOtherException(String s) {super(s);} } class MySubException extends MyException { public MySubException() { super(); } public MySubException(String s) {super(s);} }

previous next 37 Visibility och Java API OOMPA, F8... public class throwtest { public static void main(String argv[]) { int i; try { i = Integer.parseInt(argv[0]); } catch (ArrayIndexOutOfBoundsException e) { // argv är tom System.out.println("Must specify an argument"); return; } catch (NumberFormatException e) { // argv[0] inte ett heltal System.out.println("Must specify an integer argument."); return; } a(i); }

previous next 38 Visibility och Java API OOMPA, F8... // Anropa b(), som är deklarerad att kasta ett visst exception. // Vi hanterar detta exception. public static void a(int i) { try { b(i); } catch (MyException e) { // Point 1. // Vi hanterar MyException och dess subklass MyOtherException if (e instanceof MySubException) System.out.print("MySubException: "); else System.out.print("MyException: "); System.out.println(e.getMessage()); System.out.println("Handled at point 1"); }

previous next 39 Visibility och Java API OOMPA, F8 …finally public static void b(int i) throws MyException { int result; try { System.out.print("i = " + i); result = c(i); System.out.print(" c(i) = " + result); } catch (MyOtherException e){//Point 2 System.out.println("MyOtherException: " + e.getMessage()); System.out.println("Handled at point 2"); } finally { // Gör alltid en radframmatning. System.out.print("\n"); }

previous next 40 Visibility och Java API OOMPA, F8... public static int c(int i) throws MyException, MyOtherException { switch (i) { case 0: throw new MyException("input too low"); case 1: throw new MySubException("input still too low"); case 99: throw new MyOtherException("input too high"); default: return i*i; } VARNING! Case-satser bör egentligen undvikas i OO VARNING! Case-satser bör egentligen undvikas i OO

previous next 41 Visibility och Java API OOMPA, F8 Från UML till kod

previous next 42 Visibility och Java API OOMPA, F8 Exempel på UML och Java (från Fii): lampa Light1 # isOn : boolean + turnOn() : void + turnOff() : void + isOn() : boolean + toggle() : void + main(String []) : void onoff toggle

previous next 43 Visibility och Java API OOMPA, F8 … Light1, Javakod public class Light1 { protected boolean isOn; public void turnOn() {isOn = true;} public void turnOff() {isOn = false;} public boolean isOn() {return isOn;} public void toggle() {isOn = !isOn();} public static void main (String args[]) { Light1 light; light = new Light1(); System.out.println(light.isOn()); //ska ge false light.toggle(); System.out.println(light.isOn()); // ska ge true }

previous next 44 Visibility och Java API OOMPA, F8 Exempel: lampa2, med start i on-läge onoff toggle

previous next 45 Visibility och Java API OOMPA, F8... Light2, Javakod public class Light2 { // defultvärde för isOn kan anges vid deklarationen protected boolean isOn = true; // medlemsmetoderna som förut... public static void main (String args[]) { Light2 light; light = new Light2(); System.out.println(light2.isOn()); //true light.toggle(); System.out.println(light.isOn()); //false }

previous next 46 Visibility och Java API OOMPA, F8 Fler exempel på UML till kod •Vi ”översätter” diagram från tidigare föreläsningar till kod •Vi tittar speciellt på klass-, sekvens- och samarbetsdiagram från föreläsning 5

previous next 47 Visibility och Java API OOMPA, F8 Javas API och paket •Om vi hinner (tveksamt...) så tittar vi på vad Javas olika paket kan erbjuda –Grundläggande klasser –Collections –Grafik –Socketar –RMI –osv