Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på.

Liknende presentasjoner


Presentasjon om: "Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på."— Utskrift av presentasjonen:

1 Objekt Orientert Programmering (OOP)

2 Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på

3 Objektorientering (OO)2/6 Norske pionerer Grunnleggere av det første objektorienterte dataspråk, Simula: Kristen Nygaard og Ole-Johan Dahl. Nobel Prize of Computing: A. M. Turing Award

4 Objektorientering (OO)3/6 SQLWindows eksempel Klassen clsDataField er tillagt egenskapen magenta bakgrunnsfarge.

5 Objektorientering (OO)4/6 Flash eksempel Klassen Joystick inneholder et grensesnitt som forteller om joystickens posisjon (x,y) og vinkel. Klassen Car leser Joystickens data for å orientere seg om sin videre bevegelse

6 Objektorientering (OO)5/6 KlasseDeklarasjon av data + operasjoner på ‘gjenstander’ av en gitt type ObjektEn forekomst (variabel) av en klasse Klasse Objekt Abstrakt nivå Fysisk nivå

7 Objektorientering (OO)6/6 Data Ansatt Nr Navn Adresse Tlf... Metoder Add_AnsNr Add_Navn Add_Adress Add_Tlf Get_AnsNr BeregnLonn... 3 Nilsen Storgt 7 37088888 5 Hansen Havnegt 8 37055555 7 Olsen Reinv 9 37022222 Data gir duplikater for hvert objekt Metodene deles av objektene Klassen Ansatt Objekt 2Objekt 3Objekt 1

8 Objektorientert programmering (OOP) La objektene ta hånd om seg selv (intern struktur,...). Kommuniser med objektene via et grensesnitt som er uavhengig av intern struktur i objektene. Objekt Grensesnitt Melding

9 class / object class B { private var owner :Object; private var x :Number; public function A(owner:Object) { this.owner = owner; } public function set_x(x:Number){ this.x = x; } public function get_x() :Number{ return x; } class A { private var b :B; ….. public function make_B( ) { b = new B(this); } ….. }

10 Klassemedlemmer class A{// klasse A private var owner :Object; private var x :Number;// attributt x public A(owner:Object) {// konstruktør this.owner = owner; } public setX(x:Number) {// accessor this.x = x; } public getX( ) :Number {// mutator return x; }

11 Aksesskontroll1/4 privateTilgang kun av klassen selv protectedTilgang kun av klassen selv samt arvede klasser publicTilgang av alle Tilgang innenfor gjeldende pakke

12 Aksesskontroll2/4 private:Strengeste aksess-kontroll. Kun funksjoner i klassen selv kan aksessere et private klasse-medlem. Avledede klasser eller forekomster har ingen aksess til private medlemmer i en parent-klasse. protected:Kun klassen selv eller avledede klassers funksjoner har aksess til protected medlemmer. Forekomster har ingen aksess til protected medlemmer. public:Medlemmer deklarert vha public har man ubegrenset aksess til, dvs public medlemmer kan aksesseres av en hvilken som helst funksjon.

13 Aksesskontroll3/4 ä Attributter skal skjules for brukeren av klassen. ä Brukeren av klassen skal ikke ha tilgang til informasjon om klassens interne struktur. ä Brukeren skal benytte en protokoll til klassen. - Brukeren sender meldinger til objektet. - Brukeren kaller metodene. Informasjons-skjuling Nr Navn Init GetNr GetNavn

14 Aksesskontroll4/4 Base Class Derived Class Other Class or Object private protected public

15 Arv-Base class / Derived class A B Base class Derived class

16 Arv-Eksempel Person Ansatt Selger Navn Fødselsdato Navn Fødselsdato Avdeling Timelønn Beregning av lønn Navn Fødselsdato Avdeling Timelønn Beregning av lønn Salgsdistrikt Bonus Arvet fra Person Arvet fra Ansatt

17 Arv-Klassehierarki Transportmiddel Sykkel Bil Tog Fly Trehjul- sykkel Trehjul- sykkel Tandem Person- bil Person- bil Laste- bil Laste- bil

18 Arv - Akesess-kontroll 1 Private 2 Protected 3 Public Base class A 2 Protected 3 Public Derived class B Derived class C Forekomst av B

19 Arv - Klassehierarki-diagram Concrete classAbstract class Interface extends Interface extends Interface implements Concrete class extends Concrete class

20 Arv - main

21 Arv - class A / class B (1/2) class A { private var x :Number; ….. public function A( ) { this.x = 0; } public function set_x(x:Number) { this.x = x; public function get_x( ) :Number { return x; } class B extends A { private var y :Number; public function B( ) { super(); this.y = 0; } public function set_y(y:Number) { this.y = y; } public function set_xy(x:Number, y:Number) { set_x(x); this.y = y; } public function get_y( ) :Number { return x; }

22 Arv - class A (2/2)

23 Arv - class B extends A (1/2)

24 Arv - class B extends A (2/2)

25 Arv og polymorfi public class A{ public f (…) { … } public class B extends A { public f (…) { … } A B A a = new A(…) a.f(…) // eksekverer A sin f B b1 = new B(…) A b2 = new B(…) b1.f(…) // eksekverer B sin f b2.f(…)// eksekverer B sin f

26 PolymorfiFigur (getAreal) Figur getAreal..... Trekant getAreal..... Sirkel getAreal..... Figur s = new Sirkel(…) s.getAreal( )

27 PolymorfiFigur (flytt) Figur flytt TrekantSirkel Figur s = new Sirkel(…) s.flytt( ) skjul nyeKoord vis skjul vis skjul vis

28 Interface - Abstrakte klasser main

29 Interface - Abstrakte klasser interface I_A

30

31 Interface - Abstrakte klasser abstract class A_A (1/2)

32 Interface - Abstrakte klasser abstract class A_A (2/2)

33 Interface - Abstrakte klasser class A

34 Indre klasser (non-static) public class A{ int y; public class B {// B eksisterer kun innenfor A int x; void f( ) { …// this refererer til B …// A.this refererer til A } B kan instantieres kun av en ikke-statisk metode innenfor A. B kan aksessere alle medlemmer av A og B direkte.

35 Indre klasser (static) public class A{ int y; public static class B {// B kan eksistere alene int x; void f( ) { …// this refererer til B …// A.this refererer til A } B kan eksistere alene (uten A-forekomst)og kan instantieres ved A.B b = A.B( ). Deretter kan f eksekveres ved b.f( ). B kan kun aksessere static medlemmer av A.

36 Indre klasser - main

37 Indre klasser - class A (1/3)

38 Indre klasser - class A (2/3)

39 Indre klasser - class A (3/3)

40 ENDEND

41 Parameteroverføring Overføring av primitive typer. Pass by value. Overføring av referense typer. Pass by reference. x :Number = 3 f(x) f(y:Number) 3 3 x y x :A f(x) f(y:A). x y

42 Program-struktur Flash var sim:Sim = new Sim(this); class Sim { private var mc :MovieClip; public function Sim(mc:MovieClip) { this.mc = mc; init(); } ….. } class Sim_X extends Sim { private var a :A; private var b :B; private var mc_A :MovieClip; private var mc_B :MovieClip; public function Sim_X(mc:MovieClip) { super(mc); init_X(); } private funcion init_X() { var d:Number = 0; mc_A = mc.createEmptyMovieClip(”mc_A”,++d); ….. } public function make_A() { a = new A(this,mc_A); } ….. }

43 Program-struktur class A { private var owner :Object; private var mc :MovieClip; public function A(owner:Object, mc:MovieClip) { this.owner = owner; this.mc = mc; init( ); } ….. }


Laste ned ppt "Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på."

Liknende presentasjoner


Annonser fra Google