13 Objekt-orienteret Design.

Relaterede dokumenter
Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Abstrakte klasser.

29 Opsamling af Objekt-orienteret Programmering.

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.

2 Abstrakte datatyper.

Rename og redefine. Abstrakte klasser. Dynamisk binding.

Årsagen til fejl. Erkendelse af fejl. Håndtering af fejl.

Ugeseddel 4 1. marts - 8. marts

UML til kravspecificering

Objekt-orienteret programmering uden klasser: Self.

Objektorientering. Programkvalitet

4 Basal Objekt-orienteret Programmering I.

ER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002

26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler.

30 Objekt-orienteret Programmering i Andre Sprog.

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

Abstrakte datatyper C#-version

ER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002

12 Nedarvning III. Noter. Multipel nedarvning. Nedarvning og assertions. PS1 -- Nedarvning III. Kurt Nørmark, Aalborg Universitet, 1994.

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

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse.

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

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

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 3: E-R modellering. 17. februar Forelæser: Rasmus Pagh

16 Træer. Noter. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype.

Den sproglige vending i filosofien

LOGON Billede: Ved logon, er det vigtigt at der er vinget af i feltet Default miljø og rolle.

Objects First with Java A Practical Introduction Using BlueJ

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

Greenfoot En kort introduktion til Programmering og Objekt-Orientering

Spilstrategier. Indhold. Georg Mohr-Konkurrencen. 1 Vindermængde og tabermængde 2. 2 Kopier modpartens træk 4

Program for møde fredag d. 22/2-2002

8 Specifikation med Logiske Udtryk.

Design af IT-medier. Skriftlig prøve 27. august Alle skriftlige hjælpemidler er tilladt.

Spilstrategier. 1 Vindermængde og tabermængde

Læseplan for valgfaget teknologiforståelse. (forsøg)

Introduktion. Properties (egenskaber) Timeline (Tidslinien) Stage (hovedscenen) kan redigeres.

EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning:

Kontrol-strukturer i PHP

It og informationssøgning Forelæsning december 2006 Nils Andersen. Indkøring, afprøvning og dokumentation af programmer

Forstå brugbarheden af Google Analytics på 10 minutter

Supermarkedsmodellen for design af brugergrænseflade

Effektiv søgning på web-steder

Kontraktbaseret Design. Anker Mørk Thomsen

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Vejledning til udarbejdelse af jobfunktionsroller og tilknytning til brugersystemroller

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

Brugergrænseflader i VSU

Databasesystemer, forår 2006 IT Universitetet i København. Forelæsning 3: E-R modellering. 16. februar Forelæser: Rasmus Pagh

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

Læseplan for valgfaget teknologiforståelse

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

Datalogi OB, Efterår 2002 OH er, forelæsning 3/ forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)

Undervisningsbeskrivelse

18 Multivejstræer og B-træer.

{ } { } {( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )}

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

Opgaveteknisk vejledning Word 2016 til Mac. Tornbjerg Gymnasium 10. december 2015

Web Services Light. Karen Thomsen. Silkeborg Bibliotek. Karen Thomsen

Appendiks 6: Universet som en matematisk struktur

Rolf Fagerberg. Forår 2015

Rolf Fagerberg. Forår 2015

01017 Diskret Matematik E12 Alle bokse fra logikdelens slides

Opgaveteknisk vejledning Word 2011 til Mac. Tornbjerg Gymnasium 10. december 2015

IT-arkitektur. IT-arkitektur Arkitektur på forskellige niveauer. Efter denne lektion skal du:

Gode råd om at skrive

Matroider Majbritt Felleki

OM PROJEKTOPGAVER GENERELT

Noter til Perspektiver i Matematikken

Object-Relational Mapping

Opgaveteknisk vejledning Word Tornbjerg Gymnasium 10. december 2015

Rolf Fagerberg. Forår 2014

DATABASE - MIN MUSIKSAMLING

INDHOLDSFORTEGNELSE. INDLEDNING... Indledning. KAPITEL ET... Kom videre med Excel. KAPITEL TO Referencer og navne

Brug og Misbrug af logiske tegn

Introduktion. Jan Brown Maj, 2010

Vejledning til forløbet: Hvad er chancen?

Danmarks Tekniske Universitet

Rolf Fagerberg. Forår 2013

1 Klassifikation-version2.0

Elementær Matematik. Mængder og udsagn

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser.

4 Oversigt over kapitel 4

TIPS OG TRICKS I PROJEKTSKRIVNING

Simulering af stokastiske fænomener med Excel

EDI. Microsoft Dynamics NAV 2009 SP1 Klassisk. Side 1. Copyright: Naddon version

Brøker kan repræsentere dele af et hele som et område (fx ½ sandwich, ½ pizza, ½ æble, ½ ton grus).

Dansk-historie-opgave 1.g

Studieordning del

Forelæsning Uge 2 Torsdag

15. januar 2018 Sekretariatet for Initiativ 8.1. Vedr. Anvendelsesprofil for Organisation

Skriftlig eksamen i Datalogi

Introduktion til design patterns.

IT-Basecamp Real World Java EE Patterns Adam Bien. Real World Java EE Patterns, Adam Bien Copyright Lund&Bendsen A/S

Videregående Programmering for Diplom-E Noter

Introduktion til DM507

Rolf Fagerberg. Forår 2012

Informationsteknologi B Forsøgslæreplan, december 2010

DE BEAR TECHNOLOGY. o Processer, metoder & værktøjer. info@dbtechnology.dk

Martin Geisler. Uge 49, 2001

Noter til dm529. Jonas Nyrup. 11. november 2011

Transkript:

13 Objekt-orienteret Design. Analyse i forhold til design. Programbeskrivelse og designbeskrivelse. Sømløs udvikling. Design i forhold til OO Eiffel programmering. Kategorisering af klasser i et design. Design beskrivelsessprog. Statisk model. Dynamisk model. Dette kapitel udtrykker generelt nogle synspunkter og tanker om design fra et programmeringsperspektiv. Mere specifikt afspejler kapitlet nogle designmæssige forhold i forhold til det programmeringssprog, som vi er optaget af på dette kursus, nemlig Eiffel. Analyse og programmering er er rimelig velforståede aktiviteter. Men det opleves af mange som lidt for brutalt at kaste sig over programmering efter en overstået analysefase. Derfor er det efterhåndet vundet frem, at efter analyser kommer der en design-fase, hvorefter man (endelig) kan programmere selve systemet. Set fra et lidt dogmatisk programmeringsperspektiv kan man godt påstå, at design blot er et nyt modeord for det som altid har været den store udfordring i programmering: at få struktueret sit program hensigtsmæssigt Design-notationen, som foreslåes i sidste halvdel af dette kapitel, stammer fra artiklen Jean-Marc Nerson, "Extending Eiffel towards O-O analysis and Design". 187

Design i forhold til Analyse. Analyse er rettet mod problemet. Forståelse af problemet. Løsrevet fra teknologi. Design er rettet mod løsningen af problemet. Overordnet beskrivelse af programmet og dets udførelse. - Overskuelighed frem for detaljer. Sproguafhængig? Knyttet til teknologien, som løsningen baseres på. Brugergrænseflade Lagring af data Programmeringssprog er primært rettet mod beskrivelse af aspekter, som har en semantisk betydning. Undertiden er vi interesseret i -- under designbeskrivelser -- at beskrive aspekter, som ikke lader sig beskrive gennem programmeringssproget. Designsprogets opgave er således også at understøtte beskrivelse af væsentlige aspekter, sondringer og strukturer, som ikke kan fastholdes i programmet gennem programmeringssproget. Som eksempler kan nævnes følgende: Aggregering kan i Eiffel bedst beskrives ved brug af ekpanderede typer, men i visse situationer vil vi også ønske at realisere aggregering ved brug af referencer. Dette kan ikke udtrykkes i programmeringssproget. I OO programmeringssprog er klasser organiserede i klassehierarkier. Der er dog også behov for andre organiseringer, såsom gruppering. Eiffel sproget understøtter ikke dette. (Til gengæld understøtter Eiffel omgivelsen klynger af klasser). Nogler forfattere mener, at sproguafhængighed i designbeskrivelserne er væsentlig. Som det vil fremgå af det følgende, kan der sige både "for og imod" omkring dette. 188

Design- og programbeskrivelser (1). Genstandsområde: Formaliseringsgrad: statiske aspekter formel dynamiske aspekter uformel Udtryksform: tekstuel grafisk Detaljeringsgrad: detaljeret overordnet Genstandsområde: Formaliseringsgrad: Udtryksform: Detaljeringsgrad: Program x x x x Design x x x (x) x x Det er væsentlig ikke at misforstå sondringen mellem statiske og dynamiske aspekter: De dynamiske aspekter er knyttet til programudførelse. De statiske aspekter er knyttet til vores traditionelle forståelse af programbeskrivelse. I den statiske programbeskrivelse centreres interessen om klasser; når vi tænker konkret om et objekt-orienteret program centreres interessen om objekter. Det kan være et problem i vore beskrivelser, at objekter kun optræder indirekte i vore beskrivelser. Man kan forestille sig beskrivelsesformer, hvor objekter optræder på en langt mere direkte måde. En formel beskrivelse kan gives en præcis betydning (en præcis semantik). Dette er langt vanskeligere for en uformel beskrivelse, der som oftest er baseret på formuleringer i naturlig sprog. Nederst på denne side er vist, hvordan programbeskrivelser og designbeskrivelser typisk vil fordele sig på de fire beskrivelseskarakteristika. 189

Design- og programbeskrivelser (2). Sproget, som anvendes til udtrykkelse af designet er 1. uafhængigt af programmeringssproget. a. designet kan programmeres i mange forskellige sprog. b. risiko for usammenligneligheder mellem design- og programmeringssprog. 2. afhængig, men separat fra programmeringssproget. a. sikrer god sammenhæng mellem programmeringssprog og designsprog. b. giver god mulighed for "forward-" såvel som "reverse enginering". 3. en del af programmeringssproget a. i en simple programmeringsomgivelse bliver designsproget tekstuelt, og en delmængde af programmeringssproget. b. i en avanceret programmeringsomgivelse kan program- og designbeskrivelserne være forskellige syn af den samme interne repræsentation. På denne slide diskuterer vi tre mulige forhold mellem designbeskrivelser og programbeskrivelser. Ad 2. Der er en sammenhæng mellem designsprog og programmeringssprog, som udmønter sig i, at ethvert design kan transformeres til et programskelet, og ethvert program kan transformeres til et design. Man skal bemærke, at i og med, at der er tale om to forskellige sprog i hver deres repræsentation, vil et design og et program kunne blive inkonsistente. "Forward engineering" betyder i denne sammenhæng, at en designbeskrivelse transformeres til et skelet af en programbeskrivelse. "Reverse engineering" betyder, at en designbeskrivelse kan udtrækkes af et program. Sidstnævnte er f.eks. relevant, i det tilfældet at et program er fremkommet "på gammeldags vis", uden udafbejdelse af egentlig designbeskrivelse. Reverse engineering er også nyttig, hvis et design er transformeret til programbeskrivelse, og derefter videreudviklet med hensyn til aspekter, som påvirker designet. Det er da nyttigt, at kunne udtrække designet fra programmet. Ad 3. Idet design og program her udtrykkes i det samme sprog (eller i det avancerede tilfælde deler intern repræsentation) er der ikke som oven for risiko for inkonsistens mellem programmet og designet. 190

Sømløs udviklingsproces. En udviklingsproces kaldes sømløs ( Seamless ) hvis der ikke er kantede og ubehagelige overgange mellem processens faser. Betegnelsen er en metafor, som nok stammer fra tekstilbranchen snarere end fra tømrer/snedkerbranchen. Sømløshed i udviklingsprocessen fra analyse til programmering: Udnyttelse af objekt-orienterede ideer hele vejen igennem giver færre søm. Tæt tilknytning mellem design- og programmeringssprog giver færre søm. Befordrer genbrugelighed mellem processens faser. Øger produktiviteten. Sømløshed er et forsøg på oversættelse af den mere og mere hyppigt anvendte engelske betegnelse seamlessness. Man kan observere sammenhængen mellem sømløshed og den tredie af punkterne på den forrige slide om integration af programmeringssprog og designsprog. Jo tættere de to formalismer er på hinhanden, jo færre søm bliver der mellem disse faser i udviklingsprocessen. 191

Hvilke dele af OO Programmering fra PS1 er Design? Klasser som dataabstraktion Klasseinvariant samt pre- og postbetingelser af eksporterede operationer Klassens klientinterface Organisering af klasser i et nedarvningshierarki Abstrakte klasser Generiske klasser Grov formulering: En samling Eiffel klasser uden kroppe af operationer udgør en designbeskrivelse. Abstrakte præsentationer, som er resultatet af short, er designbeskrivelser. På denne side diskuterer vi situation 3 fra forrige slide. Altså situationen, hvor Eiffel anvendes som et design sprog. Listen af sproglige egenskaber, som er opremset øverst i billedet, angiver hvilke dele af Eiffel, der bidrager til et designsprog. 192

Klasserne i Objekt-orienteret Design. Problem-orienterede klasser Stammer fra analysen. Skal bearbejdes, udvides og reorganiseres i designfasen. Basisklasser Klasser som afspejler fundamentale datastrukturer. Klasser som understøtter ekstern lagring. Applikationsklasser Ikke dataabstraktioner, men derimod indkapslinger af applikationens procedurelle aspekter. Brugergrænseflade klasser 193

Beskrivelsessprog til OO design. Statisk model: Klasse symboler. Klasse Abstrakt klasse * Generisk klasse Klasse, hvis objekter er persistente TABEL [T] Genbrugt klasse ARRAY [T] Rodklasse PROGRAM Det grafiske sprog, hvis elementer bliver beskrevet på denne og følgende sider, er knyttet til Eiffel. Sproget er beskrevet i artiklen "Extending Eiffel Towards O-O Analysis and Design". En komplicerende faktor i designbeskrivelsessproget er håndteringen af generiske klasser. Som det vil fremgå, kan disse indgå i en del forskellige relationer med ikke generiske såvel som generiske klasser. Vi gør ikke noget forsøg på i disse noter at komme op med speciel notation til beskrivelse af operations interfacet af klasser og de tilknyttede assertions. Vi foreslår, at vi bruger Eiffel og det tilknyttede dokumentationsværktøj (short) til dette formål. 194

Beskrivelsessprog til OO design. Statisk model: Nedarvningsrelationer. Generalisering/specialisering: Nedarvning fra generisk klasse: SAMLING [X] X --> BOG CHECKKONTO BOG_SAMLING Egenskabstilgængelighed: MATH-FN COMPLEX_NUMBER Relationen "egenskabstilgængelighed" er vist grafisk som en pil, tegnet med en stiplet linie. Egenskabstilgængelighed afspejler en nedarvningsrelation mellem to klasser A og B (såsom math_fn og complex_number), hvor B ikke er en specialisering af A. Vi har tidligere i disse noter talt om at stille egenskaber direkte tilrådighed ved brug af nedarvning. Nedarvning fra generisk klasse kan også angives med stiplet pil. Der er ikke noget til hinder for, at både sub- og superklasser kan være generiske: LINKED_LIST [T] T --> X SAMLING [X] "Egenskabstilgængelighed" og "nedarvning fra generisk klasse" er nye i forhold til designsproget beskrevet i artiklen "Extending Eiffel towards O-O analysis and Design". 195

Beskrivelsessprog til OO design. Statisk model: Klient-leverandør relationer. Klient Motor Aggregering (1-1) BIL } Motor Aggregering (1-m) BIL 4 } Leverandør MOTOR HJUL En helhed (BIL) består af angivne dele. Reference (n-m) Kunde PERSON En BANKONTO refererer til en PERSON. Reference til generisk instans Begrænset generisk klasse LIST[T] ORDNET_SAMLING[...] Transaktions historie T --> TRANSAKTION COMPARABLE En instans af en refererer til en ORDNET_SAMLING af TRANSAKTION. Den generiske parameter af LIST skal være af typen COMPARABLE. Følgende er et alternativ til ovenstående "reference til generisk instans": T --> TRANSAKTION Transaktions historie ORDNET_SAMLING[T] Bemærk endvidere, at vi tilsvarende kan angive "aggregering af generisk instans" ved blot at erstatte pilen med "tuborg". 196

Beskrivelsessprog til OO design. Gruppering af klasser. Gruppering af klasser anvendes til angivelse af subsystemer en mængde af klasser, som har en nær sammenhæng Klynge 1 Klynge 3 Klynge 2 På denne slide kalder vi en gruppe af klasser for en klynge. Husk, at klynger er blevet introduceret i forbindelse med Eiffel programmeringsomgivelsen, med det formål at beskrive den samling af klasser, der skal tages i betragtning under oversættelse af et Eiffelprogram. 197

Beskrivelsessprog til OO design. Dynamisk model. I den dynamiske model vises objekter og deres kommunikation med andre objekter. Kan anvendes til beskrivelse af kommunikations-scenarier mellem objekter. Instans af klasse (objekt) evt. med felter Balance Kunde Rentesats 100 --> 5.7 Nummereret kommunikation mellem to objekter n n: forklarende tekst. Det er mindre præcist formuleret på denne side, hvori en beskrivelse af den dynamiske model egentlig består. Vi vil tænke forholdsvist frit om en sådan. Det er målsætningen at sættes os i stand til at beskrive et scenario, hvori der indgår konkret objekter samt nærmere beskrevne kommunikationer mellem disse. 198