Laste ned presentasjonen
Presentasjon lastes. Vennligst vent
PublisertMia Jensen Endret for 9 år siden
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
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( ); } ….. }
Liknende presentasjoner
© 2024 SlidePlayer.no Inc.
All rights reserved.