Transcript GRIP

previous

OOMPA 2D1359 & 2D1360

Föreläsning 1

Objektorienterad Modellering Programmering och Analys

Introduktion och översikt Hemsida: http://www.nada.kth.se/kurser/kth/2D1359 Registrering: res checkin oompa00 Hemkatalog: /info/oompa00 Kursmöte

Newsmöte

: news:nada.kurser.oompa

Kursledare

Björn Eiderbäck, [email protected]

Rum 1641, Osquars Backe 2, tel 7906277

next

Introduktion och översikt

• • •

Mål

(saxade ur den formella beskrivningen)

ge ingående kännedom om principerna och begreppen bakom objektorienterad analys, design och programmering, ge kännedom om och färdighet i metoder för att utveckla, d.v.s. utforma, implementera och prova, objektorienterade program, ge erfarenhet av objektorienterad programmering

för att deltagarna ska kunna tillämpa objektorienterade metoder vid design och implementation av moderna programsystem.

2 previous next

Introduktion och översikt

Kursinnehåll ...

Objektorientering, principer och begrepp: objekt, klass, instans, attribut, metod, arv etc. Abstrakta datatyper, generiska datatyper, polymorfi.

Objektorienterad analys, modellering och design: principiella tillvägagångssätt, exempel på notationer, kriterier på god design och robust programuppbyggnad. Systematiska principer för konstruktion av korrekta och robusta program.

3 previous next

Introduktion och översikt

... Kursinnehåll

Objektorienterade språk: olika språkfamiljer, deras grundläggande begrepp och skillnader.

Programmering i ett objektorienterat språk.

Testning: typer av fel, felhantering, val av testdata och testprocedurer.

4 previous next

Introduktion och översikt

Kursens uppläggning ...

• Föreläsningar

På kursen ingår 18 föreläsningar varav 13 i period 1 och 5 i period 2.

• Seminarier

På kursen ingår också 6 seminarier. Varje seminarium består av två delmoment. Seminarierna redovisas i grupper vid speciella seminarietillfällen.

För godkänt fordras att 9 delmoment utförs (av totalt 12)

5 previous next

previous

Introduktion och översikt

... Kursens uppläggning ...

• Laborationer

Laborationer genomförs i grupper om två personer.

I kursen ingår sex stycken laborationer. Dom första två laborationenrna bör redovisas period ett resterande i period två.

Extrauppgifterna på respektive laboration kan också ersättas med speciell extrauppgiftslab. Publiceras på kursens hemsida.

Laborationerna genomförs i salar plan 4 Osquars Backe 2

• Tentamen

Innehållet i period ett av kursen tenteras.

6 next

Introduktion och översikt

... Kursens uppläggning ...

• Seminarier

Sem 1, Figurer i hierarki

Sem 2, CRC-kort

Sem 3, UML

Sem 5, Designmönster

Sem 4, Kontemplation, reflektion och lite mer UML

Sem 6, eXtreme Programming.

7 previous next

Introduktion och översikt

... Kursens uppläggning ...

• Laborationer

– –

Lab 1, Figurer i hierarki Lab 2, Designmönster

– –

Lab 3, Grafik Lab 4, Mer om Designmönster. IDE

– –

Lab 5, VisualWorks\Smalltalk: Introduktion Lab 6, eXtreme Programming och Smalltalk

Extralabar

Värda 1-6 betygsgrundande kurspecifika päng beroende av deras omfattning

8 previous next

previous

Introduktion och översikt

Kursböcker

Vi kommer använda följande bok:

Object-Oriented Software Engineering Conquering Complex and Changing Systems

, av Bernd Bruegge och Allen H Dutoit, Prentice Hall 2000, ISBN 0-13-489725-0.

• Det finns också ett häfte om Java som säljs på NADAs expedition: –

Javaintroduktion

, av Bälter och Redz.

• Den som vill kan skaffa en bok om Java gärna med fokus på objektorientering, tex: –

Object-Oriented Software Development Using Java principles, patterns, and frameworks

, av Xiaoping Jia, Addison Wesley 2000, ISBN 0-201 35084-X.

• Information och tutorials om Java finns också på nätet, se kursens hemsida för adresser.

9 next

Introduktion och översikt

Objektorientering Historik språk...

• Simula – Av norrmännen Nygaard och Dahl – 50-talet Simulering på kärnkraftsanläggning – 60-talet utvecklades till Simula-67 • Smalltalk – 60-talet Allan Kays vision Dynabook – 70-talet Införde terminologin och spred idéerna – Resulterade i flera versioner av Smalltalk – ”berömda” Smalltalk-80 som blev plattformsoberoende och använde JIT-teknik 10 previous next

… språk ...

• C++ – Dansken Stroustrup – C-syntax – Inspirerad av Simula • Eiffel • Objective-C • Lisp-dialekter – CLOS • Object-Pascal • mfl previous next

Introduktion och översikt

11

... språk

• Java – Tidigt 90-tal med Gossling som drivande kraft – Inbäddade system – WEB • klient/server • säkerket – Plattformsoberoende

Introduktion och översikt

12 previous next

Mjukvarukonstruktion

• Vad är ett bra system?

Nyttigt och användbart Pålitligt Flexibelt Överkomligt Tillgängligt previous next

Introduktion och översikt

13

Introduktion och översikt

Har vi bra system?

• Vi känner till att många system har "problem" eller fel • Det finns exempel på system med mer drastiska fel – Mariner 1 till Venus 1962 • förstördes 290 s efter start, kostnad nästan 20 miljoner dollar – Ariane 5 1996 – Denvers godshanteringssystem överskred budget med 50% – Londons ambulanssystem – Therac-25 – Hotmail – ...

14 previous next

Introduktion och översikt

Hur ser ett bra system ut?

• Problem – Människans kognitiva förmåga är begränsad • Ett bra system är välstrukturerat och nedbrutet på mindre delar som kan förstås och förändras utan att andra delar i onödan påverkas • Man använder välkända designmönster • Systemen brukar ha: – svag koppling mellan delar – sammanhållna delar – inkapsling används – vara byggda med utgångspunkt från respektive moduls gränssnitt 15 previous next

Introduktion och översikt

Inkapsling och lös koppling

Inkapsling

är när en klient eller modul inte får veta mer än vad som som "finns i" gränssnittet hos ett annat objekt (som det använder) •

Lös koppling

är när olika moduler, eller komponenter, är så lite beroende av varandra som möjligt 16 previous next

Introduktion och översikt

Fokusera på gränssnitt

• Det har i många situationer visat sig bra om man designar ett system med utgångspunkt från komponenternas gränssnitt istället för beteende • Då brukar det vara enklare att ändra eller byta ut en viss modul eller komponent än annars 17 previous next

Introduktion och översikt

Abstraktion

• Med abstraktion menas att detaljer elimineras och att man fokuserar på väsentligheter • När man abstraherar "förloras" vissa detaljer • Graden av abstraktion kan variera i olika beskrivningar av ett system – Analys är mer abstrakt än – Design som är mer abstrakt än – Konstruktionen eller koden 18 previous next

Introduktion och översikt

Komponentbaserad konstruktion

• Man har länge eftersträvat konstruktion av system mha av pluggbara komponenter, ibland enligt legometafor • Objektorientering underlättar detta angreppsätt men är ändå inte lösningen på alla problem 19 previous next

previous

Introduktion och översikt

Bygga (stora) system

• Process – Använd en process med klart avskiljbara faser, där slutprodukten är utgånsgpunkt för nästa fas • Faser – En fas är en viss typ av moment i systemets utveckling, tex analys, design eller konstruktion • Iteration – Upprepa hela processen om och om igen där varje fas successivt "förbättras" • Olika detaljnivå – Olika faser ger olika detaljnivå och olika beskrivningsätt beskriver ett system på olika sätt 20 next

OO Historik Metoder ...

• Problem – Svårt att utveckla system – 80% underhåll – Modultänkande – Formalism fast enkel och användbar – Kommunikation • Flera metoder utvecklades på 80-talet – OMT – ObjectOry – Booch – Shlaer-Mellor – Coad-Yourdon – ...

previous next

Introduktion och översikt

21

… UML ...

• Unified Modeling Language UML – 90-talet – Förening av tre dominerande metoder – ”Standard”, OMG – Mer notation än metod (än så länge) – Ej (för) stringent = användbart

Introduktion och översikt

22 previous next

Introduktion och översikt

… UML …

Client Target

request()

Adaptee

specificRequest()

Adapter

adaptee request() adaptee specificRequest() 23 previous next

Introduktion och översikt

… UML

Client

1:m 4:r

Adapter

2:m’ 3:r’

Adaptee

24 previous next

Introduktion och översikt

Objektorientering

• Ett sätt att se världen – Agenter som kommunicerar • Dessa agenter kallas för

objekt

– Objekten självständiga enheter • Meddelanden och metoder – Objekten kommunicerar genom att skicka

meddelanden

till varandra – Hur ett objekt skall reagera på ett visst meddelande beskrivs i en

metod

– Olika objekt kan reagera olika på samma meddelande – Exempel: kalle.sitt() ger inte samma resultat som fido.sitt() Där kalle är en människa och fido en hund 25 previous next

Introduktion och översikt

Klasser

• En viss typ av objekt är definierad av en

klass

(eng

class

) • Ett objekt av en viss klass kallas för en

instans

(eng

instance

) • Exempel-1 – Klassen Bil – Kan ha instanserna Volvo, SAAB, Renault, mfl • Exempel-2 – Klassen Människa – Kan ha instanserna Kalle, Olle, Lisa, Greta, osv previous • Exempel-3 – Klassen Punkt – Kan bla ha instanserna (10, 20), (13, 47), (200, -10) next 26

Introduktion och översikt

Meddelanden och metoder

• En uppmaning till ett objekt att utföra något kallas för ett

meddelande

(eng

message

) volvo.moveBy(10, 20); • Beskrivningen av beteendet av ett visst meddelande kallas för

metod

(eng

method

) public void moveBy(int x, y) {position.x = position.x + x; position.y = position.y + y;} • Objektet som uppmanas att utföra ett meddelande brukar kallas för

mottagare

(eng.

receiver

) volvo.moveBy(10, 20); argument mottagare meddelande 27 previous next

Introduktion och översikt

Klasshierarkier och arv

Klasser ordnas i hierarkier

Window Ellipse Person Circle Win95Window MacWindow

En subklass ärver från sina superklasser Både attribut och metoder

Student

Person

name socSecNo age() isMale()

Student

programme courses isReadyWithAllCourses() 28 previous next

Introduktion och översikt

Metodbindning

Ett meddelande till ett objekt

p = new Person(); p.age(); resulterar i att en sökning efter metod med samma namn söks i objektets klass

Person

name socSecNo age() isMale() om metoden inte hittas i klassen fortsätter sökningen i superklassen p = new Student(); p.age();

Student

programme courses isReadyWithAllCourses() 29 previous next

Introduktion och översikt

Polymorfi och överskrivning

Olika klasser kan ha metoder med samma namn, s.k. polymorfi

Rectangle

paint()

Ellipse

paint()

Cartoon

paint()

Button

paint() Subklasser kan skriva över (eng. override) metoder i superklasser

Ellipse

paint()

Rectangle

paint()

MotorVehicle

numberOfWheels()

Circle

paint()

Square

paint()

Car

numberOfWheels()

Boat

numberOfWheels() 30 previous next

Introduktion och översikt

Vad menas med att vara objektorienterad?

• Svaret beror på om frågan avser programspråk, användargränssnitt, en tillämpning, en databas eller en analys och designmetod

Kategori Vad är det byggt med?

Hur arbetar det?

Vad behandlar det?

Hur är det strukturerat?

Vad mer kan man göra med det?

"Definition"

C++, Smalltalk, Java. Gränssnittsbyggare. Kodgenerator.

Återanvändbara komponenter Frågande snarare än berättande. Identifierande av enheter och sändande av meddelanden.

Abstraktioner som modellerar ett problem.

Moduler. Grundenheterna enkla att integrera. Generella beskrivningar av klasser av ting. Generalisering och specialisering, inkapsling, polymorfi, arv.

Systemet kan utvidgas med ändringar som propagerar ut över systemet utan att dom behöver dupliceras eller "förstöra" icke relaterade delar 31 previous next

Introduktion och översikt

...

• Objektorienterat språk – Baseras på

inkapsling

,

polymorfi

och

arv

• Objektorienterad användargränssnitt – Delarna i gränssnittet är objekt/komponenter • Objektorienterad tillämpning eller verktyg – Ändringsbara, återanvändbara och utvidgbara komponenter • Objektorienterad databas – Representerar, lagrar och återskapar objektmodeller • Objektorienterad analys och design – Består av tekniker att hitta objekt, för att strukturera relationer, eller hantera processen att skapa objekt.

32 previous next

Varför objektorientering?

• Separerar gränssnitt från implementation

Introduktion och översikt

• Avbildar världen på ett enkelt och naturligt sätt • Objekt förbereder system för förändring • Objekt tillåter att (bara) delar av systemet fungerar – Andra delar kan byggas klart senare • Objekt är naturliga att återanvända 33 previous next

Introduktion och översikt

Vad är ett objekt?

• Ett objekt – En beskrivning av beteende – Har ett väldefinierat gränssnitt som specificerar beteendet oberoende av implementationen. Andra objekt kan interagera med objektet via det givna gränssnittet.

– Implementationen beskriver hur objektet skall reagera – Ett objekt består av • privata delar, dolda och ej åtkomliga av andra objekt • publika delar, som är åtkomliga för andra objekt – Ett objekt

instansieras

från en klass myAccount = new Account(); yourAccount = new Account(); 34 previous next

Introduktion och översikt

Skicka meddelanden

• Meddelandesändning – Vi aktiverar ett objekt genom att skicka

meddelanden

till det 0 300 200 100 myAccount.balance(); yourAccount.balance(); Vissa meddelanden kan ha argument ; myAccount.deposit(300) yourAccount.deposit(500); x = 100; myAccount.withdraw(x ); yourAccount.deposit(x); myAccount.transfer(100, yourAccount); previous next 0 500 600 700 35

Introduktion och översikt

Sammansatta objekt och delegering

• Objektsammansättning – Objekt kan vara definierade mha andra objekt • en bil bil

består av

en kaross, en motor, en bensintank, dörrar etc – dessa objekt kan i sin tur bestå av andra objekt • en dörr består av ett handtag, ett fönster, ett lås, osv – Ett objekt som består av andra objekt kan

delegera

ansvar till dessa objekt • Bilen delegerar ”ansvaret” för dörrlåsningen till dörren som i sin tur delegerar detta till låset.

Vi kan enkelt byta lås (från tex mekaniskt till elektroniskt) utan att ändra varken bil eller dörr.

36 previous next

…delegereing..

• Ett PersonRegister delegerar till – ett Dictionary • Meddelandecentral delegerar till – ett Kommunikationsobjekt som delegerar till • ServerSocket och KlientSocket • En Person delegerar till – Namnobjekt och Adressobjekt • En FigurGrupp delegerar utritning till – Figurer rita FigurGrupp rita * Figur

Introduktion och översikt

37 previous next

Introduktion och översikt

…sammansatt objekt

• Ett annat exempel är en bild som består av linjer, rektanglar eller andra bilder linje bild bild bild bild rektangel rektangel linje rektangel 38 previous next

Introduktion och översikt

Vad är en klass?

• En klass är en beskrivning av en viss uppsättning av objekts attribut och beteende – attributen kallas för

instansvariabler

– beteendet beskrivs med hjälp av

metoder

instansvariabel med initialvärde operationer/ meddelanden

Account

balance = 0 deposit(amount) withdraw(amount) transfer(amount, anotherAccount) balance() return balance; balance = balance + amount; balance = balance – amount; metoder withdraw(amount); anotherAccount.deposit(amount); 39 previous next

Klasser ordnas i hierarkier

subklasserna

ärver från sina

superklasser

Vehicle

start() stop() move()

LandVehicle AirVehicle

takeOff() land()

Airplane Glider Car Train GolfCart

Introduktion och översikt

40 previous next

Introduktion och översikt

Metodbindning

• Metod söks först i mottagarens klass därefter i superklasser

Vehicle

start() stop() move() airplane = new Airplane(); airplane.start();

AirVehicle

takeOff() land() Hittas ingen metod i rotklassen så genereras ett felavbrott!

Airplane Glider

41 previous next