JAR som tar eller zip Används för att packa ihop en mängd filer jar cvf foo.jar ~user/inlupp1/* Packa upp jar xvf foo.jar Kan vara körbar Fil manifest + class-filer på rätt ställe Main-Class: blazon.ui.inlupp1 java jar foo.jar Finns exempel i utdelad kod för inlupp1 Informationsteknologi #1 Java Ett objektorienterat språk, påminner mycket om C och C++. Mycket enkelt att lära enkel syntax inga pekare garbage-collection färdiga bibliotek med (massor!) kod manualer alltid on-line; literate programming Informationsteknologi #2 Kompilera javac Foo.java jikes Foo.java Skapar fil Foo.class Köra java Foo Exekvering Informationsteknologi #3 1
Utrustning (Win) Java SDK (1.4.2) java.sun.com Editor (xemacs, gnu emacs, ) www.xemacs.org Ant http://ant.apache.org/ Under Windows http://www.cygwin.com/ setup.exe (se till få med: openssh, cvs) Informationsteknologi #4 public class Person { private String name; Exempel på kod public Person(String s) { name = s; public String getname() { return name; public void sayhi(string s) { // notera append på strängar System.out.println( Hi + s); Informationsteknologi #5 Hemlig eller offentlig public String name; private int phone; protected User user; // friendly, syns inom ett package int bar = 42; se kap. 5, Eckel Informationsteknologi #6 2
Skapa objekt int i = 7; // primitiv, ej objekt String s = foo ; Vector v = new Vector(); Car volvo = new S80( red ); // måste inte hålla i objekten; fult new Person(new Name( erik )); Informationsteknologi #7 public class Car { // attribut public String model; Constructor // konstruktor public Car(String model) { this.model = model; Car c = new Car( SAAB ); Informationsteknologi #8 Primitiver Primitiver int, float, long, char, Objekt Integer, Float, Long, Primitiver finns av effektivitetsskäl Informationsteknologi #9 3
Scope Objekt försvinner av sig självt { String s = new String( Hej ); // s är nu borta. helt OK. Informationsteknologi #10 Namn på klass och fil public class Car { // stor bokstav! public String model; private String color; Måste finnas i en fil som heter Car.java Informationsteknologi #11 Attribut public class Car { public String model; private String color; Car c = new Car(); c.model = Volvo ; // ok c.color = Green ; // fel Informationsteknologi #12 4
public class Car { private String color; Metoder public void setcolor(string color) { this.color = color; // test Car c = new Car(); c.setcolor( Blue ); Informationsteknologi #13 Returvärden public class Car { public int maxspeed() { return 250; // test Car saab93 = new Car( SAAB ); int max = saab93.maxspeed(); Informationsteknologi #14 Package Ett sätt att packetera kod för att undvika krockar, visa vem som är ägare, visa hur koden är strukturerad com.volvo.salary com.sun.http.server com.borland.jbuilder.ui.menu Används ihop med import Informationsteknologi #15 5
Package package kurs.konstruktion; import com.util.calculator; import java.math.*; // all in math! public class Foo { private Calculator cal; Informationsteknologi #16 Static Speciellt fall då ett attribut bör finnas oavsett om objektet är skapat eller ej. public class Integer { public static int MAX = 12345678; if (salary > Integer.MAX) // yahoo! Informationsteknologi #17 Debug // not nice, but works System.out.println( Val is = + val); // better private static Logger log = Logger.getLogger("cachet.ui"); log.severe( Going down ); log.warning( Salary is null ); log.info( Created account ); Informationsteknologi #18 6
Kommentarer // this is a one-line comment /* two lines of bad comments */ /* * better to * write a * on each line */ Informationsteknologi #19 Literate programming, Donald Knuth Javadoc Informationsteknologi #20 /** A class comment */ public class DocTest { Bra kommentarer /** A variable comment */ public int i; /** A method comment */ public void f() { Informationsteknologi #21 7
Variabler och metoder getlastname() setmaxoflines(int i) String longname = foo ; int loopcounter = 7; Informationsteknologi #22 Eckel Nu har vi gått igenom 133 sidor ur hans bok... Informationsteknologi #23 Ärvning class Student extends Person { private String studyprogram = ITP ; Finns bara enkel ärvning (extends)! Man kan uppfylla flera interface (implements): class Student implements Person, Poor { private String studyprogram = ITP ; Informationsteknologi #24 8
Interface, kap 8 interface Car { int MAXSPEED = 250; // alltid public, ej friendly void brake(); void shift(int gear); Informationsteknologi #25 Interface, kap 8 class Saab implements Car { public void brake() { // do something public void shift(int gear) { // do sometihng Informationsteknologi #26 Klasser, nästlade class A { int i; // inner class class B { int k = 0; A { B b = new B(); Informationsteknologi #27 9
Klasser: composition You simply create objects of your existing class inside the new class // Bil.java class Hjul { int antal = 4; public class Bil { private Hjul hjul = new Hjul(); Informationsteknologi #28 Klasser: inheritance class Bil { // public class Volvo extends Bil { /// Informationsteknologi #29 Try/catch public class UrlStat { UrlStat(String s) { try { URL url = new URL(s); catch (MalformedURLException e) { e.printstacktrace(); Informationsteknologi #30 10
Stack Trace java.lang.nullpointerexception at se.uu.it110.icqui.icqclient.setstatus(icq- Client.java:102) at se.uu.it110.icqui.icqui$15.actionperformed(icqui.java:343) at javax.swing.jcombobox.fireactionevent(jcombobox.java:654) at javax.swing.jcombobox.selecteditemchanged(jcombobox.java:678) at javax.swing.jcombobox.contentschanged(jcombobox.java:730) at javax.swing.abstractlistmodel.firecontentschanged(abstractlistmode.java:82) at javax.swing.defaultcomboboxmodel.setselecteditem(defaultcomboboxmodel.java:90) at javax.swing.jcombobox.setselecteditem(jcombobox.java:377) at javax.swing.jcombobox.setselectedindex(jcombobox.java:414) at... Informationsteknologi #31 Swing Kap. 14 + SDK online docs: JPanel BorderLayout JLabel JButton JTextField Informationsteknologi #32 11