Objektorienterad Modellering Programmering och Analys

Slides:



Advertisements
Liknande presentationer
Att identifiera och utveckla ledare
Advertisements

Utveckla en applikation Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Objektorienterad Modellering Programmering och Analys
Föreläsning 7, Kapitel 7 Designa klasser Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
1 Tillämpning av Koden Innehåll •Undersökningens metod och uppläggning, inkl. bolagsurval •Sammanfattning •Genomgång av svar på fokusfrågor.
1 Medarbetarenkät 2011 • 573 svar. 2 Kön 3 Jag är knuten till en klass, undervisningsgrupp eller barngrupp.
Objektorienterad Modellering Programmering och Analys
BENÄMNA lätta ord SPRÅKTRÄNING VID AFASIKg VIII
Klasser och objekt.
Next previous XP: varför fungerar det? Något om tentan. Innehåll Introduktion till eXtreme Programming (XP) Varför fungerar XP? Något om tentan Vad ska.
Tillämpning av bolagsstyrningskoden vid årsstämmor 2005 och 2006.
Leif Håkansson’s Square Dancer Rotation
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Klassarv och inkapsling
Next previous Refactoring och lite mönster kodade i Java Innehåll Vad är refactoring? Ett större refactoringexempel Några mönster kodade i Java OOMPA 2000.
Eddie Arnold - Make The World Go Away Images colorées de par le monde Déroulement automatique ou manuel à votre choix 1 för dig.
Föreläsning 1.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
IT och kommunikationsvetenskap Teresa Cerratto Pargman, DSV
Inkapsling.
Objektorienterad tänkande
Svenska WebDewey Introduktion
Karolinska Institutet, studentundersökning Studentundersökning på Karolinska Institutet HT 2013.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
Modellering med UML
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
V E R S I O N N R 2. 0 T A V E L I D É E R I M I L J Ö.
Bastugatan 2. Box S Stockholm. Blad 1 Läsarundersökning Maskinentreprenören 2007.
Programmering B PHP Lektion 2
Föreläsning 11 Arrayer.
Svenska WebDewey Introduktion Harriet Aagaard Svenska Deweyredaktion
Objektorienterad programmering i Java
1 Funktioner Nr 3 Funktionstyper, högre ordningens funktioner och polymorfism.
Enkätresultat för Grundskolan Elever 2014 Skola:Hällby skola.
Programmering B PHP Lektion 3
1 Vänsterskolan Debattartiklar. 2 Aktuell krok 3 Aktuella krokar 1. Direkt krok.
Polymorfism.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
Arv.
TÄNK PÅ ETT HELTAL MELLAN 1-50
Greppa Näringen Medlemsundersökning, kvartal 1. 1.
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
Kouzlo starých časů… Letadla Pár foteček pro vzpomínku na dávné doby, tak hezké snění… M.K. 1 I Norrköping får man inte.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.
OOPJ I, 5p Objektorienterad Programmering i Java.
1 Föreläsning 7 Repetition Instansvariabler och klassvariabler Klassmetoder och Instansmetoder.
Objektorientering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Enkätresultat för Grundskolan Föräldrar 2014 Skola - Gillberga skola.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
OpCon/xps - A case study. Club2200Page 1 OpCon/xps – A case study Club2200 Magnus Nyman & Hans Forslind.
1 Logging and monitoring of TCP traffic in SSH tunnels Masters thesis Anton Persson.
Utvecklingsmetoder och processer. UML och OCTUPUS en kort introduktion
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Introduktion till klasser, objekt och BlueJ Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Föreläsning 1. Innehåll Introduktion till objektorientering –OOP (objektorienterad programmering) –Objekt, instanser, klasser C++ –OO i C++ –Standardbibliotek.
Presentation of I. Name: Disputerat nu vår Forskningsintresset är:
Föreläsning 4 Klasser Och Objekt.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Förskoleenkät Föräldrar 2012 Förskoleenkät – Föräldrar Enhet:Hattmakarns förskola.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Bild 1 Prognos för länets arbetsmarknad Stefan Tjb.
Grundskola Elever 2013 Grundskoleenkät - Elever Enhet: Gillberga skola.
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
OOP - teori1 OOP del II– Föreläsning 5 vecka 6. OOP - teori2 Klasser Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle.
OOP&M - teori1 OOP del II– Föreläsning 2 vecka 46 Konstruktorer Instansmetoder Kapitel 14 i kursboken.
Föreläsning om RUP RUP – Rational Unified Process
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
Presentationens avskrift:

Objektorienterad Modellering Programmering och Analys 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, bjorne@nada.kth.se Rum 1641, Osquars Backe 2, tel 7906277

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.

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.

... 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.

Kursens uppläggning ... Föreläsningar Seminarier 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)

... Kursens uppläggning ... Laborationer Tentamen 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.

Seminarier Sem 1, Figurer i hierarki Sem 2, CRC-kort Sem 3, UML ... 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.

Laborationer Lab 1, Figurer i hierarki Lab 2, Designmönster ... 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

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.

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

… språk ... C++ Eiffel Objective-C Lisp-dialekter Object-Pascal mfl Dansken Stroustrup C-syntax Inspirerad av Simula Eiffel Objective-C Lisp-dialekter CLOS Object-Pascal mfl

... språk Java Tidigt 90-tal med Gossling som drivande kraft Inbäddade system WEB klient/server säkerket Plattformsoberoende

Mjukvarukonstruktion Vad är ett bra system? Nyttigt och användbart Pålitligt Flexibelt Överkomligt Tillgängligt

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 ...

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

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

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

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

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

Bygga (stora) system Process Faser Iteration Olika detaljnivå 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

OO Historik Metoder ... Problem Flera metoder utvecklades på 80-talet 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 ...

… 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

… UML …

… UML

Objektorientering Ett sätt att se världen Meddelanden och metoder 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

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)

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) mottagare meddelande argument

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

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

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 MotorVehicle numberOfWheels() Car Boat Ellipse paint() Circle Rectangle paint() Square

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

... Objektorienterat språk Objektorienterad användargränssnitt 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.

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

Vad är ett objekt? Ett objekt En beskrivning av beteende metod 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 metod Inkapsling Klass instans myAccount = new Account(); yourAccount = new Account();

Skicka meddelanden Meddelandesändning Vi aktiverar ett objekt genom att skicka meddelanden till det myAccount.balance(); yourAccount.balance(); Vissa meddelanden kan ha argument yourAccount.deposit(500); myAccount.deposit(300); 300 500 x = 100; myAccount.withdraw(x); yourAccount.deposit(x); 200 600 myAccount.transfer(100, yourAccount); 100 700

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.

…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 *

…sammansatt objekt Ett annat exempel är en bild som består av linjer, rektanglar eller andra bilder bild linje rektangel

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

Klasser ordnas i hierarkier subklasserna ärver från sina superklasser superklass superklass subklass superklass superklass subklass

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