Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.

Lignende præsentationer


Præsentationer af emnet: "DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato."— Præsentationens transcript:

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 ) …


Download ppt "DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato."

Lignende præsentationer


Annoncer fra Google