Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afDagmar Johansen Redigeret for ca. et år siden
1
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato
2
DAIMIIntroducerende objektorienteret programmering3B.2 Modelelementer Et program er en model, hvor de enkelte elementer er beskrevet vha. klasser. Altså er hver klasse et ‘modelelement’. Vi vil ofte sige at en klasse ‘modellerer’ en eller anden ting: En diskfil, en streng, en skildpadde, et … Vi skal nu selv til at skrive klasser i Java.
3
DAIMIIntroducerende objektorienteret programmering3B.3 Eksempel: Datoer Vi vil skrive en klasse, som modellerer en dato, og vi starter meget simpelt: class Date1 { public Date1() { } public void print() { System.out.println( "Datoen er 16/9/1999" ); } Klasseafgrænsning konstruktør metode
4
DAIMIIntroducerende objektorienteret programmering3B.4 Metodestruktur public void print() { System.out.println( "Datoen er 16/9/1999" ); } Prototype Retur-værdi Metodenavn Metodekrop Parametre
5
DAIMIIntroducerende objektorienteret programmering3B.5 Brug af Date1 Nu er klassen ‘Date1’ defineret; lad os prøve den. Det gør vi med et lille testprogram: class TestDate { public static void main( String[] args ) { Date1 d = new Date1(); d.print(); }
6
DAIMIIntroducerende objektorienteret programmering3B.6 Programdynamik Et program udføres een sætning ad gangen, og hver sætning udføres til ende, førend den næste evalueres: mainDate1d.print new Date1() d.print() Sys...println
7
DAIMIIntroducerende objektorienteret programmering3B.7 Klasser og java-filer Java kræver at en klasse skal ligge i en fil med samme navn som klassen, og “.java” som efternavn (suffix): Klassen Date1 skal gemmes i “Date1.java” Klassen TestDate skal gemmes i “TestDate.java”
8
DAIMIIntroducerende objektorienteret programmering3B.8 Udvidet eksempel Date1 er en ‘anelse’ ufleksibel. Nyt forsøg: class Date2 { public Date2() { y = 1999; m = 9; d = 16; } public void print() { System.out.println( "Datoen er "+d+"/"+m+"/"+y ); } public void set( int year, int month, int day ) { y = year; m = month; d = day; } private int y; private int m; private int d; } Instans variable
9
DAIMIIntroducerende objektorienteret programmering3B.9 Hvad har vi gjort? For at kunne håndtere vilkårlige datoer har vi: Erklæret tre heltal (int)’s instans variable til at opbevare datoens tilstand: (dag, måned, år) Konstruktører initialiserer enhvert nyt datoobjekt til at have tilstanden (16/9/1999) Rettet ‘print’ til så den udskriver korrekt dato (‘+’ er en betydelig lettere måde at lave ‘concat’ på) Tilføjet en metode ‘set’:
10
DAIMIIntroducerende objektorienteret programmering3B.10 Metoden ‘set’ public void set( int year, int month, int day ) { y = year; m = month; d = day; } Der erklæres tre parametre: year, month, day, i parameterlisten, alle af typen int (y,m,d) tildeles værdien af parametrene i metodens krop. Parameterliste
11
DAIMIIntroducerende objektorienteret programmering3B.11 Udvidet test class TestDate { public static void main( String[] args ) { Date2 d = new Date2(); d.print(); d.set(2000, 1, 1); d.print(); }
12
DAIMIIntroducerende objektorienteret programmering3B.12 Øvelse 1) Skitser en klassedefinition af Turtle inklusiv metoden ‘move’. 2) Hvilken dato udskrives der her: d.set( 1999, 12, 32 ); d.print(); 3) Er det let at lave en metode: public void add( int days ) der kan lægge et antal dage til en dato?
13
DAIMIIntroducerende objektorienteret programmering3B.13 Returværdier Hvad hvis vi kun er interesseret i, f.eks., årstallet? public int year() { return y; } public int month() { return m; } public int day() { return d; } ReturtypeReturnsætning
14
DAIMIIntroducerende objektorienteret programmering3B.14 Return return er en speciel sætning, der kun giver mening i en metode, og angiver hvad en metodens værdi er (hvad den evalueres til) return-statement ::= “return” [ expression ] Typen på udtrykket efter “return” skal passe med den i metodedefinitionen specificerede return uden efterfølgende udtryk svarer til void
15
DAIMIIntroducerende objektorienteret programmering3B.15 Return Semantik: Når return udføres, afsluttes metodekaldet øjeblikkeligt. public void kukkuk() { System.out.println( “Gemmeleg” ); return; System.out.println( “Kuk kuk” ); }
16
DAIMIIntroducerende objektorienteret programmering3B.16 Metodetyper I de “klassiske” programmeringssprog skelner man skarpt mellem to typer af metoder: Funktioner: Metoder som returnerer en værdi; kan bruges som udtryk Procedurer: Metoder som ikke returnerer en værdi; kan bruges som en sætning.
17
DAIMIIntroducerende objektorienteret programmering3B.17 Overloading En metodes navn og parameterliste kalder man en metodes signatur. To metoder med samme navn men forskellige parameterlister opfattes som forskellige metoder. Har man flere metoder med samme navn, siger man at metoden er overloaded. public Date2() … public Date2( int year, int month, int day ) …
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.