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

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

14 okt. 2003, Arne Maus Inst. for informatikk, UiO
C++ for Java-programmerere
Introduksjon til objektorientert programmering i PHP
Uke 8 - Mer om: Objekter, klasser og pekere
Polymorfi og arv, del 1 LC191D Videregående programmering Semesterplan: Høgskolen i Sør-Trøndelag, Avdeling.
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Java 12 Mer filbehandling - skrive til fil HashMap Et større eksempel Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  En instans er et objekt av en bestemt klasse  Instanser blir laget ved å kalle klassens.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Objektorientert programmering Objektorientert systemutvikling
Objektorientert programmering i PHP del 2
ObjektOrientert Systemutvikling del I
App A Java programmering
C# for javaprogrammerere
Objekt-orientering og Java
Aksess kontroll None shall pass.
En gang til!? .
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 11 Applet’s Hva karakteriserer applet’sside.
1 App_A_17 Et eksempel på OOP knyttet til 2-dim figurer.
Læring og tenkning Systemutvikling er læring Gjensidig respekt og samarbeid Følge en konkret oppskrift Velge blant flere oppskrifter Nå målet uten oppskrift,
Strukturerende elementer i UML
Introduksjon til Java 5.0. Hva er nytt i 5.0? Generiske typer For-løkke med iterator (for-hver løkke) Automatisk innpakking av primitive typer Metadata.
Kap 05 Abstrakte datastrukturer. Arv - Implementering Interface / Abstrakte klasser / Konkrete klasser Concrete classAbstract class Interface extends.
Design Patterns Iterator & Mediator. Gruppe 8 Presentasjonsgruppe:Resten av gruppen: Marianne AtesAndrè Johansen Tom Vidar LundeHege-Kristin Johansen.
Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Objektorientert programmering
Java 11 Programmering med og uten objekter: hva er forskjellen?
OOT Seminar H-97 CORBA Praktisk del. Valg av ORB implementasjon n Har valgt å bruke Visigenic sin ORB implementsjon n ORB’en er 100% Java kodet n Bygger.
VI LAGER EN PLATEBUTIKK
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Arv og polymorfi, del 3 Modifikatoren abstract side 2-3
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
CORBA Noen hull som må fylles: ORB Object Adapters CORBA services IDL Factory Objects.
PUG-NORWAY OKTOBER 2008 THOMAS SKJØRTEN, HILDE ANDREASSEN UML og OpenEdge OOABL.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
09 – Arv og polymorfi i java
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Objektorientert utforming In 140 Sommerville kap. 12.
1 App A Java programmering. 2 Enkelt Java-program.
Indledende Datalogi /kelk 1 Need to know Løkker Klasser, instanser og Objekter Hvorfor objektorientering? Scope – hvor erklæres en variabel? ”Access Modifiers”
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
INF Objektorientert programmering
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 10 Mer om programmering av GUI Dialoger.
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
Objektorientert design
Jæger: Robuste og sikre systemer INF150 Programmering mandag 25.9 MER OM: Sub-prosedyrer og sub-funksjoner Kap 4.
1 Inf1000 (Uke 10) Oppgaveløsning. Hashmap Programmering med og uten objekter: hva er forskjellen? Noen generelle råd vedrørende oppgaveløsing HashMap.
Inf1000 (Uke 10) HashMap og ArrayList
INF1000 (Uke 11) Programmering
Kapittel 4 Skriving av klasser. 4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar.
Kapittel 3 Bruk av klasser og objekt. 3.1 Å lage objekt Eit variabelnamn i Java representerer Ein primitiv verdi (f eks boolean, int ) Eit objekt (f eks.
Kapittel 7 Array (lister og tabellar). 7.1 Arrayelement Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement.
Klassevariabler- og metoder Funktionalitet på klasseniveau.
Android Programmering 10 timers kurs. Forutsetninger Noe bakgrunn i Java eller et annet objektorientert språk Litt peiling på XML Vi bruker Windows 7.
Arv Gjenbruk. Begreper Super Overriding – Samme signatur Polymorfi – «en ting kan bety mange ting»
Strukturerende elementer i UML
Triks Avslutt alle klasser, metoder og løkker samtidig som du lager dem. Deklarer alle variablene/referansene på begynnelsen av klassen. Hvis du definerer.
IS-102 Interaksjon med objekter
BilSalg klassedatastruktur Bil klassedatastruktur
Klassehierarki - Abstrakte datastrukturer
Objektorientert programmering i Java
BilSalg klassedatastruktur Bil klassedatastruktur
Utskrift av presentasjonen:

Objekt Orientert Programmering (OOP)

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

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

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

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

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å

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 Hansen Havnegt Olsen Reinv Data gir duplikater for hvert objekt Metodene deles av objektene Klassen Ansatt Objekt 2Objekt 3Objekt 1

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

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); } ….. }

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; }

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

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.

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

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

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

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

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

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

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

Arv - main

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; }

Arv - class A (2/2)

Arv - class B extends A (1/2)

Arv - class B extends A (2/2)

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

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

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

Interface - Abstrakte klasser main

Interface - Abstrakte klasser interface I_A

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

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

Interface - Abstrakte klasser class A

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.

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.

Indre klasser - main

Indre klasser - class A (1/3)

Indre klasser - class A (2/3)

Indre klasser - class A (3/3)

ENDEND

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

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); } ….. }

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( ); } ….. }