2 Abstrakte datatyper.
|
|
- Camilla Villadsen
- 8 år siden
- Visninger:
Transkript
1 2 Abstrakte datatyper. Motivere eksempel: top-down udvikling af program 'mini-bank' Strukturering af et program: efter data eller funktion? Definition af en abstrakt datatype og tilknyttede begreber. Fænomener, begreber og begrebsdannelse. Objekt-orienteret udvikling af programmet 'mini-bank'. Abstrakte datatyper udgør den allervigtigste ide i forhold til objekt-orienteret programmering. I denne forelæsning vil vi behandle emnet uafhængigt af programmeringssprog. 19
2 Topdown udvikling af programmet 'minibank' (1) Program mini-bank; Type Bankkonto-typedefinitioner af alle konto-arter; Transaktions-procedurer på de forskellige konto-typer; begin while not fyraften do begin indlæs kontotype KT; udfør en transaktion på KT For at forstå egenskaberne af et objekt-orienteret program baseret på abstrakte datatyper er det nyttigt at sætte fokus på en anden programudviklingsteknik. I denne forelæsning starter vi derfor med at studere et program udviklet ved såkaldt top-down programmering. Når et program udvikles top-down, startes med de overordnede dele af programmet, og dele deraf forfines trinvis, indtil alle detaljer er fuldt ud implementeret. En modsætning til top-down programmering kaldes bottom-up programmering. I en bottom-up teknik starter man med at udvikle detaljer, og bygger op til en helhed. Man kan naturligvis forestille sig kombinerede top-down og bottom-up teknikker. 20
3 Topdown udvikling af programmet 'minibank' (2) Eksempel på bankkonto typedefinition: check-konto = record id: KontoId; balance: Kroner; rente-sats: real; antal-udnyttede-checks: integer udfør en transaktion på kontotype KT : procedure transaktion(kt: kontotype); begin case KT of check-konto: check-konto-transaktion; aktionær-konto: aktionær-konto-transaktion; pensions-konto: pensions-konto-transakton; gevinst-konto: gevinst-konto-transaktion;... ; ; Her er vist et eksempel på en type-definition (af check-konti). Endvidere er det centrale fragment af hovedprogrammet forfinet i forhold til forrige slide. Denne forfining har vi givet status af en procedure, transaktion, som naturligvis så skal kaldes af hovedprogrammet. Procedurerne check-konto-transaktion, aktionær-konto-transaktion m.m., som kaldes i proceduren transaktion, vil vi på en naturlig måde kunne definere som lokale procedurer til transaktion. Typen med navnet kontotype kan være en enumeration type, altså en type defineret ved kontotype = (check-konto, aktionær-konto, pensions-konto, gevinst-konto,...). På næste slide viser vi en definition af proceduren check-konto-transaktion. 21
4 Topdown udvikling af programmet 'minibank' (3) procedure checkkonto-transaktion; var ck: check-konto; transaktions-procedurer på check-konto begin hent-konto(ck); indlæs transaktionstype TT; case TT of opret: opret-check-konto(ck); hæve: hæve-check-konto(ck); indsætte: indsætte-check-konto(ck); tilskriv-rente: tilskriv-rente-check-konto(ck); clear-check: clear-check(ck, check); nedlæg: nedlæg-check-konto(ck) For hver type af bank-konti BKT antager vi, at der findes en procedure BKT-kontotransaktion, som i interaktion med brugeren udfører en af flere mulige transaktioner på en konto. Vi har vist proceduren for check-konti. Man skal bemærke, at nogle af procedurerne tilsynelade mangler noget information for at kunne virke. F.eks. er det ikke oplagt, hvilke beløb der hæves og indsættes på kontoen af hhv. hæve-check-konto og indsætte-check-konto. Vi antager, at disse procedurer spørger brugeren af programmet om den mangle information. De enkelte transaktionsprocedurer antages at være lokale procedurer til den viste check-konto-transaktion, placeret under transaktions-procedurer på check-konto. Bemærk, at vi "uden videre" ved at udføre den trinvise forfinelse har fået procedurer i tre indlejrede niveauer. Dette er meget karakteristisk for denne udviklingsteknik. 22
5 Tabel med oversigt over bankkonto-operationer. Transaktions-type Kontotype Checkkonto Oprette Hæve Indsætte Rentetilskrivning hæve-checkkonto indsættecheck-konto tilskriv-rentecheck-konto opretcheck-konto... Aktionær konto Pensionskonto Gevinstkonto hæve-aktionærkonto hæve-pensionskonto hæve-gevinstkonto indsætteaktionær-konto indsættepensions-konto indsættegevinst-konto tilskriv-renteaktionær-konto tilskriv-rentepensions-konto tilskriv-rentegevinst-konto opretaktionær-konto opretpension-konto opretgevinst-konto... Med den skitserede fremgangsmåde kræves der en transaktionsprocedure pr. kontotype pr. transaktion. Dette giver et stort antal forskellige procedurer, som vist i tabellen ovenfor. Nogle af disse procedurer har sikkert lighedspunkter, som det kunne være hensigtsmæssigt at samle på ét sted. Hvis man ønsker at opretholde konto-type-definitionerne som hver sin record type, er det nødvig at have en procedure for hvert felt i tabellen. Procedurerne er struktureret således, at hver række af procedurer er lokale til den bank-konto type specifikke transaktionsprocedure. Man kan i Pascal arrangere tingene mere hensigtsmæssigt, nemlig ved at definere én type, som dækker alle konto-typer. En sådan record type skal have afdelinger med felter, der er specifikke for den enkelte konto-type. Sådanne records kaldes variantrecords. Hvis ikke man allerede har gjort det i forbindelse med "grundbegreber", anbefales det at repetere dette begreb, som bl.a. findes i Pascal. Opgave 1. Det blev observeret ovenfor, at vi primært har struktureret vores program efter rækker af operationer, og sekundært efter søjler. Demonstrer, at vi også kunne have valgt at gøre det omvt; altså primært at strukturere efter arten af vores transaktion, og sekundært efter kontotype. Skitser det resultere program. Hvilken af de to strategier (transaktions-art-først, kontotype-først) skal man foretrække, hvis vi antager, at der oftere skal tilføjes nye transaktioner nye kontotyper? Og oftere nye kontotyper nye transaktioner? Opgave 2. Antag nu, at vi definerer en variant-record, hvor felterne id og balance er fælles for alle kontotyper, mens andre felter er specifikke for de forskellige typer af bankkonti. Vi vil nu forvente, at vi kan programmere nogle af bankkonto operationerne på et "fælles niveau". Skitser nu proceduren transaktion og dets lokale procedurer, og illustrer hvor de enkelte operationer nu hører hjemme. 23
6 Strukturering af et program: Efter data eller funktion "Hvilke handlinger udfører programmet?" kontra "Hvad udfører programmet handlinger på?" Top-down udvikling af et program afspejler trinvis nedbrydning af et problem i mindre delproblemer og er som sådan med til at nedbringe "kompleksiteten" af problemløsningen. En funktionel strukturering af et program er mindre stabil en datastrukturering i programmets samlede levetid. "Rigtige systemer" har ingen top. Top-down udvikling og strukturering efter funktion virker hæmme på udvikling af genbrugelige programkomponenter. Mange af pointerne på denne slide er kondencerede udsagn fra Meyers: Object-oriented Program Construction, kapitel 4. 24
7 Definition af abstrakt datatype. En abstrakt datatype er en mængde af værdier samt en mængde af operationer på disse værdier. Et program arbejder på instanser af en ADT, ikke på typen som så. Instanser af en ADT kaldes også for objekter. Udvalgte operationer på en ADT udgør det interface, som en klient af typen benytter til manipulation af instanser af typen. En abstrakt datatype skjuler, beskytter og indkapsler data-repræsentationen for klienter af typen. Ved programændringer i interne dele af den abstrakte datatype udgør operations-interfacet en "brandmur" mellem klient og data-repræsentation. Operationsinterfacet opdeler operationerne på datatypen i interne og eksterne operationer. Mængden og naturen af interne operationer er af mindre betydning, sålænge de eksterne operationer fungerer, som det forventes (se nedenfor). Tilsvare er selve datarepræsentationen som regel skjult for klienter. Det betyder, at selv om en abstrakt datatype har en variable V som en del af sin repræsentation, kan man ikke udefra assigne til eller aflæse fra V direkte. Det skal ske gennem en operation. Det dermed skabte operations interface udgør et indirekte niveau med hensyn til både aflæsning af og skrivning i instanser af typen. Dette indirekte niveau er meget værdifuldt. Hvis der sker ændringer i typens interne dele (i interne operationer eller i repræsentation) kan man nøjes med at ændre i eksterne operationers definition, og ikke i deres anvelse rundt omkring i programmet. Det er på denne måde, at operationsinterfacet kommer til at spille rollen af en brandmur om datatypen. Spørgsmålet melder sig, om det er muligt at angive, hvordan eksterne operationer i typen skal fungere, uden at programmere dem. Det kan man godt! På dette kursus vil vi studere to forskellige måder at specificere abstrakte datatyper. Allerede i næste forelæsning vil vi introducere den første af disse. 25
8 Bestanddele af en abstrakt datatype Op1 Op2 Op3 Op4 Operationsinterface Op5 Op6 Data Repræsentation Interne operationer datarepræsentation Man kan naturligvis opfinde mange forskellige tekstuelle såvel som grafiske notationer for abstrakte datatyper. Her er bestanddelene af en abstrakt datatype illustreret grafisk. 26
9 En abstrakt datatype og dens instanser. Instans af T Instans af T Instans af T Instans af T Objekter Relation mellen instans og ADT En abstrakt datatype T Abstrakt datatype Ovenfor er abstrakte datatyper rektangulære, medens objekter har afrundede kanter. Forholdet mellem en abstrakt datatype og dets instanser er illustreret ved en pil fra instansen til dens ADT. Instanser indeholder selvfølgelig objektets tilstand (i form af variable af konkrete, primitive typer, eller af andre abstrakte datatyper). Derimod repræsenteres objekternes operationer sædvanligvis ikke i objekterne, men i den tilhøre klasse. Dette kan lade sig gøre, idet operationer er ens for alle instanser af en given abstrakt datatype. 27
10 Hvordan finder man objekter? Hvis et program modellerer en del af virkeligheden (såsom en bank), giver denne virkelighed ofte inspiration til hvilke objekter, og dermed abstrakte datatyper, et program skal indeholde. Referent system Model system Begreber Fænomener ADT-er Objekter Virkeligheden Et program Overskriften af denne slide skal læses som "hvordan finder man på, hvilke objekter der skal indgå i et program". Pointen er, at hvis programmet, man skal skrive, behandler data, som er en del af vores virkelighed, giver begreber og fænomener (ting) i denne virkelighed inspiration til abstrakte datatyper og objekter. Hvis programmet ikke retter sig mod virkeligheden, men måske internt mod maskinen, kan det være vanskeligere at finde på, hvilke abstrakte datatyper og hermed typer af objekter, der skal indgå i programmet. 28
11 Fænomener og begreber Fænomen: En ting i den virkelige (eller "tænkte") verden med individuel eksistens. Begreb: Et begreb er karakteriseret af: Navn. Intension : mængden af egenskaber, der karakteriserer begrebet. Extension : mængden af fænomener, som er dækket (beskrevet) af begrebet. Begreb Klassificering Eksemplificering Fænomen Begreber og fænomener hører til i den virkelige verden, i referent systemet. Abstrakte datatyper og objekter dannet ud fra abstrakte datatyper hører hjemme i programmeringsverdenen. Emnet på denne slide er ikke beskrevet i bøgerne, som vi benytter på dette kursus. Hvis man ønsker at vide mere henvises der til f.eks. Jørgen Lindskov Knudsen og Kristine Stougaard Thomsen "A Conceptual Framework for Programming Languages" (DAIMI PB-192, April 1985). Klassificering/eksemplificering er let at få øje på blandt begreber og fænomener i vores hverdag. Begrebet 'gravhund' kan have 'Fido' og 'King' som eksempler; omvt klassificerer 'gravhund' de nævnte to eksempler på hunde. 29
12 Begrebsdannelse. Hvordan danner man begreber ud fra andre begreber? Begreb Aggregering Begreb Begreb Begreb Begreb Dekomponering Begreb Begreb Begreb Begreb Generalisering Begreb Begreb Specialisering Begreb De fire nævnte former for begrebsdannelse forekommer i par. Aggregering samler et antal begreber i et nyt begreb. Dekomponering løsriver allerede samlede begreber i dets bestanddele. Et generaliseret begreb betegner et bredere dække begreb det specialiserede begreb. Ekstensionen af et specialiseret begreb er en delmængde af ekstensionen af det mere generelle begreb. Intensionen af det specialiserede begreb udvides typisk med nye egenskaber; det kan også forekomme, at eksistere egenskaber redefineres (pålægges bånd) når man beskriver et specialiseret begreb. Næste slide viser eksempler på de nævnte former for begrebsdannelse. 30
13 Eksempler på begrebsdannelse Aggregering Begrebet en flyvemaskine består af Et cockpit En krop Et haleparti To vinger Et antal motorer En record record f1: T1; f2: T2; f3: T3 er en aggregering af typerne T1.. T3 Specialisering Befordringsmiddel bil båd flyvemaskine personbil bus skib sejlbåd jetjager passagerfly færge DC10 Boing747 Indbyrdes generaliserede/specialiserede begreber danner et begrebshierarki. Roden i hierarkiet er det mest generelle begreb. Hvis A->B i hierarkiet er B en specialisering af A (og A en generalisering af B). Specialisering af abstrakte datatyper er et nøgleemne i objekt-orienteret programmering. Emnet vil komme til at spille en stor rolle senere i kurset. Den programmeringssproglige mekanisme, der understøtter specialisering af abstrakte datatyper, kaldes nedarvning. I senere kapitler af disse noter vil vi komme stærkt tilbage til dette. 31
14 Objekt-orienteret udvikling af 'minibank' (1) bank-konto check-konto aktionær-konto gevinst-konto ADT bank-konto id: KontoId rentesats: real balance: kroner opret (init-beløb: kroner) hæv (beløb: kroner) indsæt (beløb: kroner) tilskriv-rente () bank-konto ADT check-konto : bank-konto antal-udskrevne-checks: integer tilskriv-rente () clear-check(beløb: kroner) check-konto Tilsvare definitioner af aktionær-konto og gevinst-konto Generaliserings/specialiserings hierarkiet af bankkonto-typer fastlægges som det første. Dette er et meget vigtigt trin i designet af et hvilket som helst objekt-orienteret program, der manipulerer bank-konti. Hver af typerne, som indgår i hierarkiet, beskrives hvad angår repræsentation og operationer. Operationerne implementeres. På denne slide er implementationen af operationerne hverken vist eller antydet. Der er benyttet en pseudo-syntax for abstrakte datatyper, som ikke er en del af noget programmeringssprog. Det eneste formål med denne slide er at illustrere principperne i objekt-orienteret udvikling, som et modstykke til den allerede viste top-down udvikling af mini-bank programmet. En abstrakt datatype svarer til record-typen for bank-konto på den tidligere viste slide. Endvidere er udvælgelse af bank-konto operationen, som vist i check-konto-transaktion (se tidligere slide) implicit tilstede via mekanismer i det objekt-orienterede sprog. Vi mangler "blot" at lave en (eller flere) hovedprogrammer med en passe brugerinteraktion på instanser af typerne. Et sådan er skitseret på næste slide. 32
15 Objekt-orienteret udvikling af 'minibank' (2) procedure mini-bank-main-program var K: bank-konto begin while not fyraften do begin indlæs en bank-konto K indlæs en transaktions-type TT case TT of opret: instantiering af et nyt bank-konto objekt hæve: indlæs beløb B; K.hæv(B); indsætte: indlæs beløb B; K.indsæt(B); tilskriv-rente: K.tilskriv-rente; clear-check: indlæs beløb B; K.clear-check(B) nedlæg: nedlæg bank-konto instans ; Hovedprogrammet vist ovenfor er et af mange mulige hovedprogrammer, som kan programmeres med basis i de viste klasse-definitioner. Flere steder i ovenståe program forekommer notationen K.operation(parameter). Denne notation kaldes "dot notation", og udtryksformen forekommer i mange objektorienterede programmeringssprog. Betydningen er at operation udføres på kontoen K med den angivne parameter. I mere konventionel Pascal-stil ville man skrive operation(k, parameter). Det er værd at bemærke, at ovennævnte case-sætning kan bruges for alle typer af bankkonti forudsat at alle typer af bankkonti har det samme sæt af operationer. (Dette er ikke altid en realistisk antagelse. I så fald må man programmere en interaktion pr. kontotype). I ovenståe program vil det være op til den objekt-orienterede omgivelse at udvælge kontotype-specifikke operationer. Når, f.eks. K.indsæt(B) kaldes i ovenståe program, udvælger systemet således den indsættelsesoperation, som er relevant på netop typen af kontoen K. Dette er en meget vigtig og karakteristisk egenskab ved objekt-orienterede programmeringsomgivelser. Senere i kurset ver vi tilbage til dette under betegnelsen "dynamisk binding". 33
Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Abstrakte klasser.
10 Nedarvning I. Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Dynamisk binding og virtuelle operationer. Decentraliseret/centraliseret
Læs mere4 Basal Objekt-orienteret Programmering I.
4 Basal Objekt-orienteret Programmering I. Klasser i forhold til abstrakte datatyper og record-typer. Variable og operationer. Klasse-interfaces. Klasser og typer. Klasse-instantiering og initialisering.
Læs mere3 Algebraisk Specifikation af Abstrakte Datatyper.
3 Algebraisk Specifikation af Abstrakte Datatyper. Specifikation kontra program. Bestanddele af en algebraisk specifikation. Klassificering af funktioner i en ADT. Systematisk definition af ligninger.
Læs mere30 Objekt-orienteret Programmering i Andre Sprog.
30 Objekt-orienteret Programmering i Andre Sprog. Abstrakte datatyper i Pascal. Abstrakte datatyper i Modula og Ada. C++ Overordnet organisering Instantiering og initialisering. Interfaces. Nedarvning.
Læs mere13 Objekt-orienteret Design.
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.
Læs mere29 Opsamling af Objekt-orienteret Programmering.
29 Opsamling af Objekt-orienteret Programmering. Bottom-up kontra top-down design. "The shopping list approach". Hvordan finder man på objekterne. Klasser og dataabstraktion. Klasse interface og interface-teknikker.
Læs mereUML til kravspecificering
UML til kravspecificering UML mini-kompendium - til brug i forbindelse med modellering af kravspecifikationer. Copyright 2006 Teknologisk Institut, IT-Udvikling Aktivitetsdiagram 2/9 Aktion Aktionsnavn
Læs mereRename og redefine. Abstrakte klasser. Dynamisk binding.
11 Nedarvning II. Enkeltnedarvning i Eiffel. Rename og redefine. Initialisering af superklasse-dele af et objekt. Interfaces til klienter og subklasser. Typesammenlignelighed og polymorfi. Abstrakte klasser.
Læs mereObjektorientering. Programkvalitet
1 PROSA-Bladet nr. 4 1993 Objektorientering = Programkvalitet? Af Finn Nordbjerg, adjunkt ved Datamatikeruddannelsen, Aalborg Handelskole 1. Indledning Objektorientering er blevet et edb-fagets mest udbredte
Læs mere22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.
22 Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned. Indsættelse i hobe. Sletning af minimalt element i hobe. Repræsentation. 327
Læs mereBasale forudsætninger. Sortering ved fletning med tre bånd, i to faser.
25 Sortering III. Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. Sortering ved fletning, med fire bånd, i én fase (balanceret fletning). Polyfase fletning med tre bånd. Generaliseret
Læs mereSide 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5
Databaser og SQL Introduktion til SQL Kap 1-5 1 Dagens gang Databaser Database begreber Mapning af klasser til relationel model Normalisering Opgaver til næste gang 2 Databasebegreber A database is a:
Læs mere26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler.
26 Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler. Hvad er programverifikation? Bevisregel for 'tom kommando'. Bevisregel for assignment. Bevisregler for selektive
Læs mereER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002
Databaser, efterår 2002 ER-modellen Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk
Læs mereVideregående Programmering for Diplom-E Noter
Videregående Programmering for Diplom-E Noter 1. Uddelegering Ét af de væsentlige principper i objektorienteret programmering er, at enhver klasse selv skal kunne "klare ærterne". Enhver klasse skal altså
Læs mereNoter til Perspektiver i Matematikken
Noter til Perspektiver i Matematikken Henrik Stetkær 25. august 2003 1 Indledning I dette kursus (Perspektiver i Matematikken) skal vi studere de hele tal og deres egenskaber. Vi lader Z betegne mængden
Læs mereÅrsagen til fejl. Erkendelse af fejl. Håndtering af fejl.
9 Fejlhåndtering Årsagen til fejl Erkelse af fejl Håndtering af fejl Fejlerkelse og -håndtering i objekt-orienterede sprog Fejlerkelse og -håndtering i Eiffel Udbredelse af fejl i Eiffel Nuanceret fejlhåndtering
Læs mereUgeseddel 4 1. marts - 8. marts
Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,
Læs merePointen med Funktioner
Pointen med Funktioner Frank Nasser 0. april 0 c 0080. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk: Dette er en
Læs mereObjekt-orienteret programmering uden klasser: Self.
Objekt-orienteret programmering uden klasser: Self. Sammenligning klasse-baseret og klasseløs programstrukturering. Basale forhold Singulære objekter Dynamisk nedarvning Variable i forhold til metoder.
Læs mere28 Algoritmedesign. Noter. PS1 -- Algoritmedesign
28 Algoritmedesign. Algoritmeskabelon for Del og Hersk. Eksempler på Del og Hersk algoritmer. Binær søgning i et ordnet array. Sortering ved fletning og Quicksort. Maksimal delsums problem. Tætteste par
Læs mereMiniprojekt i Programmering (MIP) for DAT2 og SW2, Forår 2012
Miniprojekt i Programmering (MIP) for DAT2 og SW2, Forår 2012 Opgaven er delt op i 2 dele. Læs hele opgaven igennem inden I begynder. 1. Struktur I denne opgave skal der laves et system der håndterer salg
Læs mereAppendiks 6: Universet som en matematisk struktur
Appendiks 6: Universet som en matematisk struktur En matematisk struktur er et meget abstrakt dyr, der kan defineres på følgende måde: En mængde, S, af elementer {s 1, s 2,,s n }, mellem hvilke der findes
Læs mereDynamisk programmering
Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur (struktur opbygget af et endeligt antal enkeltdele) blandt mange mulige. Eksempler:
Læs mereDesign by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater
Design by Contract Bertrand Meyer 1986 Design and Programming by Contract Michael R. Hansen & Anne Haxthausen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design
Læs mereER-modellen. Databaser, efterår 2002. Troels Andreasen. Efterår 2002
Databaser, efterår 2002 ER-modellen Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk
Læs mereÅben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser
3/10/96 Seminaret den 26/10 vil omhandle den sidste fase af analysen og de første skridt i kodegenereringen. Det drejer sig om at finde betydningen af programmet, nu hvor leksikalsk og syntaktisk analyse
Læs mereDatalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 - forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)
Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 Datastrukturer og algoritmer Henning Christiansen henning@ruc.dk http://www.ruc.dk/~henning Formål: at kunne - forstå datastrukturer og algoritmer
Læs mereObjects First with Java A Practical Introduction Using BlueJ
Objects First with Java A Practical Introduction Using BlueJ En introduktion til objektorienteret programmering for begyndere ud fra et software engineering aspekt Om at programmere i Java, ikke om værktøjet
Læs mereObjektorienteret design med arv og polymorfi:
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Objektorienteret design med arv og polymorfi: Substitutionsprincippet Composite Design Pattern Finn Nordbjerg Side 1 Objektorienteret
Læs mere1. Intoduktion. Undervisningsnoter til Øvelse i Paneldata
1 Intoduktion Før man springer ud i en øvelse om paneldata og panelmodeller, kan det selvfølgelig være rart at have en fornemmelse af, hvorfor de er så vigtige i moderne mikro-økonometri, og hvorfor de
Læs mereDatabasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002
Databaser, efterår 2002 Databasesystemer Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk
Læs mereKapitel 21: Softwarearkitektur designprincipper
Kapitel 21: Softwarearkitektur designprincipper Miriam Tang Jacob Jensen Lars Christensen Jacob Atzen Onsdag 9/3 Dagens program Definitioner Analyseværktøjer Designprocessen Raffinering Afrunding Design
Læs mereModuler i Standard ML
Moduler i Standard ML Hans Hüttel December 2001 I løbet af datalogikurset har vi haft glæde af en hel række forskellige standardmoduler som f.eks. Math, Int, Real og String. Disse moduler kan, har vi set,
Læs mereEn note om Programmering
En note om Programmering Kurt Nørmark Institut for Datalogi Aalborg Universitet normark@cs.aau.dk Resumé Denne note er en introduktion til programmering. Formålet er at give dig et indblik i hvad programmering
Læs mereLektion 3. Grundlæggende programmering i VR
Lektion 3 Grundlæggende programmering i VR Plan for i dag UML Usecase diagrammer Aktivitets diagrammer Klasse diagrammer Udforskning af forskelligt VR og andre måder at udvide virkeligheden på Cardboard
Læs mereAbstrakte datatyper C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype
Læs mere12 Nedarvning III. Noter. Multipel nedarvning. Nedarvning og assertions. PS1 -- Nedarvning III. Kurt Nørmark, Aalborg Universitet, 1994.
12 Nedarvning III. Multipel nedarvning. Nedarvning og assertions. 169 Multipel nedarvning. A C Klassen C arver egenskaberne fra både A og. A og egenskaber er umiddelbart tilgængelige i C. x A C x x er
Læs mere5 Basal Objekt-orienteret Programmering II.
5 Basal Objekt-orienteret Programmering II. Historik og sprogoversigt. Programbeskrivelse kontra programudførelse. Referencer og værdier. Skabelse af objekter i Eiffel. Features og deres klassificering
Læs mereFra Computer til Virkelighed. TPE-kursus Elektroniske Systemer P1
Fra Computer til Virkelighed TPE-kursus Elektroniske Systemer P1 Fra Computer til Virkelighed En kort introduktion til kurset Systems Engineering Projektfaser Opsamling og opgave Om kurset Mål: at I lærer
Læs mere18 Multivejstræer og B-træer.
18 Multivejstræer og B-træer. Multivejs søgetræer. Søgning i multivejssøgetræer. Pragmatisk lagring af data i multivejstræer. B-træer. Indsættelse i B-træer. Eksempel på indsættelse i B-træ. Facts om B-træer.
Læs mereSkriftlig Eksamen Algoritmer og Datastrukturer (dads)
Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Mandag den 27. maj 2002, kl. 9.00 13.00 Opgave 1 (25%) Denne opgave handler om multiplikation af positive heltal.
Læs mereIt og informationssøgning Forelæsning oktober 2006 Jakob Grue Simonsen. Klasser
It og informationssøgning Forelæsning 7 25. oktober 2006 Jakob Grue Simonsen Klasser Downey, Elkner & Meyers: Chapt. 12-14 Andersen & Simonsen: kap. 7 Vi har tidligere set, at Python tilbyder en række
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2
Læs mereUndervisningsbeskrivelse
Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin August 2009 - juni 2010 Institution HTX Sukkertoppen/Københavns Tekniske Skole Uddannelse Fag og niveau Lærer(e)
Læs mereCitation for pulished version (APA): Nordbjerg, F. E. (1993). Objektorientering = Programkvalitet? Prosabladet. De it-professionelles fagblad, (4).
Danish University Colleges Objektorientering = Programkvalitet? Nordbjerg, Finn Ebertsen Published in: Prosabladet. De it-professionelles fagblad Publication date: 1993 Document Version Pre-print: Det
Læs mereMålet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.
Merging og hashing Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester). Mål
Læs mereDatabasesystemer, forår 2005 IT Universitetet i København. Forelæsning 3: E-R modellering. 17. februar 2005. Forelæser: Rasmus Pagh
Databasesystemer, forår 2005 IT Universitetet i København Forelæsning 3: E-R modellering 17. februar 2005 Forelæser: Rasmus Pagh Forelæsningen i dag Datamodellering hvad, hvornår, hvorfor og hvordan? Business
Læs mereMetaklasser i Smalltalk.
8 Metaklasser i Smalltalk. Motivation Metodeopslag Simple metaklasser Mere udviklede metaklasser Klasse- og metaklassehierarkiet Instantiering og initialisering Skabelse af klasser og metoder Oversigt
Læs mereNoter til dm529. Jonas Nyrup. 11. november 2011
Noter til dm529 Jonas Nyrup 11. november 2011 Indhold 1 Kravdisciplinen: Kravmodellen og Indfangning af Krav 2 1.1 (ikke)-funktionelle krav...................... 2 1.2 Kravattributter...........................
Læs mere5. OPSÆTNING DOKUMENTSKABELONER 5.1 TRIN
5. OPSÆTNING DOKUMENTSKABELONER Under fanen Dok. skabeloner kan du arbejde med de skabeloner som du har i systemet, eller du kan oprette nye. I denne vejledning kigger vi på hvordan du kan tilrette selve
Læs mereBliv opdaget på Internettet! - 10 gode råd til at optimere din hjemmeside til søgemaskiner
Bliv opdaget på Internettet! - 10 gode råd til at optimere din hjemmeside til søgemaskiner Af Henrik Bro og Martin T. Hansen I har måske allerede en flot, og informativ hjemmeside. Og alle jeres kursister
Læs mere16 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.
16 Træer. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype. Gennemløb af binære træer. Træer i Eiffel. 229 Definition af et træ.
Læs mereUgeseddel 12(10.12 14.12)
Ugeseddel (..) Matematisk Programmering Niels Lauritzen..7 FORELÆSNINGER I ugen. 7. gennemgik vi algoritmer til løsning af heltalsprogrammer ved hjælp af simplex algoritmen. Dette er heltalsprogrammeringsugesedlen
Læs mereBemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.
Mysqli Webintegrator Når vi arbejder med server-side scripting ( i vort tilfælde PHP), har vi ofte behov for at kunne tilgå data, som vi opbevarer i en database. Det kan f.eks. dreje sig om nyhederne i
Læs mereMålet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.
Merging og hashing Mål Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer
Læs mereDatabase for udviklere. Jan Lund Madsen PBS10107
Database for udviklere Jan Lund Madsen PBS10107 Indhold LINQ... 3 LINQ to SQL og Arkitektur... 3 O/R designere... 5 LINQ Den store introduktion med.net 3.5 er uden tvivl LINQ(udtales link): Language-INtegrated
Læs mereVejledning til 5 muligheder for brug af cases
Vejledning til 5 muligheder for brug af cases Case-kataloget kan bruges på en række forskellige måder og skabe bredde og dybde i din undervisning i Psykisk førstehjælp. Casene kan inddrages som erstatning
Læs mere19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse.
19 Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. Sammenligning af hashtabeller og søgetræer. 281 Hashing-problemet (1). Vi ønsker at afbilde n objekter på en tabel
Læs mereKommentar fra KMS til Specifikation af Serviceinterface for Person
Kommentar fra KMS til Specifikation af Serviceinterface for Person Organisation Side Kapitel Afsnit/figur/tabel /note Type af kommentar (generel (G), redaktionel (R), teknisk (T)) Kommentar KMS-1 G Godt
Læs mere5 Ligninger og uligheder
5 Ligninger og uligheder Faglige mål Kapitlet Ligninger og uligheder tager udgangspunkt i følgende faglige mål: Regler for løsning af ligninger og uligheder: kende reglerne for ligningsløsning og uligheder
Læs merePunktmængdetopologi. Mikkel Stouby Petersen. 1. marts 2013
Punktmængdetopologi Mikkel Stouby Petersen 1. marts 2013 I kurset Matematisk Analyse 1 er et metrisk rum et af de mest grundlæggende begreber. Et metrisk rum (X, d) er en mængde X sammen med en metrik
Læs mereRettelser til Pilen ved træets rod
Rettelser til Pilen ved træets rod Hans Hüttel Pr. 12. juni 2003 Nedenstående rettelser er indsamlet af mig selv, Peter Poulsen, Martin Maach og ikke mindst Lars Schunk i løbet af foråret 2003. Simple
Læs mereGruppeteori. Michael Knudsen. 8. marts For at motivere indførelsen af gruppebegrebet begynder vi med et eksempel.
Gruppeteori Michael Knudsen 8. marts 2005 1 Motivation For at motivere indførelsen af gruppebegrebet begynder vi med et eksempel. Eksempel 1.1. Lad Z betegne mængden af de hele tal, Z = {..., 2, 1, 0,
Læs mereFunktioner og ligninger
Eleverne har både i Kolorit på mellemtrinnet og i Kolorit 7 matematik grundbog arbejdet med funktioner. I 7. klasse blev funktionsbegrebet defineret, og eleverne arbejdede med forskellige måder at beskrive
Læs mereMatema10k. Matematik for hhx C-niveau. Arbejdsark til kapitlerne i bogen
Matema10k Matematik for hhx C-niveau Arbejdsark til kapitlerne i bogen De følgende sider er arbejdsark og opgaver som kan bruges som introduktion til mange af bogens kapitler og underemner. De kan bruges
Læs mereRolf Fagerberg. Forår 2012
Forår 2012 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: DM502 og DM503 Timer: 50% forelæsninger, 50% øvelser Forudsætninger: DM502 og DM503 Eksamenform: Skriftlig eksamen: Timer: 50% forelæsninger,
Læs mere1 KlassifikationStruktur
..27 KlassifikationStruktur. KlassifikationStruktur Klassifikation er det abstrakte objekt som samler et klassifikationssystem. Klassifikation holder klassifikationssystemets metadata. Klassifikationssystemet
Læs mereFormål & Mål. Ingeniør- og naturvidenskabelig. Metodelære. Kursusgang 1 Målsætning. Kursusindhold. Introduktion til Metodelære. Indhold Kursusgang 1
Ingeniør- og naturvidenskabelig metodelære Dette kursusmateriale er udviklet af: Jesper H. Larsen Institut for Produktion Aalborg Universitet Kursusholder: Lars Peter Jensen Formål & Mål Formål: At støtte
Læs mereUndervisningsbeskrivelse
Undervisningsbeskrivelse Termin Juni 119 Institution Uddannelse Fag og niveau Lærer Hold Erhvervsskolerne Aars hhx Programmering B Patrick Bøgsted Sørensen (pbs) 2k18 Forløbsoversigt (4) Forløb 1 Forløb
Læs mereHassansalem.dk/delpin User: admin Pass: admin BACKEND
Hassansalem.dk/delpin User: admin Pass: admin BACKEND 1/10 Indledning Dette projekt er den afsluttende del af web udvikling studiet på Erhvervs Lillebælt 1. semester. Projektet er udarbejdet med Del-pin
Læs mereKursusbeskrivelse. Forarbejde. Oprettelse af en Access-database
Kursusbeskrivelse Oprettelse af en Access-database Som eksempel på en Access-database oprettes en simpelt system til administration af kurser. Access-databasen skal indeholde: et instruktørkartotek et
Læs mereSimulering af stokastiske fænomener med Excel
Simulering af stokastiske fænomener med Excel John Andersen, Læreruddannelsen i Aarhus, VIA Det kan være en ret krævende læreproces at udvikle fornemmelse for mange begreber fra sandsynlighedsregningen
Læs mereFlowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller.
Flowchart Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller. Et godt program til at tegne flowcharts med er, EDGE-Diagrammer, eller Smartdraw.
Læs mereSkriftlig eksamen, Programmer som Data Onsdag 6. januar Spørgsmål 1 (20 %): Regulære udtryk og automater
Skriftlig eksamen, Programmer som Data Onsdag 6. januar 2010 Dette eksamenssæt har 5 sider. Tjek med det samme at du har alle siderne. Eksamens varighed er 4 timer. Der er fire spørgmål. For at få fuldt
Læs mereCCS klassifikation og identifikation
UDVEKSLINGSSPECIFIKATION klassifikation og identifikation Udgivet 01.09.2017 Revision 0 Molio 2017 s 1 af 19 Forord Denne udvekslingsspecifikation beskriver, hvilke egenskaber for klassifikation og identifikation,
Læs mereUndervisningsbeskrivelse
Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin 2014-2015 Institution Rybners Tekniske Gymnasium Uddannelse Fag og niveau Lærer(e) Hold Htx Programmering
Læs mereAffine rum. a 1 u 1 + a 2 u 2 + a 3 u 3 = a 1 u 1 + (1 a 1 )( u 2 + a 3. + a 3. u 3 ) 1 a 1. Da a 2
Affine rum I denne note behandles kun rum over R. Alt kan imidlertid gennemføres på samme måde over C eller ethvert andet legeme. Et underrum U R n er karakteriseret ved at det er en delmængde som er lukket
Læs mereKursusarbejde 3 Grundlæggende Programmering
Kursusarbejde 3 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 21. november 2003 Indhold 1. Kode 2 1.1. forestillinger.h............................................. 2 1.2. forestillinger.cc.............................................
Læs mereProjekt 2.9 Sumkurver som funktionsudtryk anvendt til Lorenzkurver og Ginikoefficienter (især for B- og A-niveau)
Projekt 2.9 Sumkurver som funktionsudtryk anvendt til Lorenzkurver og Ginikoefficienter En sumkurve fremkommer ifølge definitionen, ved at vi forbinder en række punkter afsat i et koordinatsystem med rette
Læs mereOprids over grundforløbet i matematik
Oprids over grundforløbet i matematik Dette oprids er tænkt som en meget kort gennemgang af de vigtigste hovedpointer vi har gennemgået i grundforløbet i matematik. Det er en kombination af at repetere
Læs mereAfstande, skæringer og vinkler i rummet
Afstande, skæringer og vinkler i rummet Frank Villa 2. maj 202 c 2008-20. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Indhold
Læs mereclass Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.
Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:
Læs mereclass subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.
Programmering 1999 Forelæsning 11, tirsdag 5. oktober 1999 Oversigt Klasse-hierarkier: superklasser og subklasser Nedarvning Polymorfi Programmering 1999 KVL Side 11-1 Hierarkier En klasse repræsenterer
Læs mereMatricer og lineære ligningssystemer
Matricer og lineære ligningssystemer Grete Ridder Ebbesen Virum Gymnasium Indhold 1 Matricer 11 Grundlæggende begreber 1 Regning med matricer 3 13 Kvadratiske matricer og determinant 9 14 Invers matrix
Læs mereIntroduktion. Jan Brown Maj, 2010
Jan Brown Maj, 2010 Introduktion OIOXML har eksisteret som det centrale datastandardiseringsparadigme siden 2002. Til OIOXML-konceptet er der et regelsæt betegnet OIO Navngivnings- og Deignregler (NDR),
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Vinter 1998/99 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 16% Opgave 2 12% Opgave 3 10% Opgave
Læs mereProjekt 4.6 Løsning af differentialligninger ved separation af de variable
Projekt 4.6 Løsning af differentialligninger ved separation af de variable Differentialligninger af tpen d hx () hvor hx ()er en kontinuert funktion, er som nævnt blot et stamfunktionsproblem. De løses
Læs mereOversigt. Modellering.6. Begrebsmodellering. Begrebsapparat til OO. Fænomener og begreber. Objektorienteret modellering
Oversigt Modellering Begrebsmodellering, UML og Java Begrebsapparat til objektorientering Begrebsopfattelser og -modellering Strukturer: specialisering, aggregering, associering Anvendes til organisering
Læs mereAfstande, skæringer og vinkler i rummet
Afstande, skæringer og vinkler i rummet Frank Nasser 9. april 20 c 2008-20. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her.
Læs mereLektion 6. Grundlæggende programmering i VR
Lektion 6 Grundlæggende programmering i VR Plan for i dag Simpelt FPS Triggerzones og animationer C# og objekt orienteret programmering Interfaces Generics Google Cardboard Video om VRs fremtid App til
Læs mereSpecifikationsdokument for LDAP API
Nets DanID A/S Lautrupbjerg 10 DK 2750 Ballerup T +45 87 42 45 00 F +45 70 20 66 29 info@danid.dk www.nets-danid.dk CVR-nr. 30808460 Specifikationsdokument for LDAP API DanID A/S 5. juni 2014 Side 1-15
Læs mereEksempel: Skat i år 2000
Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)
Læs mereDynamisk programmering. Flere eksempler
Dynamisk programmering Flere eksempler Eksempel 1: Længste fælles delstreng Alfabet = mængde af tegn: {a,b,c,...,z}, {A,C,G,T}, {,1} Streng = sekvens x 1 x 2 x 3... x n af tegn fra et alfabet: helloworld
Læs mereComputerstøttet beregning
CSB 2009 p. 1/16 Computerstøttet beregning Lektion 1. Introduktion Martin Qvist qvist@math.aau.dk Det Ingeniør-, Natur-, og Sundhedsvidenskabelige Basisår, Aalborg Universitet, 3. februar 2009 people.math.aau.dk/
Læs mereForelæsning Uge 4 Torsdag
Forelæsning Uge 4 Torsdag Klassevariabler og klassemetoder Levetid for variabler og parametre Virkefeltsregler Projektopgave Kaninjagt Lommeregner (for MAT studerende) Klassevariabler og klassemetoder
Læs mereAnden del af kapitlet fokuserer på rentebegrebet. I læseplanen fra Fælles Mål 2009 står der direkte, at eleverne skal arbejde med
Af læseplanen for 7.-9. klassetrin fremgår det, at beskrivelse af lineære og ikke-lineære sammenhænge indgår i arbejdet med funktionsbegrebet. Det er ligeledes fremhævet, at arbejdet med funktionsbegrebet
Læs mereDynamisk programmering
Dynamisk programmering Dynamisk programmering Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Har en hvis lighed med divide-and-conquer: Begge opbygger løsninger til større problemer
Læs mereRolf Fagerberg. Forår 2015
Forår 2015 Dagens program 1 2 3 4 5 Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Deltagere: BA i Datalogi BA i Software
Læs mereKøreplan Matematik 1 - FORÅR 2005
Lineær algebra modulo n og kryptologi Køreplan 01005 Matematik 1 - FORÅR 2005 1 Introduktion Kryptologi er en ældgammel disciplin, som går flere tusinde år tilbage i tiden. Idag omfatter disciplinen mange
Læs mere