Presentation laddar. Vänta.

Presentation laddar. Vänta.

Next previous Objektorienterad Modellering Programmering och Analys Introduktion och översikt Hemsida: Registrering:

Liknande presentationer


En presentation över ämnet: "Next previous Objektorienterad Modellering Programmering och Analys Introduktion och översikt Hemsida: Registrering:"— Presentationens avskrift:

1 next previous Objektorienterad Modellering Programmering och Analys Introduktion och översikt Hemsida: Registrering: res checkin oompa00 Hemkatalog: /info/oompa00 Kursmöte Newsmöte: news:nada.kurser.oompa Kursledare Björn Eiderbäck, Rum 1641, Osquars Backe 2, tel OOMPA 2D1359 & 2D1360 Föreläsning 1

2 previous next 2 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.

3 previous next 3 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.

4 previous next 4 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.

5 previous next 5 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)

6 previous next 6 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.

7 previous next 7 Introduktion och översikt •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.... Kursens uppläggning...

8 previous next 8 Introduktion och översikt •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... Kursens uppläggning...

9 previous next 9 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 •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 X. •Information och tutorials om Java finns också på nätet, se kursens hemsida för adresser.

10 previous next 10 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

11 previous next 11 Introduktion och översikt … språk... •C++ –Dansken Stroustrup –C-syntax –Inspirerad av Simula •Eiffel •Objective-C •Lisp-dialekter –CLOS •Object-Pascal •mfl

12 previous next 12 Introduktion och översikt... språk •Java –Tidigt 90-tal med Gossling som drivande kraft –Inbäddade system –WEB •klient/server •säkerket –Plattformsoberoende

13 previous next 13 Introduktion och översikt Mjukvarukonstruktion •Vad är ett bra system? Pålitligt Nyttigt och användbart Flexibelt Överkomligt Tillgängligt

14 previous next 14 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 –Denvers godshanteringssystem överskred budget med 50% –Londons ambulanssystem –Therac-25 –Hotmail –...

15 previous next 15 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

16 previous next 16 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

17 previous next 17 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

18 previous next 18 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

19 previous next 19 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

20 previous next 20 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

21 previous next 21 Introduktion och översikt 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 –...

22 previous next 22 Introduktion och översikt … 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

23 previous next 23 Introduktion och översikt … UML …

24 previous next 24 Introduktion och översikt … UML

25 previous next 25 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

26 previous next 26 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 •Exempel-3 –Klassen Punkt –Kan bla ha instanserna (10, 20), (13, 47), (200, -10)

27 previous next 27 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); mottagare meddelande argument

28 previous next 28 Introduktion och översikt Klasshierarkier och arv Ellipse Circle Klasser ordnas i hierarkier En subklass ärver från sina superklasser Både attribut och metoder Window Win95Window MacWindow Person Student programme courses isReadyWithAllCourses() Person name socSecNo age() isMale()

29 previous next 29 Introduktion och översikt Metodbindning om metoden inte hittas i klassen fortsätter sökningen i superklassen om metoden inte hittas i klassen fortsätter sökningen i superklassen Ett meddelande till ett objekt Student programme courses isReadyWithAllCourses() Person name socSecNo age() isMale() resulterar i att en sökning efter metod med samma namn söks i objektets klass resulterar i att en sökning efter metod med samma namn söks i objektets klass p = new Person(); p.age(); p = new Student(); p.age();

30 previous next 30 Introduktion och översikt Polymorfi och överskrivning Olika klasser kan ha metoder med samma namn, s.k. polymorfi Subklasser kan skriva över (eng. override) metoder i superklasser Rectangle paint() Ellipse paint() Button paint() Cartoon paint() Ellipse paint() Circle paint() Rectangle paint() Square paint() MotorVehicle numberOfWheels() Car numberOfWheels() Boat numberOfWheels()

31 previous next 31 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

32 previous next 32 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.

33 previous next 33 Introduktion och översikt Varför objektorientering? •Separerar gränssnitt från implementation •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

34 previous next 34 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();

35 previous next 35 Introduktion och översikt Skicka meddelanden •Meddelandesändning –Vi aktiverar ett objekt genom att skicka meddelanden till det myAccount.balance(); yourAccount.balance(); x = 100; myAccount.withdraw(x ); yourAccount.deposit(x); yourAccount.deposit(500); myAccount.deposit(300) ; myAccount.transfer(100, yourAccount); Vissa meddelanden kan ha argument

36 previous next 36 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.

37 previous next 37 Introduktion och översikt …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 FigurGrupp Figur rita *

38 previous next 38 Introduktion och översikt …sammansatt objekt •Ett annat exempel är en bild som består av linjer, rektanglar eller andra bilder bild linjebildrektangel bild rektangel linje

39 previous next 39 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

40 previous next 40 Introduktion och översikt Klasser ordnas i hierarkier superklass subklass superklass subklass superklass subklasserna ärver från sina superklasser

41 previous next 41 Introduktion och översikt Metodbindning •Metod söks först i mottagarens klass därefter i superklasser airplane = new Airplane(); airplane.start(); 1: sök i klassen 2: sök i superklassen 3: fortsätt i superklassens superklass Hittas ingen metod i rotklassen så genereras ett felavbrott!


Ladda ner ppt "Next previous Objektorienterad Modellering Programmering och Analys Introduktion och översikt Hemsida: Registrering:"

Liknande presentationer


Google-annonser