Mer om objektorientering og UML

Like dokumenter
Mer om objektorientering og UML

Mer$om$objektorientering$og$UML

IN2000:&Kravhåndtering,&modellering,&design

IN2001: Kravhåndtering, modellering, design

UML- Use case drevet analyse og design. Domenemodeller Sekvensdiagrammer Use case realisering med GRASP patterns Klassediagram - designmodeller

Use case drevet design med UML

UML-Unified Modeling Language. Prosess-oversikt. Use case realisering

UML-Unified Modeling Language

Use case drevet design med UML. I dag

Objektorientering og UML. INF1050: Gjennomgang, uke 06

UKE 11 UML modellering og use case. Gruppetime INF1055

Spesifikasjon av Lag emne

GJENNOMGANG UKESOPPGAVER 6 MER OM OBJEKTORIENTERING OG UML

Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

UKE 13 Mer UML modellering. Gruppetime INF1055 Julie Hagen Nilsen & Maria Stolinski

Fra krav til objekter. INF1050: Gjennomgang, uke 05

Spesifikasjon av Lag emne. Kursregistrering bruksmønstermodell. Dagens forelesning. Fra krav til objekter

I dag UML. Domenemodell visualisering av konsepter. Eksempel. Hvordan finne domeneklasser?

Modellering av krav. INF1050: Systemutvikling 07. februar Førstelektor Yngve Lindsjørn

Modellering av krav. INF1050: Systemutvikling 11. februar Universitetslektor Yngve Lindsjørn

UML 1. Use case drevet analyse og design Kirsten Ribu

Spesifikasjon av Lag emne. Kursregistrering g bruksmønstermodell. Dagens forelesning. Fra krav til objekter

GJENNOMGANG UKESOPPGAVER 4 USE CASE MODELLERING HELGA NYRUD & KRISTIN BRÆNDEN

Use Case-modellering. INF1050: Gjennomgang, uke 04

Design Patterns - mønstre

Spesifikasjon av Lag emne. Kursregistrering bruksmønstermodell (ny versjon) Dagens forelesning. Fra krav til objektdesign

Fra krav til objektdesign

God objektorientert design Flere UML diagrammer UML Distilled kap. 7,8, 9 Using UML, kap. 11, 12, 14 Kirsten Ribu

GJENNOMGANG UKESOPPGAVER 7 REPETISJON

Hensikten med denne delen av kurset. Objektets egenskaper. Objektorientering hva er det? Best practises ved programvareutvikling. Kravspesifikasjonen

Design Patterns - mønstre. Kirsten Ribu

Objektorientert design av kode. Refaktorering.

UNIVERSITETET I OSLO

Metode for ansvarsdrevet OO. Dagens forelesning. Delegering av ansvar i en trelagsarkitektur

Forside. Eksamen i IN1030 for Våren Ingen hjelpemidler tillatt.

Metode for ansvarsdrevet OO med UML. Dagens forelesning. Hovedflyt for Meld på kurs. Delegering av ansvar i en trelagsarkitektur

Beskjed fra Skagestein

Fra krav til modellering av objekter

Use case modellen. Use case modellering i analysefasen. Hva er en Aktør? Hva er et Use case?

Ulike typer prosessmodeller. Systemutvikling. Utviklingsmodeller. Prosessmodell - faser

UNIVERSITETET I OSLO

IN& &april&2019. Modellering*av*krav. Yngve&Lindsjørn. IN1030&'>Systemutvikling'>&Modellering&av&krav 1

Objektorientert design av kode. Refaktorering.

Universitetet i Oslo Institutt for informatikk. Eskild Busch. UML hefte

NB! Endring i undervisningsplanen

Kravspesifikasjon med UML use case modellering. Erik Arisholm

Use case modellen. Use case modellering i analysefasen. Hva er en Aktør? Hva er et Use case? Use case modellering. Eksempel

Gruppenavn. Prosjektnavn Beskrivelse av design For Navn på systemet. Versjon <1.0>

Inf1055 Modul B 26 april 2017:

UML klassediagrammer

o UML klassediagrammer

Oppsummering av hovedområdene i kurset LO 135A Kirsten Ribu

Dagens forelesning. o Litt mer om design med UML sekvensdiagrammer. Sentralisert og delegert kontrollstil

Oppgave 1: Multiple choice (20 %)

Metode for ansvarsdrevet OO med UML. Dagens forelesning. Hovedflyt for Meld på kurs. Delegering g av ansvar i en trelagsarkitektur

Hva gjøres i design? 19. september 2002, Tore Berg Hansen, TISIP

Eksamen 2013 Løsningsforslag

Obligatorisk oppgave 5: Modellering av krav

Metode for ansvarsdrevet OO. Dagens forelesning. Delegering av ansvar i en trelagsarkitektur

Eksamen INF

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

Forfattere: Daníelsdóttir, Drífa Meland, Maiken Mijalkovic, Biljana Svendsen, Simen H. Gruppelærer: Zarei, Amir Hossein. 5.

Løsningsforslag til Case. (Analysen)

Læringsmål for forelesningen

System Dokumentasjon. Team2. Høgskolen i Sørøst-Norge Fakultet for teknologi, naturvitenskap og maritime fag Institutt for elektro, IT og kybernetikk

Etter uke 9 skal du. Introduksjon til objektorientert programmering. Innhold. Klasser som abstraksjoner

Forside Eksamen INF1055 V17

Innholdsfortegnelse INNHOLDSFORTEGNELSE... 2 REVISJONSOVERSIKT...4 INTRODUKSJON MED FORUTSETNINGER... 5

Kravspesifikasjon med. UML diagrammer. systemutvikling. Dokumentasjon av systemets krav, arkitektur, design og implementasjon

Kap3: Klassemodellering

Tom Røise IMT2243 : Systemutvikling 1. IMT2243 Systemutvikling 26. februar Klassediagrammet. Klasse

Kravspesifikasjon med. Erik Arisholm

INF 5120 Modellering med objekter

Prøveeksamen INF1050: Gjennomgang, uke 15

Unified Modeling Language (UML) Kravspesifikasjon med UML use case modellering. UML diagrammer. Notasjon som støtter opp under modellbasert

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

Team2 Requirements & Design Document Værsystem

Metode for ansvarsdrevet OO. Dagens forelesning. Delegering av ansvar i en trelagsarkitektur

Hvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon. Læringsmål uke 7. Undervisning og pensum IN1000

Requirements & Design Document

Hvorfor objektorientert programmering?

Produktrapport Gruppe 9

Utvikling fra skallet og inn

Hensikten med denne delen av kurset. Objektorientering hva er det? Objektets egenskaper. Best practises ved programvareutvikling

Dagens forelesning. o Litt mer om design med UML sekvensdiagrammer. Sentralisert og delegert kontrollstil

Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl

Læringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

INF Modellering med objekter (Oblig 2) **TimeregistreringSystem** (Designet av Alen Cemer

INF Oblig 2. Hour Registration System (HRS)

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

Conference Centre Portal (CCP)

Forelesning IMT Mars 2011

Hva gjøres i analysen? 2. oktober 2001, Tore Berg Hansen, TISIP

INF1010 MVC i tekstbaserte programmer

Oblig4 - forklaringer. Arne og Ole Christian

Krav analyse og objektorientert

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

UNIVERSITETET I OSLO

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Transkript:

INF1050: Systemutvikling 21. februar 2017 Mer om objektorientering og UML Universitetslektor Yngve Lindsjørn INF1050 > Systemutvikling->objektorientert modellering 1

Temaer i dagens forelesning Ø Objektorientert design v Objektdesign og ansvarstilordning v Bruk av UML Fokus på klassediagrammer Ø Designmodeller Ø Designmønstre ( Design Patterns ) Ø Eksempler på diagrammer Ø Eksempel på kode (pseudo kode) fra sekvensdiagram INF1050 > Systemutvikling->objektorientert modellering 2

Klassediagram Person tar kurs Mange-til-mange assosiasjon(relasjon): En person kan ta mange kurs (0..* betyr fra 0 til mange), og et kurs kan ha mange personer (fra 0 til mange) INF1050 > Systemutvikling->objektorientert modellering 3

Klassediagram - Student tar kurs - Generalisering Alle attributter og metoder i person blir arvet i Student INF1050 > Systemutvikling->objektorientert modellering 4

Klassediagram - Student tar kurs med foreleser(e) Alle attributter og metoder i Person blir arvet i Student og Foreleser INF1050 > Systemutvikling->objektorientert modellering 5

Klassediagram - Kurs inngår i Emne Emne er for eksempel Inf1050 og Kurs er for eksempel INF1050V2015 INF1050 > Systemutvikling->objektorientert modellering 6

Student tar kurs med obligatoriske oppgaver Alle kurs har minst en obligatorisk oppgave. Merk at her er oblig knyttet til kurs og ikke emne slik at oblig vil kunnne endres neste gang kurset går. INF1050 > Systemutvikling->objektorientert modellering 7

Identifisere klasser Å identifisere klassene er ofte den vanskeligste delen av objektorientert design Det finnes ingen magisk formel for å identifisere klasser i et system. Avhenger av kompetanse, erfaring og domenekunnskap (kunnskap om systemet og omgivelser) til utvikleren eller systemdesigneren Dette er en iterativ prosess. Umulig å få det riktig første gang INF1050 > Systemutvikling->objektorientert modellering 8

En tilnærming for å identifisere klasser Bruk en grammatisk tilnærming basert på en naturlig språkbeskrivelse av systemet objekter og attributter er subjekter, operasjoner (metoder) er verb Bruk gjenkjennelige ting (entiteter) i applikasjonsdomenet som Emne og Kurs, roller som Student og Foreleser Bruk en scenario-basert analyse og identifiser objektene, attributtene og metodene i hver scenario INF1050 > Systemutvikling->objektorientert modellering 9

Design Design er en kreativ aktivitet der du identifiserer programvarekomponenter og sammenhengen mellom dem, basert på kravspesifikasjon fra kunden INF1050 > Systemutvikling->objektorientert modellering 10

Overføring av faglig grunndata fra E-resept-arkitektur versjon 7.2.1 Faglige grunndata til bruk i e-resept skal leveres av Legemiddelverket gjennom deres FEST tjeneste. Grunndata levert fra FEST skal kunne kombineres med annen grunndata i mottakersystemene... FEST= forskrivnings- og ekspedisjonsstøtte VRS=Vareregisteret HELFO=Helseøkonomiforvaltningen Informasjon om Legemidler skal baseres på informasjon fra Athene og kombineres med informasjon fra VRS. Informasjon om Legemidler skal omfatte alle legemidler som har fått utdelt varenummer i VRS og finnes tilgjengelig i apotek. Legemiddelverket skal levere interaksjonsdata i FEST.. Informasjon om handelsvarer blir hentet fra to kilder, VRS skal levere alle handelsvarer som er relevant for multidosepakking og HELFO skal levere oversikt over pris og produkter som er refusjonsberettiget på blåresept (alle handelsvarer). INF1050 > Systemutvikling->objektorientert modellering 11

Spesifikasjon av grensesnitt/interface Grensesnitt/Interface bør spesifiseres slik at objektene og andre komponenter kan designes i parallell. Ikke design representasjonen av data kun navn og metoder (uten innhold). Innholdet defineres i objektene som implementerer grensesnittet. Objekter kan ha flere grensesnitt med ulike perspektiver av metodene som er spesifisert. Klassediagrammer blir brukt i UML for spesifikasjon av grensesnitt. INF1050 > Systemutvikling->objektorientert modellering 12

Eksempel (brukt i INF1010) Ulike klasser samme grensesnitt (Interface) INF1050 > Systemutvikling->objektorientert modellering 13

Finne ansvarsområder til klasser Hvert funksjonelle krav må tilordnes en eller flere klasser Ø Hvis en klasse har for mange ansvarsområder, vurder å splitte den i ulike klasser. Ø Hvis en klasse ikke har noe ansvar, så er den antageligvis overflødig Ø Når et ansvar ikke kan tilordnes til en eksisterende klasse, opprett en ny klasse. For å finne ansvarsområder Ø Analyser use casene Ø Se etter beskrivelse av handlinger (verb og substantiv) INF1050 > Systemutvikling->objektorientert modellering 14

Objektdesign: Ansvarstilordning Ansvar er knyttet til objektet i form av dets oppførsel Ø Handling: Opprette objekt, beregne, initiere handlinger i andre objekter, kontrollere og koordinere handlinger i andre objekter. Ø Kunnskap: Vite om private data, relaterte objekter, ting som det kan utlede eller beregne Ansvar er ikke det samme som metoder, men metoder implementeres for å oppfylle ansvaret Kategorier av ansvar: Ø Sette (set) og hente (get) verdier av attributter Ø Opprette og initialisere nye instanser (objekter) Ø Hente fra og lagre til fil (ofte database) Ø Slette instanser Ø Legge til og slette linker for assosiasjoner (relasjoner) Ø Kopiere, konvertere og endre Ø Beregne numeriske resultater Ø Navigere og søke Ø INF1050 > Systemutvikling->objektorientert modellering 15

Kjennetegn på god design En god utforming gjør den jobben den er ment å gjøre En god utforming er enkel og elegant Eleganse innebærer å finne akkurat riktig abstraksjonsnivå En god utforming er gjenbrukbar, utvidbar og enkel å forstå Et godt objekt har et lite og veldefinert ansvarsområde Et godt objekt skjuler implementasjonsdetaljer fra andre objekter - Grady Booch INF1050 > Systemutvikling->objektorientert modellering 16

Modularisering Høy kohesjon Ø Et objekt skal bare ha ansvar for relaterte ting Lav kobling Ø Et objekt skal samarbeide med et begrenset antall andre objekter INF1050 > Systemutvikling->objektorientert modellering 17

Høy kohesjon Kohesjon er et mål på hva slags ansvar et objekt har og hvor fokusert ansvaret er Et objekt som har moderat ansvar og utfører et begrenset antall oppgaver innenfor ett funksjonelt område har høy kohesjon Objekter med lav kohesjon har ansvar for mange oppgaver innen ulike funksjonelle områder INF1050 > Systemutvikling->objektorientert modellering 18

Lav kobling Kobling er et mål på hvor sterkt et objekt er knyttet til andre objekter Et objekt med sterk kobling er avhengig av mange andre objekter, noe som kan gjøre endring vanskelig INF1050 > Systemutvikling->objektorientert modellering 19

Designmodellen Lag design-klassediagram parallelt med sekvensdiagrammer Lag noen sekvensdiagrammer, oppdater klassediagrammet, utvid sekvensdiagrammet etc. Designklassene er systemklasser, ikke bare konseptuelle klasser som i domenemodellen INF1050 > Systemutvikling->objektorientert modellering 20

Analyse- vs. designmodell Ø Analysemodellen utelater mange klasser som er nødvendige i et komplett system v Er typisk en domenemodell v Kan inneholde mindre enn halvparten av klassene i systemet. v Uavhengig av spesielle brukergrensesnittsklasser arkitekturklasser (f.eks. design patterns klasser) Ø Den komplette designmodellen inneholder v Domenemodellen v Brukergrensesnittsklasser v Arkitekturklasser (f.eks. slik at klasser kan kommunisere) v Utility klasser (f.eks. håndtering av mengder og strenger) INF1050 > Systemutvikling->objektorientert modellering 21

Designprosesser Det finnes flere ulike objektorienterte designprosesser avhengig av organisasjonen som bruker prosessen Felles aktiviteter i disse prosessene inkluderer Ø Forstå og definere systemets kontekst og eksterne interaksjoner med systemet Ø Designe systemarkitekturen Ø Identifisere nøkkelobjektene i systemet Ø Utvikle designmodeller Ø Spesifisere grensesnitt INF1050 > Systemutvikling->objektorientert modellering 22

Designmønstre Design patterns Et designmønster er en måte å gjenbruke abstrakt kunnskap om et problem og løsningen på problemet Et mønster er en beskrivelse av et problem og essensen av løsningen Bør være tilstrekkelig abstrakt til å kunne bli gjenbrukt i ulike situasjoner I beskrivelser av mønstre brukes som regel objektorienterte teknikker som arv og polymorfisme ( Virtual methods ) INF1050 > Systemutvikling->objektorientert modellering 23

Hvorfor bruke mønstre (patterns) for informasjonssystemer? Mye av vårt daglige virke består i å lete etter strukturer (mønstre) i omgivelsene Mønstre er vanlige løsninger på vanlige problemer Det samme gjelder utvikling av informasjonssystemer Mange systemer har grunnleggende fellestrekk Det finnes mange mønstre (patterns) som er blitt utviklet gjennom systemutviklingens historie INF1050 > Systemutvikling->objektorientert modellering 24

Mer om Mønstre ( patterns ) Mønstre er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner. Mønstre brukes bl.a. i prosessen med å forfine sekvensdiagrammer GRASP Patterns of General Principles in Assigning Responsibilites = Mønster for problem/løsning Sentrale prinsipper er Ø Ekspertprinsippet: v La det objektet som har kunnskapen (dataene) også behandle den Kontrollobjektprinsippet: Ø To typer kontrollere: v Fasadekontroller: En kontrollklasse har ansvar for alt (brukes i et lite system) v Use case kontroller: Styrer ett use case (brukes i større systemer. Ett kontrollobjekt for hvert use case). Skaperprinsippet: Ø Legg ansvar for å opprette et nytt objekt i klassen som må vite om det nye objektet INF1050 > Systemutvikling->objektorientert modellering 25

Ekspertprinsippet: (Information Expert) Problem: Hva er det generelle prinsipp for å tilordne ansvar til objekter? Løsning: La det objektet som har kunnskapen (dataene) også behandle den Hvordan: Ø Begynn med å formulere ansvarsområdet: Ø Eks: Student-kurs: Hvilket objekt har ansvar for å vite om hvilke emner som kreves for å ta et gitt emne? Hvilket objekt har ansvar for å gi en liste over alle studentene på et kurs? INF1050 > Systemutvikling->objektorientert modellering 26

Skaperprinsippet (Creator) Problem: Hvem er ansvarlig for å opprette nye objekter? Løsning: La det objektet som må vite om de nye objektene, lage dem Hvordan: Gi klasse B ansvaret for å opprette et objekt av klasse A dersom ett av følgende er sant: Ø B inneholder A-objekter Ø B registrerer A-objekter Ø B bruker A-objekter Ø B har data som sendes til A-objektet når det opprettes INF1050 > Systemutvikling->objektorientert modellering 27

Kontrollobjektprinsippet (Controller) Hvilken klasse skal behandle en systemhendelse/melding? Ø Kontrolleren ligger gjerne på klienten Ø Kontrolleren har bare metoder, få eller ingen attributter Ø Kontrolleren gjør ikke jobben selv, men mottar og fordeler oppgaver er en slags administrator Ø Delegerer oppgaver og styrer use case Ø Er et bindeledd mellom brukergrensesnittet og applikasjonslaget (modellen) INF1050 > Systemutvikling->objektorientert modellering 28

Systemkontekst for værstasjon Kontroll- 1 system 1 1 Informasjonssystem for været 1 1..n 1..n Værstasjon 1..n 1 1 Satelitt INF1050 > Systemutvikling->objektorientert modellering 29

Værstasjon Use cases Rapporter vær Informasjons-system for været Rapporter status Res tart Slå av Kontroll-system Rekonfigurer Strømsparer Fjernkontroll INF1050 > Systemutvikling->objektorientert modellering 30

Use case beskrivelse: Rapporter vær System Use case Aktører Beskrivelse Stimulu Respons Kommentarer Værstasjon Rapporter vær Informasjonssystem for vær, Værstasjon Værstasjonen sender et sammendrag av værdata, som har blitt samlet fra instrumentene i innsamlingsperioden, til informasjonssystemet. Dataene som sendes er maks, min og gjennomsnittstemperatur; maks, min og gjennomsnitt lutftrykk; maks, min og gjennomsnitt vindhastighet, total nedbør (i mm), og vindretninger for hvert 5 minutt. Informasjonssystemet etablerer en satelitt kommunikasjonslink med værstasjonen og spør om overføring av data. Sammendrag av data sendes til informasjonssystemet Værstasjoner rapporterer vanligvis hver time, men dette varierer litt fra stasjon til stasjon og vil kunne endres i framtiden INF1050 > Systemutvikling->objektorientert modellering 31

Klasser for værstasjon Basert på håndgripelige hardware og data i systemet Ø Bakketermometer, vindmåler, barometer v Applikasjons domeneobjekter som er relatert til instrumenter i systemet Ø Værstasjon v Basis grensesnitt fra værstasjon til omgivelsene. Værstasjonen reflekterer interaksjoner som identifiseres i use-case modellen Ø Værdata v Samler værdataene som kommer fra instrumentene INF1050 > Systemutvikling->objektorientert modellering 32

Klassediagram for værstasjon med assosiasjoner INF1050 > Systemutvikling->objektorientert modellering 33

UML - diagrammer Kilde: http://en.wikipedia.org/wiki/uni5ied_modeling_language#structure_diagrams INF1050 > Systemutvikling->objektorientert modellering 34

Use Case Pante flasker <<extend>> Få kvittering Kunde (f rom Use Case V iew) Pante flasker (from Use Case View) <<extend>> Bli med i Røde kors lotteri Use Case diagrammer brukes til å beskrive interaksjonen mellom brukere og systemer.. INF1050 > Systemutvikling->objektorientert modellering 35

Use Case Pante flasker <<extend>> Få kvittering Kunde (f rom Use Case V iew) Pante flasker (from Use Case View) <<extend>> Bli med i Røde kors lotteri INF1050 > Systemutvikling->objektorientert modellering 36

Tekstlig beskrivelse for Pante flasker Navn: Pante flasker Aktør: Kunde Prebetingelse: Panteautomat er klar til å ta imot pant Postbetingelse: Kunde får ut kvittering eller lodd i røde kors trekning Hovedflyt: 1. Kunde setter inn en flaske (eller et panteobjekt) 2. Panteautomaten skanner koden til flasken (panteobjektet) som ble puttet inn 3. Objektet er godkjent, pantebeløpet blir lagt til det totale beløpet 4. Kunde trykker på kvittering 5. Panteautomat skriver ut kvittering Alternative flyt 3.1 Objekt ikke godkjent 3.2 Start fra 1 4.1.A1 Kunde trykker på Røde kors lotteri 4.2.A1 Kunde skriver ut Røde kors lodd 4.1.A2 Kunde setter inn ny flaske (panteobjekt) 4.2.A2 Start fra 1 INF1050 > Systemutvikling->objektorientert modellering 37

Tekstlig beskrivelse for Pante flasker Navn: Pante flasker Aktør: Kunde Prebetingelse: Panteautomat er klar til å ta imot pant Postbetingelse: Kunde får ut kvittering eller lodd i røde kors trekning Hovedflyt: 1. Kunde setter inn en flaske (eller et panteobjekt) 2. Panteautomaten skanner koden til flasken (panteobjektet) som ble puttet inn 3. Objektet er godkjent, pantebeløpet blir lagt til det totale beløpet 4. Kunde trykker på kvittering 5. Panteautomat skriver ut kvittering Alternative flyt 3.1 Objekt ikke godkjent 3.2 Start fra 1 4.1.A1 Kunde trykker på Røde kors lotteri 4.2.A1 Kunde skriver ut Røde kors lodd 4.1.A2 Kunde setter inn ny flaske (panteobjekt) 4.2.A2 Start fra 1 INF1050 > Systemutvikling->objektorientert modellering 38

Tekstlig beskrivelse for Pante flasker Navn: Pante flasker Aktør: Kunde Prebetingelse: Panteautomat er klar til å ta imot pant Postbetingelse: Kunde får ut kvittering eller lodd i røde kors trekning Hovedflyt: 1. Kunde setter inn en flaske (eller et panteobjekt) 2. Panteautomaten skanner koden til flasken (panteobjektet) som ble puttet inn 3. Objektet er godkjent, pantebeløpet blir lagt til det totale beløpet 4. Kunde trykker på kvittering 5. Panteautomat skriver ut kvittering Alternative flyt 3.1 Objekt ikke godkjent 3.2 Start fra 1 4.1.A1 Kunde trykker på Røde kors lotteri 4.2.A1 Kunde skriver ut Røde kors lodd 4.1.A2 Kunde setter inn ny flaske (panteobjekt) 4.2.A2 Start fra 1 INF1050 > Systemutvikling->objektorientert modellering 39

Klassediagram pante flasker Lodd Melding Vinnerbeløp 0..* Pantesystem PantFlaske() AdderBeløp() 1 1 1 PanteAutomat SkrivFeilmelding() SkrivUtKvittering() SkrivUtLodd() ScannFlaske() 1 1 PanteMottak SkrivMeldingFullt() 0..* Kvittering ListPant TotalBeløp Dato Sted INF1050 > Systemutvikling->objektorientert modellering 40

Klassediagram pante flasker Lodd Melding Vinnerbeløp 0..* Pantesystem PantFlaske() AdderBeløp() 1 1 1 PanteAutomat SkrivFeilmelding() SkrivUtKvittering() SkrivUtLodd() ScannFlaske() 1 1 PanteMottak SkrivMeldingFullt() 0..* Kvittering ListPant TotalBeløp Dato Sted INF1050 > Systemutvikling->objektorientert modellering 41

Sekvensdiagram pante flasker : Kunde PS : Pantesystem PA : PanteAutomat Loop PantFlaske() [for hver flaske] ScannFlaske() Alt Melding (ta ut flaske) [ikke godkjent] pantebeløp AdderBeløp(pantebeløp) [godkjent] Alt [trykket kvittering create K : Kvittering [trykket lodd] SkrivUtKvittering(K) create L : RødekorsLodd Kommentar: Kunne sendt med info til create Kvittering og Lodd (beløp og loddnr, + annen info) SkrivUtLodd(L) INF1050 > Systemutvikling->objektorientert modellering 42

Aktivitetsdiagram pante flasker Godkjent Sett inn flaske (panteobjekt) Nei Ikke godkjent, ta ut Ja Ja Legg til pantebeløp Fortsette Nei Trykket kvittering Trykket lodd Skriv ut kvittering Kvittering eller lodd Skriv ut lodd INF1050 > Systemutvikling->objektorientert modellering 43

Tilstandsdiagram - panteautomat Trykker lodd Skriv ut lodd Venter lodd skrevet ut do/ Vis " sett inn objekt" Trykker kvittering ta ut objekt Vis feilmelding Skriv ut kvittering kvittering skrevet ut do/ vis "ta ut objekt" objekt satt inn ikke godkjent Skann objekt godkjent beløp lagt til Legg til beløp INF1050 > Systemutvikling->objektorientert modellering 44

Sekvensdiagram - Reserver bil INF1050 > Systemutvikling->objektorientert modellering 45

Pseudo-kode Reserver bil class Reservasjonssystem { // Disse objektene kjenner vi til fra før. Bilregister br; Kunderegister kr; Kundebehandler kb; //kb er her et objekt av klassen Kundebehandler ikke med i sekvensdiagrammet ArrayList <Bil> ledigebiler; Bil bil; String kundenr; Kunde k; Kontrakt kt; // metode som legger til en kontrakt i en liste AddKontrakt(kt) { } // kundebehandler velger tidsintervall (hentedato og returdato). reserverbil (hdato, rdato) { // Systemet returnerer en liste over tilgjengelige biler innenfor de spesifiserte datoene. ledigebiler = bilregister.finnledigebiler(hentedato, returdato); // Kundebehandler velger én av bilene. bil = kb.velgbil(ledigebiler); INF1050 > Systemutvikling->objektorientert modellering 46

Pseudo-kode Reserver bil forts. } } // Systemet ber om kundenr... kundenr = kb.oppgikundenummer(); if (kundenr) { // og finner kunden i systemet. k = kr.finnkunde(kundenummer); // Alternativ flyt: Kunden finnes ikke. } else { // Systemet oppretter ny kunde og fortsetter til neste steg kundeinformasjon = kr.skrivkundeinformasjon(); k = new Kunde(); k.setkundeinfo(kundeinfo) kr.registrerkunde(k); } // Vi lager en ny kontrakt. // Bil blir reservert i metoden nykontrakt. kt = new Kontrakt(); kt.setkontrakt(k,bil,hdato,rdato); AddKontrakt(kt); // Systemet bekrefter at bilen er reservert for den gitte perioden. kb.visbekreftelse(kt); INF1050 > Systemutvikling->objektorientert modellering 47