Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)

Lignende præsentationer


Præsentationer af emnet: "Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)"— Præsentationens transcript:

1 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)

2 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Oversigt: Java & C++ forskelle  Programmodel og eksekveringsmodel  Klasse model  Instans- og klasse variable og metoder  Typesystem: skelner mellem klasse og kontrakt/type  Har kun pass-by-reference for instanser  Standard biblioteker  collections  API dokumentation  JavaDoc

3 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Programmodel & Eksekveringsmodel

4 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Programmodel  Et Java program er en samling af klasser.  Der er IKKE noget ’file scope’  Ting kan ikke ligge udenfor en klasse i Java.

5 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Programmodel  Der er en 1-til-1 relation mellem en klasse og en kildetekstfil  Klassen PostfixCalculator skal ligge i en fil som hedder PostfixCalculator.java  Java compileren (javac) oversætter klasser 1-til-1 til bytecode filer.  javac PostfixCalculator.java genererer en PostfixCalculator.class

6 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Eksekveringsmodel  Java har ikke et ’eksekverbart image’.  Et program en samling bytecode filer.  Java bytecode fortolkes af en fortolker: ’java’. java tager en klasse som parameter  java PostfixCalculator  … bevirker at PostfixCalculator.class indlæses og fortolkningen begynder.

7 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Eksekveringsmodel  Java bytecode indlæses dynamisk!  klasser indlæses første gang der instantieres et objekt af typen.  indlæsningen sker via en URL  i dette kursus vil det næsten altid være din harddisk  men det kunne ligeså godt være fra et website…  URL’en defineres som sammensætningen af  CLASSPATH og klassenavnet

8 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Entry point  Java fortolkeren starter fortolkningen i entry-point som er klasse-metoden main.  java PostfixCalculator  … betyder at java fortolkeren kigger efter metoden public class PostfixCalculator { public static void main(String[] args) { > } }

9 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Klassemodel

10 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Klassemodel  En java klasse ser nogenlunde ’normal’ ud  Her er en instans variabel og en instans metode; altså felter som definerer tilstand og opførsel for hvert enkelt instantieret objekt. public class AnExampleClass { public int aMethod( int x ) { } private int anAttribute; }

11 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Navngivning  Konventionen foreskriver:  Klassenavne skrives med stort  AnExampleClass  Metodenavne skrives med småt  anAttribute  Pakkenavne skrives med småt  java.util.List

12 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Instantiering  Java objekter instantieres via operatoren new  Alle objekter i Java allokeres på heap!!! public void doSomething() { AnExample ae = new AnExample(); int y = ae.aMethod(42); }

13 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java interfaces  Java har et specielt begreb, interface, som dækker over en 100% abstrakt specifikation af metoder.  Interfaces kan ikke indeholde metodekroppe ej heller instansvariable. public interface UserInterface { /** * Set teksten i lommeregnerdisplayet * @param s Teksten der skal fremkomme i displayet */ public void setDisplay(String s); }

14 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Referencebaseret  Java skelner mellem to slags typer  Simple typer: int, char, double, long  Klasse typer: (instanser/objekter)  De håndteres forskelligt  Simple typer = handle by value  Klasse typer = handle by reference  Dvs. i AnExample ae = new AnExample(); er ae en reference til et objekt.  Java er dejlig fri for *ae og &ae…

15 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Reference baseret  Og hvad betyder det så? Date d1 = new Date(1,4,2006); Date d2 = new Date(1,4,2006); if (d1 == d2) {...}?(1) d1 = d2; d2.addDays(27); if (d1 == d2) {...}?(2)

16 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Reference baseret  Både = og == opererer på objekt referencer.  Hvis man vil lave value kopiering eller sammenligning, må man benytte metoder.  Alle Java klasser arver fra java.Object, som definerer  boolean equals(Object o);  void clone(Object o);

17 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Øvelse  Skriv en metode i java, som kan lave en ”swap”, altså bytte tilstand på to objekter.  Eksempel swap på heltal: int x=7, y=12, tmp; tmp=x; x=y; y=tmp;  Konstruer indholdet af public void swap(Object a, Object b);

18 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Memory management  I C++ skal programmøren selv deallokere objekter via ’delete’. Så memory mangement bliver en implicit del af en klasses kontrakt (hvorfor? hvilke problemer giver det???)  Java: automatisk garbage collection.  Dvs. vi skriver trygt d1 = d2;  Ingen bekymring for den gamle d1 instans.

19 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Klasse metoder  Java har også variable og metoder på klasse niveau. Det angives med (det komplet sindsyge) nøgleord static.  public static void main(String[] args);  Klasse metoder og –variable er ’globale’ for alle instanser af klassen!  Øvelse: Hvorfor er main en klassemetode?(1)

20 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Polymorfi  En reference er erklæret (kvalificeret) med een type,  Referencen kan referere til et objekt af en anden type.  Dog skal objektets aktuelle type være en subtype af den erklærede type.  Der er to måder at lave subtyper på i Java  implementer et interface  nedarve fra en klasse. public static void AWTAdvanced() { Calculator model = new AdvancedCalculator(); UserInterface view = newAWTUserInterface(model); model.setUserInterface(view); } Erklæret type Aktuelle type

21 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Specialisering af klasser  En klasse specialiseres via keyword extends  En klasse kan kun arve fra én klasse  single inheritance of implementation class AdvancedCalculator extends SimpleCalculator {... }

22 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Kontrakter for klasser  En klasse kan implementere vilkårligt mange interfaces  Information til compileren: tjek at klassen overholder interfacet.  Interface’s er derfor glimrende til at udtrykke en kontrakt. class AdvancedCalculator implements Calculator, MouseListener, List {... }

23 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Standard biblioteker

24 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java biblioteker  En af de helt store styrker ved Java er et meget omfangsrigt, standardiseret bibliotek.  Vi vil især bruge Collections i java.util.  Kig i JavaDoc på java.util.List. List implementeres af f.eks. java.util.Vector.  java.util.List aList = new java.util.Vector();

25 Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT JavaDoc  Hvis man gør sig lidt umage og kommenterer sin Java kildetekst via specielle kommentarer får man automatisk sin API dokumentation foræret via værktøjet ’JavaDoc’.  javadoc *.java


Download ppt "Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)"

Lignende præsentationer


Annoncer fra Google