2203$' ' ) UHOlVQLQJ Objektorienterad Modellering Programmering och Analys

Relevanta dokument
OOMPA 2D1359 Föreläsning 2

Objektorienterad programmering

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

2D1359 & 2D1360. Informationsblad 1, 3 September Objektorienterad analys, modellering och design: principiella tillvägagångssätt,

Historik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga

Objektorienterad programmering

Laboration 2: Designmönster

Objektorienterad programmering. Grundläggande begrepp

Laboration 2: Designmönster

Föreläsning 15: Repetition DVGA02

Laboration 1: Figurer i hierarki

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

Imperativ programmering. Föreläsning 4

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Objektorientering. Grunderna i OO

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

OOMPA 2D1359 Föreläsning 8

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Föreläsning 5. När skall man använda implementationsarv? När skall man använda implementationsarv?

Extentamen i 2D1359 Objektorinterad modellering programmering och analys Tisdag den 13 oktober 1998 kl

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Objektorientering Användning

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Objektkonstruktion. Vilka sorter finns? Varför ärver vi? Aggregering ger en lösare koppling till delarna än komposition. 1nJUDÃJUXQGOlJJDQGHÃUHJOHU

Objektorienterad programmering

Objektorienterad programmering

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

729G06 Föreläsning 1 Objektorienterad programmering

Teoridel (svaren direkt på lydelsen)

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

Arv och klassbibliotek

Personal. Objektorienterad programmeringsmetodik 5DV133. Kursmål. Kursens uppläggning. Lärare. Handledare och gruppövningar.

UML 1(5) Introduktion till Unified Modeling Language. 1 Bakgrund och historik

Inkapsling (encapsulation)

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 1: Introduktion till kursen

OOMPA 2D1359 Föreläsning 3

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Objektorienterad analys och design

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Information. Computer

Kursplanering Objektorienterad programmering

Utvecklingsmetoder och processer. UML och OCTUPUS en kort introduktion

Introduktion och OO. Objekt-orienterad Programmering och Design (TDA552) Alex Gerdes, HT-2018

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Akronymer. CD5130 OOP, fk. Mjukvarumönster. Mjukvarumönster. Mjukvarumönster, forts. Mjukvarumönster, forts

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT15

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Principles of subclasses. Objekt-orienterad programmering och design Alex Gerdes, 2018

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Föreläsning 1: Introduktion till kursen

Lösningar till tentamen i EDAF25

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

Föreläsning 13 Innehåll

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

Objektorienterad programmering

Tentamen i Objektorienterad modellering och design

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

Laborationer, moment 4 5

Programmering för språkteknologer II, HT2011. Rum

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

Programmering = modellering

Objektorienterad Systemutveckling Period 3

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT14

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Konstruktion av klasser med klasser

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Distribuerade affärssystem

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT17

Introduktionsmöte Innehåll

Transkript:

2203$' ' ) UHOlVQLQJ Objektorienterad Modellering Programmering och Analys 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, bjorne@nada.kth.se Rum 1641, Osquars Backe 2, tel 7906277 previous next 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. previous next 2 1

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

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

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

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. previous next 9 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 previous next 10 5

språk... C++ Dansken Stroustrup C-syntax Inspirerad av Simula Eiffel Objective-C Lisp-dialekter CLOS Object-Pascal mfl previous next 11... språk Java Tidigt 90-tal med Gossling som drivande kraft Inbäddade system WEB klient/server säkerket Plattformsoberoende previous next 12 6

Mjukvarukonstruktion Vad är ett bra system? Nyttigt och användbart Pålitligt Flexibelt Överkomligt Tillgängligt previous next 13 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... previous next 14 7

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

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

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

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 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 previous next 22 11

UML Client Target request() Adaptee specificrequest() Adapter adaptee request() adaptee specificrequest() previous next 23 UML Client 1:m Adapter 2:m 4:r 3:r Adaptee previous next 24 12

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 previous next 25 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) previous next 26 13

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 previous next 27 Klasshierarkier och arv.odvvhurugqdv LKLHUDUNLHU Ellipse Window Person Circle Win95Window MacWindow Student (Q VXENODVVlUYHUIUnQVLQDVXSHUNODVVHU %ngh DWWULEXW RFK PHWRGHU Person name socsecno age() ismale() Student programme courses isreadywithallcourses() previous next 28 14

Metodbindning (WWPHGGHODQGH WLOO HWWREMHNW p = new Person(); p.age(); UHVXOWHUDU UHVXOWHUDU L L DWW DWW HQ HQ V NQLQJ V NQLQJ HIWHU HIWHU PHWRG PHWRG PHG PHG VDPPD VDPPD QDPQ QDPQ V NV V NV L L REMHNWHWV REMHNWHWV NODVV NODVV Person name socsecno age() ismale() Student programme courses isreadywithallcourses() RP RP PHWRGHQ PHWRGHQ LQWH LQWH KLWWDV KLWWDV L L NODVVHQ NODVVHQ IRUWVlWWHU IRUWVlWWHU V NQLQJHQ V NQLQJHQ L L VXSHUNODVVHQ VXSHUNODVVHQ p = new Student(); p.age(); previous next 29 Polymorfi och överskrivning 2OLNDNODVVHUNDQ KD PHWRGHU PHG VDPPDQDPQVNSRO\PRUIL Rectangle Ellipse Cartoon Button paint() paint() paint() paint() 6XENODVVHUNDQVNULYD YHU HQJRYHUULGH PHWRGHU LVXSHUNODVVHU paint() Ellipse Rectangle paint() MotorVehicle numberofwheels() paint() Circle Square paint() Car numberofwheels() Boat numberofwheels() previous next 30 15

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 "Definition" Vad är det byggt C++, Smalltalk, Java. Gränssnittsbyggare. Kodgenerator. med? Återanvändbara komponenter Hur arbetar det? Frågande snarare än berättande. Identifierande av enheter och sändande av meddelanden. Vad behandlar det? Abstraktioner som modellerar ett problem. Hur är det Moduler. Grundenheterna enkla att integrera. Generella beskrivningar strukturerat? av klasser av ting. Generalisering och specialisering, inkapsling, Vad mer kan man göra med det? 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 previous next 31... 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. previous next 32 16

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

Skicka meddelanden Meddelandesändning Vi aktiverar ett objekt genom att skicka meddelanden till det 0 myaccount.balance(); youraccount.balance(); 0 9LVVD PHGGHODQGHQ NDQ KD DUJXPHQW 300 myaccount.deposit(300); youraccount.deposit(500); 500 300 x = 100; 200 myaccount.withdraw(x); youraccount.deposit(x); 600 200 500 100 myaccount.transfer(100, youraccount); 700 100 700 previous next 35 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. previous next 36 18

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 previous next 37 sammansatt objekt Ett annat exempel är en bild som består av linjer, rektanglar eller andra bilder bild bild bild linje bild rektangel rektangel linje rektangel previous next 38 19

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 balance = 0 Account balance = balance + amount; metoder operationer/ meddelanden deposit(amount) withdraw(amount) transfer(amount, anotheraccount) balance() return balance; balance = balance amount; withdraw(amount); anotheraccount.deposit(amount); previous next 39 Klasser ordnas i hierarkier subklasserna ärver från sina superklasser superklass subklass Vehicle start() stop() move() superklass superklass LandVehicle subklass AirVehicle takeoff() land() superklass Car Train GolfCart Airplane Glider previous next 40 20

Metodbindning Metod söks först i mottagarens klass därefter i superklasser airplane = new Airplane(); Hittas ingen metod i rotklassen så genereras ett felavbrott! airplane.start(); 1: sök i klassen superklass 3: fortsätt i superklassens 2: sök i superklassen Vehicle start() stop() move() Airplane AirVehicle takeoff() land() Glider previous next 41 21