Innehåll The Last Adventure Den sista lektionen Repetition Examination Slutar 14:45 (minnesstund) Många saker "flashar" förbi - hojta Objektorientering Språket Java Class Object Inheritance Polymorphism Overloading Synlighet Paket Interface/abstract Nested classes Overriding Java - synlighet Java - Paket Public Protected Private "" Paktetera klasser Förhindrar konflikt Omvänt domännamn
Java Interface/abstract Java - Diverse super Exceptions Finalize Clone Java - handhavande Kompilering Exekvering Byte code Virtuell maskin Nested classes Inner classes Member inner Local inner Java - Nested classes Anonymous inner Nytt i Java 1.5 Generics Enumeration Autoboxing Olika antal argument Scanner public class MyPair<V> private V a; private V b; public MyPair( V a, V b ) this.a = a; this.b = b; 1.5 Generics public String tostring( ) return "(" + a + ", " + b + ")";
Model Model Controller View View Controller 1.5 Generics public class Demo public static void main( String[] args ) MyPair<String> strpair = new MyPair<String>( "Hello", "world" ); MyPair<Integer> intpair = new MyPair<Integer>( 5, 6 ); System.out.println( strpair ); System.out.println( intpair ); 1.5 Enumeration public class Person final static public int NORTH = 1; final static public int SOUTH = 2; final static public int WEST = 3; final static public int EAST = 4; public void godirection( int dir ) throws Exception if( dir!= NORTH && dir!= SOUTH && dir!= WEST && dir!= EAST ) throw new Exception( ); // Do something public class Person static public enum Direction NORTH, SOUTH, EAST, WEST ; public void godirection( Direction dir ) // Do something Javas bibliotek Collections Collections Swing Reflection "allt annat" set listor mängder maps MAPS public class Demo public static void main( String[] args ) TreeMap tm = new TreeMap(); Swing Changes Object dummy; dummy = tm.put("ordförande", new Person("Joakim","von Anka",112)); dummy = tm.put("kassör", new Person("Alexander","Lucas",43)); dummy = tm.put("sekreterare", new Person("Kajsa","Anka",44)); Set keys = tm.keyset(); Iterator it = keys.iterator(); Swing - AWT MVC Update model Get data User action Object keyval; while( it.hasnext() ) keyval = it.next(); System.out.println( "(" + keyval + "," + tm.get(keyval) + ")" ); Händelsestyrt Observer - observable
JPanel JFrame JTextField JButton JButton JButton Vad är det som händer igentligen? JPanel JPanel JCheckBox Reflection Serialisering Instanceof Class-klassen Magi Object serialization Magi Trådar Trådar - funktion Funktion Problem Synkronisering Runnable Threads
Trådar - problem Trådar - synkronisering B ber A om info och väntar på svar A B synchronized synkronisering på objekt A ber B om info och väntar på svar public class MyThreadExample extends Thread private String name; public MyThreadExample( String name ) this.name = name; private void dosomething( ) for( int i = 0 ; i < 100 ; i++ ) print( name ); private synchronized static void print( String name ) System.out.print( "Hi " ); System.out.print( "there " ); System.out.print( "world " ); System.out.print( "from " ); System.out.println( name ); public void run() dosomething(); private static Object lockobject = new Object(); private void dosomething( ) throws InterruptedException for( int i = 0 ; i < 100 ; i++ ) synchronized ( lockobject ) System.out.print( "Hi " ); System.out.print( "there " ); System.out.print( "world " ); System.out.print( "from " ); System.out.println( name ); public class MyThreadExample extends Thread private String name; public MyThreadExample( String name ) this.name = name; private void dosomething( ) for( int i = 0 ; i < 100 ; i++ ) System.out.print( "Hi " ); System.out.print( "there " ); System.out.print( "world " ); System.out.print( "from " ); System.out.println( name ); public void run() dosomething(); Trådar - Threads Trådar - Runnable public class Counter implements Runnable private static int count = 0; public void run( ) for( int i = 0 ; i < 9 ; i++ ) count = i; System.out.println( "count = " + count + " i = " + i );
public class Demo public static void main ( String[] args ) throws InterruptedException Thread a = new Thread( new Counter( ) ); Thread b = new Thread( new Counter( ) ); Thread c = new Thread( new Counter( ) ); Thread d = new Thread( new Counter( ) ); Thread e = new Thread( new Counter( ) ); a.start(); b.start(); c.start(); d.start(); e.start(); a.join(); b.join(); c.join(); d.join(); e.join(); Design patterns Ett sätt att dela med sig av sina erfarenheter Lämnar utrymme för egna lösningar men ger ramverket Singleton Java Beans Web applications Ett sätt att bygga "plug-in kod" Setters/getters Reflection Servlets JSP Examination Problem 1 3-timmars skriftlig tenta 10-dagars hemskrivning Skriva ett program Redovisas med kod + rapport som tydligt beskriver lösning. 10 120 1200 20 30 120 3600 60 60 120 7200 120
Problem 2 Bedömning Tenta 20p Godkänt >=10 Hemskrivning Godkänt : funkar Bedömning 0-10 Tenta + hemskrivning => 3a < 7p 4a < 14p 5a >= 14p