Analyse av problemområdet Objektorientert modell En sammenhengende, eksplisitt og dynamisk modell av et objektsystem som brukes både under analyse og design Klasser av objekter (kap. 3) Struktur mellom klasser og objekter (kap 4) Dynamikk: hendelser som endrer objekter (kap. 5) 1 Modellering i analysen Utgangspunkt: Problemområdet slik det framkommer i systemdefinisjonen Problemområdet beskrives slik kommende brukere vil se det Objekter er byggeklosser Fokusér på struktur og dynamikk Prioritér overblikk framfor detaljer Objektsystem EDB-system Problemområde Anvendelsesområde 2
Objekter Et objekt er en abstraksjon over et konkret fenomen i det problemområdet som edb-systemet skal brukes til å administrere, styre eller overvåke Identitet Må kunne finnes / gjenfinnes Tilstand Statiske egenskaper og verdier Atferd Hendelser som påføres eller utføres av objektet, bl.a. felles hendelser Objekter klassifiseres primært etter sine hendelser 3 Klasser Klasse: En beskrivelse av en mengde objekter med samme struktur, atferdsdmønster og attributter Primært objektmengde, mens i fleste OO-språk fokuserer på klasser som representasjon av begreper Fenomener Ting Personer og roller Organisasjoner Steder Begreper Ressurser Systemer Abstrakter Klasser Bil, vare, emballasje, materiale Ansatt forelder, kunde, medlem Virksomhet, avdeling, gruppe, prosjekt Hylle, parkeringsplass, tomt, by Firkant, valuta, kvalitetsparameter, gebyr Penger, tid, energi, informasjon Gateregister, kassaterminal, alarmsystem Avtale, spesifikasjon, forestilling, ekteskap 4
Hendelser Hendelse: En øyeblikkelig begivenhet Involverer ett eller flere objekter Atomistisk (udelelig) Observerbare Identifiserbare Eksempler Skrotet, forflyttet, fusjonert, besatt, forstørret, betaling, gate innført, forlenget Valg av hendelser Ut fra hva som er relevant i forhold til systemdefinisjonen Hendelser som bare skjer i datasystemet beskrives ikke Kontoutskrift foretatt er ingen hendelse 5 Identifisering av hendelser Byråkratier registrerer hendelser Det ankommer dokumenter Flyttemelding til folkeregisteret, eksamensresultat til studieadministrasjonen, faktura til regnskapskontoret Egen observasjon Kontroll Genererer hendelser Fjerner medlemmer som ikke har betalt, sender forespørsel til likningsvesenet Maskinell observasjon Trykknapper, mus, lysstråler som brytes, strekkodeleser, magnetstripeleser, temperaturføler, radioavlesning 6
Klassifisering Bakgrunn Systemdefinisjon Hverdagslige begreper Spesielle begreper for problemområdet Objekter i problemområdet Hendelsesgruppering Liten frihet i valg av hendelser Hva initierer hendelsen? Objekt? Hva blir berørt av hendelsen? Objekter? Daglig aktivitet, ofte ubevisst Ulike oppfatninger av hva et begrep betyr Ulike problemområder Ulike anvendelsesområder Ulike erfaringer Eks Tog 7 Ogdens trekant Betydning, begrep, denotasjon+konnotasjon (Subjective meaning, sense, understanding, intension) uttrykker Betegnelse (Expression) Klassenavnet Hund refererer til handler om Omfang (Extension) Objektene 8
Blomsterbutikken Blåveis Betingelser: Kundene oppgir navn og høytidsdager Anvendelsesområde: Bestilling og klargjøring av buketter Teknologi: PC og web Objektsystem: Kunder, blomster og bestillinger Funksjonalitet: Kunderegistrering, bestilling, leveranse Filosofi: Støtte til kundetilhørighet og økt salg 9 Problemområdet 10
Mulige hendelser og objekter Bestille blomst Hendelse, men ikke formulert som øyeblikkelig Angår objekt Potteplanter Flertall klasse Avskårne blomster visner Tar tid Forslag til kunden om levering av blomster Objekt eller hendelse? 11 Hendelsestabell Objekter Avskåret blomst Bukett Potteplante Oppsats Kunde Begivenhet Bukett bestilt Oppsats bestilt Hendelser Avskårede blomster visnet Bukett laget Forslag om bukett sendt til kunde Bestilt bukett hentet 12
Valg av objekter og hendelser Bankens system for kundekonti: Objekter med hendelser Konto Opprett, sett inn, ta ut, avslutt? Kunde Opprett konto, sett inn, ta ut, avslutt konto, avslutt kundeforhold? Kasserer Opprett konto, ta ut, sett inn, avslutt konto? Uttak Identifisér kunde, identifisér konto, utbetal beløp? Overføring Identifisér konti, ta ut, sett inn? Minibank Identifisér konto, motta forespørsel, kontrollér kontobeholdning, ta ut I problem- eller anvendelsesområdet? Hendelser atomære og øyeblikkelige? 13 Generalisering En struktur hvor en generell klasse beskriver egenskaper og atferdsmønstre som er felles for et antall spesielle klasser Egenskapene og atferdsmønstrene nedarves til de spesielle klassene Avdeling Parallellogram Produksjons avdeling Service avdeling Rektangel Rombe Kvadrat 14
Indikatorer ved overveielse om generalisering For Begrepshierarki Type - subtype: er-en (is-a), er en type, Mengde - delmengde: omfatter alle og Mot Typeattributt Endring av klassetilhørighet, typeevolusjon Multippel nedarving Virveldyr Person Fisk Krypdyr Fugl Pattedyr Kvinne Mann Person Kunde Ansatt Ansatt-kunde 15 Klynger En samling klasser som er innbyrdes forbundne Personer Person Organisasjonsenhet Avdeling Kunde Ansatt Maskin Produkt 16
Indikasjoner for klynger (UML package) Oppdeling av problemområdet Klasser i klynger er typisk forbundet med generalisering Objekter med aggregering Relasjoner mellom klynger er typisk assosiasjoner 17 Relasjoner mellom objekter Tegnes også på klassediagram Fastlegger kardinalitet (dansk: mangfoldighet) Assosiering En struktur hvor et antall sideordnede objekter knyttes til hverandre En bil har null eller flere eiere, en eier har én eller flere biler Bil 0: 1: Eier 18
Aggregering En struktur hvor et overordnet objekt (helheten) består av et antall underordnede objekter (delene) Uttrykker at et objekt er en del av et annet, inneholdt i et annet, medlem i et annet Har-en, inngår-i, (has-a, part-of) Helhet-del, sammensetning Genser 1 2 Erme 1 1 Bol 1 0:1 Hals 19 Oversikt over komplisert fenomen Problem n klasser n 2 /2 mulige relasjoner 60 klasser 1800 mulige relasjoner. Umulig å kontrollere Klynger Relasjoner mellom klynger bør ha felles egenskaper Begrepstro Oversett relasjoner til naturlig språk La brukere teste Hendelser er ikke objekter Utelates fra strukturdiagrammer Bare nødvendige relasjoner tas med 20
Hendelser og deres sammenheng Hendelsesforløp (event trace) En konkret sekvens av hendelser som et objekt er involvert i gjennom et bestemt tidsrom Atferdsmønster (behavioural pattern) Et abstrakt mønster av hendelser som fastlegger de mulige hendelsesforløpene for alle objekter av en klasse Struktureres som en algoritme eller et tilstandsdiagram 21 Regulære uttrykk Sekvens i atferdsmønstre Hendelse 1 + Hendelse 2 + Hendelse 3 +... +Hendelse n Tilstandsdiagrammer Fødsel + Dødsfall Hendelse 1 Tilstand 1 Hendelse 2 Tilstand 2 Hendelse 3 Fødsel Levende Dødsfall Død. Hendelse n Tilstand 2 22
Regulære uttrykk Seleksjon valg, if Hendelse 1 Hendelse 2 Hendelse 3... Hendelse n Tilstandsdiagrammer Landet Styrtet Tilstand 1 I lufta Hendelse 1 Hendelse 2 Hendelse 3 Hendelse n Landet Styrtet 23 Iterasjon løkke, gjentagelse, while Regulære uttrykk Hendelse 1 (Hendelse 1 + Hendelse 2) Tilstandsdiagrammer Tilstand 1 Passasjer gått ombord (Lettet + Landet) Ombordstigning tillat Hendelse 1 Passasjer gått ombord Tilstand 1 Hendelse 1 Hendelse 2 Tilstand 2 I lufta Lettet Landet På bakken 24
Tilstandsdiagram - fly Tas ut av trafikk I lufta Landet Lettet Avstigning tillat Siste passasjer forlatt flyet Avgangstid Ombordstigning tillat Stengt Passasjer forlater flyet Passasjer gått ombord Settes inn i trafikk 25 Tilstandsdiagram - passasjer Kjøpt billett Tatt med bagasje Passasjer Fly Bagasje sjekket inn Venter på innsjekking Kjøpt billett Reiser uten bagasje Bagasje sjekket inn Ombordstigningstid Passasjer gått ombord Landet Passasjer forlatt flyet Settes inn i trafikk Avgangstid Landet Venter på fly Ombordstigningstid Ombordstigning tillat Passasjer gått ombord Ombord Landet Passasjer forlatt flyet Avstigning tillat 26
Arv av atferdsmønstre Subklassen arver unionen av alle hendelser som superklassene omfatter Ved multippel arv, hvis samme hendelse arves fra flere superklasser, skal atferdsmønstret for subklassen overholde alle restriksjoner som fastlegges av superklassene Hvis restriksjonene ikke lar seg forene, må strukturen eller superklassene endres 27 Statiske og dynamiske strukturer Hvis to objekter har felles hendelser, bør de ha assosiasjon eller aggregeringsrelasjon mellom seg Hvis to objekter ar en assosiasjon eller aggregeringsrelasjon mellom seg, bør de muligvis også ha felles hendelser Start- og stopphendelser for deler er ofte delhendelser i helheten Hvis samme hendelser opptrer i to klasser, bør en generaliseringsstruktur som innbefatter klassene overveies 28