1 / 37

Begreber og Redskaber 5

Begreber og Redskaber 5. BRP. Plan for idag. Overblik over klasser,objekter,nedarvning Repetition fra Dat A/Indledende programmering Centrale begreber om nedarvning Et par ord om objekt-orientering Håndkøring af programmer. Hvorfor objekter og klasser.

randy
Download Presentation

Begreber og Redskaber 5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Begreber og Redskaber 5 BRP

  2. Plan for idag • Overblik over klasser,objekter,nedarvning • Repetition fra Dat A/Indledende programmering • Centrale begreber om nedarvning • Et par ord om objekt-orientering • Håndkøring af programmer

  3. Hvorfor objekter og klasser • En samling data og operationer på det • Opbygning af sine egne datatyper • Modellering af virkelige objekter • Hierarkisk opbygning af program • Det kan forstås på mange niveauer

  4. Eksempel class A{ int i,j; } .. A a; //a kan have hægte til obj a = new A(); // a peger på obj. a.i = 1; //dot-notation

  5. Oprettelse af objekter • Hvis felter skal initialiseres under oprettelse kan det ske i en konstruktør class A{ int i,j; A(){ i = 0; j = 1; } }

  6. Oprettelse • Argumenter til oprettelsen class A{ int i,j A(int x, int y){ i=x; j = y;} } .... A a = new A(2,3);

  7. Hægter til objekter • Variable med klasse som type er hægter til objekter – initielt null class A{ ... } A a = new A(); A b = a; a A obj. b

  8. Metoder i klasser • Klasser kan indeholde metoder - dvs underprogrammer class A{ int i,j; void udskriv(){ System.out.println(i+”,”+j);} } A a = new A(); a.udskriv();

  9. Funktioner • Metoder kan have returværdi class A{ int i,j; int iogj(){return i+j; } } A a = new A(); System.out.println(a.iogj());}

  10. public/private • Synlighed: Felter og metoder kan være private for en klasser – usynlige udenfor class A{ private int i,j; public int getI(){return i;} public void setI(int x){i=x;} } // a.i=3 ej ok , a.setI(3) ok

  11. Accessor/mutator • God stil: Felter gøres private • Værdier hentes med accessormetoder • Felter ændres med mutatormetoder accessor: public int getI(){return i;} mutator public void setI(int x){i=x;}

  12. Static/dynamic • Static felter og metoder hører til klassen – ikke til objekter • Et ”static” felt per klasse • Et ”dynamic” felt per objekt • static metoder må ikke bruge dynamiske felter • static metoder kan kaldes før objekter er oprettet

  13. Eksempel public static void main(String args[]){} • Er kendt uden for klassen (public) • Kan kaldes uden at der er objekter (static) • Skal ikke returnere en værdi (void)

  14. Eksempel: statiske felter class A{ static private int nr=0; A(){nr++;} static int getNr(){return nr;} } System.out.println(A.getNr()); A a = new A(); System.out.println(a.getNr());

  15. Metoder og parametre class A{ int i=0; ... } void p1(int i){i=3;} void p2(A a){a.i=3;} int j=2; p1(j); // j==2 A b=new A(); p2(b); // b.i==3

  16. Virkefelt • Java er blokstruktureret (som Pascal, C...) • Navne kan genbruges i forskellige blokke class A{ int i; void p(){ int i; ...} } Klassen har felt i, metoden lokal variabel i

  17. this refererer til objektet class A{ private int i; void setI(int i){this.i=i;} int getI(){int i=this.i; return i;} void addToI(int j){i=i+j;} }

  18. Overlæsning • Man kan have flere metoder med samme navn – bare argumenttyper er forskellige p(String s){...} p(int i){ ... } p(A a){ ...} p(”hej”); p(3); p(new A());

  19. toStringmetoder Lad alle klasser have en metode: public String toString(){ ...} som returnerer tekstuel version af objektet Bruges en klasse som tekststreng kaldes denne metode: System.out.println(”a = ”+a);

  20. Eksempel: dato class Date{ //felter private int day,month,year; //konstruktør Date(int day, int month, int year){ setDay(day); setMonth(month); setYear(year);} Date(int day, int month){ setDay(day); setMonth(month); setYear(..);} //mutator void setDay(int day){this.day=day;} void setMonth(int month){this.month=month;} void setYear(int year){this.year=year;}

  21. //accessor int getDay(){return day;} int getMonth(){return month;} int getYear(){return year;} //toString public String toString(){ return day + ”/”+month+”-”+year;} //operationer Date imorgen(Date d){ .. } Date imorgen(){ .. } //testing public static void main(){ Date d = new Date(32,13,1999); Date d1= new Date(21,9,1999); Date d2= d1.imorgen(); }

  22. Datamodellering • Hvad er en dato? Dag, måned, år plus operationer som imorgen, igår, mm • Skal der være mutator metoder? • Kan en dato ændres? • Check i konstruktør?

  23. Nedarvning class A{ int i; } class B extends A { int j;} //B er subtype af A A a = new A(); a.i = 1; B b = new B(); b.i = 1; b.j = 2; A aa = new B(); aa.i = 1; //ej aa.j // ej B bb = new A();

  24. Subtyper A a = new A(); a.i = 1; B b = new B(); b.i = 1; b.j = 2; A aa = new B(); aa.i = 1; //ej aa.j b = (B) aa; // casting - typecheck b = (B) a; // køretidsfejl if(aa instanceof B) b = (B) aa; //typecheck

  25. Subtyper A a; B b = new B(); a = b; // ingen casting b = (B) a // casting nødvendig A er supertype for B, B subtype af A Værdier af subtype må bruges som supertype

  26. Overskrivning class A{ void hej(){System.out.println(”AA”);} } class B extends A{ void hej(){System.out.println(”BB”);} } A a = new A(); a.hej(); // AA B b = new B(); b.hej(); // BB A c = new B(); c.hej(); // BB I B: void hej1(){super.hej();} b.hej1(); // AA ((B) c).hej1(); // AA

  27. Håndkøring Application.main args = null i=1 j=3 public class Application{ public static void main(String args[]){ int i,j; i=1; j=3; • while(j>0){ i=i*2; j=j-1; } } }

  28. Håndkøring Application.main args = null i=1 2 j=3 2 public class Application{ public static void main(String args[]){ int i,j; i=1; j=3; while(j>0){ i=i*2; j=j-1; • } } }

  29. Håndkøring Application.main args = null i=1 2 4 j=3 2 1 public class Application{ public static void main(String args[]){ int i,j; i=1; j=3; while(j>0){ i=i*2; j=j-1; • } } }

  30. Håndkøring Application.main args = null i=1 2 4 8 j=3 2 1 0 public class Application{ public static void main(String args[]){ int i,j; i=1; j=3; while(j>0){ i=i*2; j=j-1; • } } }

  31. Håndkøring Application.main args = null a= b= t= class A{int x;} public class Application { public static void main(String args[]) {A a,b,t; • a=new A(); b=new A(); a.x=1; b.x=2; t=a; a=b; b=t ;}}

  32. Håndkøring Application.main args = null a= b= t= class A{int x;} public class Application { public static void main(String args[]) {A a,b,t; a=new A(); • b=new A(); a.x=1; b.x=2; t=a; a=b; b=t ;}} A X=0

  33. Håndkøring Application.main args = null a= b= t= class A{int x;} public class Application { public static void main(String args[]) {A a,b,t; a=new A(); b=new A(); • a.x=1; b.x=2; t=a; a=b; b=t ;}} A X=0 A X=0

  34. Håndkøring Application.main args = null a= b= t= class A{int x;} public class Application { public static void main(String args[]) {A a,b,t; a=new A(); b=new A(); a.x=1; b.x=2; • t=a; a=b; b=t ;}} A X=0 1 A X=0 2

  35. Håndkøring Application.main args = null a= b= t= class A{int x;} public class Application { public static void main(String args[]) {A a,b,t; a=new A(); b=new A(); a.x=1; b.x=2; t=a; • a=b; b=t ;}} A X=0 1 A X=0 2

  36. Håndkøring Application.main args = null a= b= t= class A{int x;} public class Application { public static void main(String args[]) {A a,b,t; a=new A(); b=new A(); a.x=1; b.x=2; t=a; a=b; • b=t; }} A X=0 1 A X=0 2

  37. Håndkøring Application.main args = null a= b= t= class A{int x;} public class Application { public static void main(String args[]) {A a,b,t; a=new A(); b=new A(); a.x=1; b.x=2; t=a; a=b; b=t; • }} A X=0 1 A X=0 2

More Related