Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afKarla Andersen Redigeret for ca. et år siden
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
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.