Introduktion til OO* og UML

Relaterede dokumenter
UML til kravspecificering

Software Dokumentation

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

UML-Light (Note: UML-Light T133, ver. 2004) Finn Overgaard Hansen, IHA

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

SOFTWARE DOKUMENTATION

Software Design (SWD) Spørgsmål 1

Software Design (SWD) Spørgsmål 1

Specialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Hvem er vi? Kursus Introduktion. Kursuslærerne. Agenda for i dag

Software Construction 1 semester (SWC) Spørgsmål 1

Objektorienteret Programmering

Eksempel: et ordresystem note 5 Lagdeling s. 1

educasoft - en professionel samarbejdspartner med speciale i uddannelse!

A Profile for Safety Critical Java

2a. Conceptual Modeling Methods

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

Computer Networks Specielt om Infrastrukturer og Teknologi

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

Løsningsforslag til Camp Let. Case Beskrivelse: Camp Let

Datatekniker med programmering som speciale

Model og Metode til Programudvikling. Jens Dalsgaard Nielsen

Grundlæggende OOA - OOD

Hvad er et distribueret objekt? Plan Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation

IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1

Software Design (SWD) Spørgsmål 1

RMI med BlueJ. Tutorial lavet af Jákup W. Hansen TSU semester 11. desember 2007

Spar tid med struktureret programmering! Om PLC programmering

DANMARKS TEKNISKE UNIVERSITET

PID2000 Archive Service

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002

Fart på SAP HANA. Sådan laver du analyser direkte på dine data i realtid. Copyright 2012 FUJITSU. Fujitsu IT Future, København, den 16.

Noter til dm529. Jonas Nyrup. 11. november 2011

Projekt E1PRJ1 Emne: Strukturering Softdrink-Automat Gruppe: 6 Dato: 20. marts 2006 Medlemmer: Benjamin Sørensen, Jacob Nielsen, Klaus Eriksen,

Struktureret system udvikling Minimodul 2: UML og use cases

Struktureret system udvikling Minimodul 1: Introduktion, UML og use cases

Introduktion til ActionScript, fortsat

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16,

Version Dato Beskrivelse /11/2012 Initial version /03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.

SWC eksamens-spørgsmål. Oversigt

Begreber og principper Arkitekturframeworket PCMEF. Det er softwarearkitekturen der gør den store forskel mht.

Indholdsfortegnelse for kapitel 3

Visual Studio Team System. Team Build en grundpille i søgen efter it-projektproduktivitet?

Kursuskatalog 2012 TwinCAT Basic og Extended

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Educasoft 2010 Side 1. Søgemaskineoptimering

Hvad er Objekter - Programmering

Fra Assembler, Basic, Comal, Pascal, C til Object Orienteret software udvikling

STS Designdokument. STS Designdokument

POST IT! Cph Business Academy Multimediedesign 2. Semester flow april Kirstine Marie Rasmussen cph-

DM507 Algoritmer og datastrukturer

Software Design (SWD) Spørgsmål 1

Lektion 2. Grundlæggende programmering i VR

Forelæsning Uge 3 Mandag

Sporbarhed og Rapportering i Quality Center. Kim Stenbo Nielsen NNIT Application Management Services

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

1 Domæne Design valg User Klassediagran 5

Nintex Workflow UK/DK

Specialeforsvar: Fundamentet for et fleksibelt container bibliotek

Plan for præsentationen

Kursuskatalog 2019 TwinCAT 3

Objekt-orienteret programmering uden klasser: Self.

Transkript:

Introduktion til OO* og UML Struktureret Systemudvikling Jan Bendtsen Automation and Control

Indhold Hvad er OO*? UML Essensen af objekt-orienteret analyse og design: klassebegrebet Relationer mellem objekter UML og design

Forventninger I kender til C I ved hvad kompilere, fortolkere, osv. I har erfaring med udviklingsværktøjer I ved ikke noget om OO*, Java eller C++ Målsætningen er ikke at gøre Jer til eksperter i objekt-orienteret programmering, men at give Jer indsigt i OO metoder: I skal kende til basale OO koncepter og deres UMLrepræsentationer I skal kunne skrive simple OO programmer

Hvad er OO*? OO* : Object-Orienteret Analyse, Design og/eller Programming Et forsøg på at repræsentere virkelige ting på en form, som kan overføres på enkel vis til computer-sprog Imperativ programmering er ofte for stift til at understøtte systemer af større skala OO* understøtter god programmerings praksis: modularitet, kode-genbrug and abstraktion The basis for Design Patterns

Hvad er OO*? Objekt-orienteret analyse

Hvad er OO*? Objekt-orienteret design

Hvad er OO*? Objekt-orienteret programmering

Hvorfor OO*? Fortolkning af data data forstås i sammenhæng med et givet objekt og har derfor en vis betydning i en given kontekst. For eksempel kan variablen int numpoints = 6; repræsentere forskellige ting afhængig af om den bruges til at tegne polygoner på en skærm at angive point-tildeling i et spil noget helt tredie...

Hvorfor OO*? Grafik: Polygon #1 har 8 hjørnepunkter; polygon #2 har 4 hjørnepunkter etc. Spline interpolation: for (i = 0; i < numpoints; i++) { // Calculate interpolation }

Hvorfor OO*? Fortolkning af data vi ønsker at sammenkæde data og operationer Forskellige operationer giver mening for forskellige ting! På C-sprog: Et objekt minder om en struct med tilknyttede funktioner. For eksempel kan funktionskaldet compute(shape) have een betydning for en kubisk spline interpolation med numpoints = 6 og en helt anden for beregning af arealet af en polygon med numpoints = 6.

Hvorfor OO*? Indkapsling af data Skjul information, som udenforstående ikke behøver at kende til Nedarvning Nogle ting er fælles, andre ikke; genbrug så vidt muligt de fælles ting Polymorphisme evnen til at udføre de samme operationer på forskellige ting; f.eks. kan trekanter, rektangler, blokdiagrammer og bogstaver alle tegnes, fordi de alle er geometriske figurer Udveksling af information objekter kan kommunikere med hinanden ligesom i den virkelige verden

Eksempler på klasser Navn: MagLev tog Attributter: magnetfeltsstyrke, højde over spor, masse, køreplan Operationer: powerup(), setspeed(kmph), getspeed(), start(), accelerate(), brake(), stop(); Skjult information: køretid, maxhastighed, sikkerhedsprocedurer, strømforbrug, etc.

Eksempler på klasser Navn: Spildevandspumpe Attributter: rotationshastighed, løftehøjde, dynamik Operationer: reset(), setspeed(rotpermin), getspeed(), start(), stop(); Skjult information: antal drifttimer, max flow, max strøm, etc.

Eksempler på klasser Navn: Aktivt båndpasfilter Attributter: frekvenskarakteristik, fasekarakteristik Operationer: reset(), filter(samplesequenc), start(), stop(); Skjult information: nyquistfrekvens, mætning, etc.

Overordnet fremgangsmåde Forstå/definer systemets omgivelser og dets anvendelse (rigt billede, use cases) Design systemets overordnede arkitektur Identificer de vigtigste objekter i systemet (klassediagrammer) Opstil design-modeller Definer interfaces mellem objekter

Rigt Billede

UML Unified Modeling Language er en formalisme til at beskrive OO design med UML definerer model-notation, ikke en design-metodik UML er dagens standard de fleste OO* værktøjer bruger det UML kan bruges til at dokumentere design UML hjælper udviklerne til at kommunikere indbyrdes

UML diagramtyper Use Case-diagrammer Klassediagrammer Interaktions-diagrammer Tilstandsdiagrammer Aktivitetsdiagrammer Pakke-diagrammer Deployment-diagrammer Actors Usage, involvement Classes Association, inheritance, aggregation Objects Messages, lifelines States Transitions, behaviors Activities Guards, synchronization Packages Software dependencies Processors and Nodes Component dependency

Diagramtyper Work-flows Use Use Case-diag. Scenarier Aktivitetsdiag. Interaktionsdiag. Kommunikation mellem klasser Struktur Pakke Pakke -- og og Deployment- diag. diag. Structures Klassediagrammer Interaktion mlm. objekter Opførsel i individuelle klasser Tilstandsdiagrammer

Use Case-diagrammer Use cases beskriver hvorledes systemet skal reagere på stimuli fra brugere Use cases aktiveres/kommunikerer med aktører Eksempler på aktører: (menneskelige) brugere andre computere ressourcer (f.eks. log-filer, datakilder osv.) Use case-diagrammer bruges til at afgrænse systemet Hver use case skal have en tilhørende use case description

Eksempel på Use Case-beskrivelse View Telemetry data: En bruger angiver en mængde data (måledata, intern satellit-data, alarmer, etc.) han/hun ønsker at gennemse fra en liste. Derefter specificerer brugeren en start- og sluttid. Systemet henter det specificerede data fra persistent lager og præsenterer det via GUI. Hvis start- eller sluttid ikke specificeres af brugeren, anvendes default-værdier.

Eksempel på Use Case-diagram

Objekter Objekter er individuelle ting som kan have en tilstand, og som man kan gøre noget ved

Klasser Klasser er definitioner af grupper af objekter med de samme attributter og operationer Det nærmeste vi kommer det i C er typedef struct { int numpoints; point[] points; } polygon; De enkelte objekter kaldes også instancer af en given klasse; de kan oprettes og senere nedlægges

Klasser Employee + name: String + address: String + dateofbirth: Date - salary: integer - status: {current,...} - taxcode: integer + Employee() + join() + leave() + retire() + changedetails() + getname() - computesalary() - payemployeetax() Klassenavn Offentlige attributter Private attributter Constructor Offentlige metoder Private metoder

Klasser Employee + name: String + address: String + dateofbirth: Date - salary: integer - status: {current,...} - taxcode: integer + Employee() + join() + leave() + retire() + changedetails() + getname() - computesalary() - payemployeetax() Klassenavn Constructor Objekter instantieres (oprettes) ved kald til klassens Constructor Flere objekter af den samme klasse kan eksistere samtidig

Attributter Employee + name: String + address: String + dateofbirth: Date - salary: integer - status: {current,...} - taxcode: integer + Employee() + join() + leave() + retire() + changedetails() + getname() - computesalary() - payemployeetax() Navn og type angives i klassebeskrivelsen Attributter udtrykker det enkelte objekts tilstand De kan opfattes som variable i objektet Kaldes også sommetider felter

Metoder Employee + name: String + address: String + dateofbirth: Date - salary: integer - status: {current,...} - taxcode: integer + Employee() + join() + leave() + retire() + changedetails() + getname() - computesalary() - payemployeetax() Metoder bruges til at interagere med et objekt Et metodekald påvirker kun det angivne objekt Offentlige metoder

Eksempler på metodekald For eksempel (Java syntax): // Call a method associated with a // buffer object that returns the // next value in the buffer v = circularbuffer.get () ; // Call the method associated with a // thermostat object that sets the // temperature to be maintained thermostat.settemp (20) ;

Relationer mellem Klasser Office Aggregering A indeholder B 2 2 Employee

Relationer mellem Klasser Association A kender B Manager 00...... 22 Employee

Relationer mellem Klasser Employee Nedarvning (a.k.a generalisering) A er en B Manager - budgetscontrolled managebudgets()

Klassediagram eksempel fra designværktøj

Fra Use Case-beskrivelsen... View Telemetry data: En bruger angiver en mængde data (måledata, intern satellit-data, alarmer, etc.) han/hun ønsker at gennemse fra en liste. Derefter specificerer brugeren en start- og sluttid. Systemet henter det specificerede data fra persistent lager og præsenterer det via GUI. Hvis start- eller sluttid ikke specificeres af brugeren, anvendes default-værdier. Navneord i Use Case-beskrivelsen er kandidater til klasser!

TelemetryDataList Klassediagram

Interaktionsdiagrammer Når klasserne er på plads, er det tid at se på interaktion mellem objekter Interaktionsdiagrammer demonstrerer hvordan objekter samarbejder, herunder i hvilken rækkefølge de påvirker hinanden De kan også vise, hvornår objekter bliver oprettet eller nedlagt Sekvensdiagrammer og Collaboration-diagrammer (viser stort set samme information)

Eksempel på Sekvensdiagram

Tilstandsdiagrammer Viser den tilstand (state) et objekt er i, og hvilke tilstande det potentielt kan komme i Svarer nogenlunde til gode gammeldaws flowcharts: Begyndelsestilstand Gør noget Når noget er opfyldt skiftes til en ny tilstand etc.

Eksempel på tilstandsdiagram Initializing do/initialize variables Initialization done Processing Telemetry Request do/create list and telemetry data objects User request Waiting User commits choice Reading File do/create and start file reader object Reading done Showing Data do/pass data to GUI

Symboler i Tilstands- og Aktivitetsdiagrammer States ovaler der viser tilstande Transitions pile der viser mulige skift fra en tilstand til en anden (eller til den samme) Events tekst knyttet til transitionerne som viser en udefrakommende hændelse der får transitionen til at ske Conditions et sand/falsk udtryk i [ ] som angiver om en given hændelse kan indtræffe (aka. Guards) plus forskellige andre, sjældnere symboler...

Aktivitetsdiagrammer Aktivitetsdiagrammer beskriver workflow for hele systemet Ligner tilstandsdiagrammer, men er ikke begrænset til enkelte objekter Viser flow af aktiviter i og omkring systemet, i særdeleshed parallelle aktiviteter: Forks indikerer når flere forskellige aktiviteter sker på samme tid Merges indikerer når aktiviteter ikke længere foregår parallelt

Eksempel på aktivitetsdiagram User request received Handle request to view current location Check user authorization [user not authorized] [user authorized] DB Com established Obtain global data Sat Com established Obtain current data from satellite User feedback Aggregate data

Deployment-diagrammer Deployment-diagrammer viser Intelligente enheder i systemet Kommunikation mellem subsystemer Software-komponenter på de enkelte enheder Bruges normalt kun i distribuerede systemer (f.eks. clientserver-arkiitekturer) for at sikre at de enkelte programmer kommer til at køre på de bedst egnede maskiner

Eksempel på deployment-diagram Master Station UserInterface DataMgr Client PC NetworkMgr Browser Database Server DBServer Satellite Ground Station SatCom module

OO Design Requirement specification

OO Design Use case Diagrammer (basal systemopførsel) Indledende design

OO Design Klassediagrammer (Objektstrucktur, interface-spec.) Detaljeret design

OO Design Interaktionsdiagrammer (kommunikation mellem objekter) Object Object Object Detaljeret design

OO Design Aktivitetsdiagrammer (Workflow) Detaljeret design

OO Design Tilstansdiagrammer (objekters opførsel) State 1 State 2 State 4 State 3 Detaljeret design

OO Design Implementation, test & debugging /** * TelemetryDataList **/ import java.util.arraylist; package org.studentsat.telemetry; public class TelemetryDataList extends ArrayList implements Serializable { private Coordinate3D coordinates; private Coordinate3D velocity; private Quaternion attitude; public String[ ] getnames() { return coordinates.getaxisnames(); } private void compute(int numcoords) { Implementation

OO Design Deployment-diagrammer Telemetry server Database Server Browser User PC Udrulning Deployment