I objektorientering er det mange elementer som inngår og et av problemene er mangelen på et formelt fundament. Det finnes ingen omforent og formell mo

Størrelse: px
Begynne med side:

Download "I objektorientering er det mange elementer som inngår og et av problemene er mangelen på et formelt fundament. Det finnes ingen omforent og formell mo"

Transkript

1 Objektorienterte databaser Trond Aalberg 1 Introduksjon Dette essayet tar for seg objektorienterte databaser. Innledningsvis gies en beskrivelse av objektorientering generelt (kap. 2), og deretter diskuteres sentrale aspekter ved objektorienterte databaser med basis i pensumartiklene [8, 5, 1] (kap. 3). I kap. 4 beskrives ODMG som er en standard for objektorienterte databaser. Et annet relevant område er utviklingen mot mer objektorientering i relasjonsdatabaser og dette er kort oppsummert i kap. 5. Avslutningsvis i dette essayet diskuteres noen egne erfaringer i bruk av objektorienterte databaser med fokus på den nære koblingen mellom datalagring og programmeringsspråk (kap. 6). 2 Objektorientering Objektorientering slik vi kjenner det i informasjonsteknologien i dag, har sitt opphav i objektorientert programmering. Simula-67 er generelt ansett som det f rste objektorienterte programmeringsspråket. Etter dette har forskning i og utvikling av objektorientert programmeringsspråk fulgt to veier enten som utvikling av nye objektorienterte programmeringsspråk som Smalltalk, eller som objektorienterte utvidelser til eksisterende programmeringsspråk, f.eks. objective C og C++, eller objektorienterte varianter av Lisp som Flavors og LOOPS [6]. Objektorientering har vist seg å være en attraktiv abstraksjons og gjenbruksmekanisme og objektorientering er etterhvert overf rt til en rekke andre områder eksempelvis design og modellering, databaser og distribuerte systemer. Kort beskrevet innebærer objektorientering at data og funksjonalitet samles i objekter som representerer (mer eller mindre) naturlige abstraksjonsenheter. Et objekt er en innkapslet enhet med operasjoner som det synlige grensesnittet mens implementeringen eller realiseringen av objektets datastruktur og metoder er skjult. Enkelte skiller mellom objektbaserte systemer som kun er basert på bruken av klasser og objekter (instanser av klassene), og objektorienterte systemer som indikerer egenskaper som arv og polymorfi for å st tte gjenbruk og utvidbarhet. 1

2 I objektorientering er det mange elementer som inngår og et av problemene er mangelen på et formelt fundament. Det finnes ingen omforent og formell modell for objektorientering som definerer det eksakte kravet til egenskaper som skal til for at noe kan karakteriseres som objekt, og dette f rer til at den underliggende modellen for objektorientering varierer mellom forskjellige programmeringsspråk, eller mellom objektorientert i modellering, programmeringsspråk og database. De sentrale trekkene ved objektorientering er likevel rimelig omforent selv om den faktiske modellen som ligger i bunnen av en spesifikk bruk av objektorientering vil variere både med hensyn til hvilke objektorienterte egenskaper som st ttes og hvordan disse st ttes. De mest sentrale egenskaper i objektorientering er: Innkapsling som er det å samle relatert funksjonalitet og data i en avgrenset enhet med identitet. Innkapsling impliserer også former for skjuling (hiding) ved at data og implementasjoner kun er synlig eller aksesserbart gjennom et veldefinert grensesnitt. Forskjellige former for innkapsling forekommer f.eks. med hensyn til om attributter skal kunne aksesseres direkte, kun via objektets operasjoner eller om dette skal være et brukerdefinert valg. Klasser og instanser er skillet mellom typer av objekter og den enkelte konkrete objekt. En klasse kan defineres som fellestrekkene til en gruppe av objekter med samme egenskaper, operasjoner, relasjoner og semantikk, mens en instans er konkret objekt ihht. til denne klassen. Enkelte skiller mellom klasse og type [1] hvor type er en beskrivelse av felles karakteristika for et sett av objekter, f.eks. tilsvarende interface definisjoner i Java, abstrakte klasser i C++ eller interface-definisjoner i OMG's IDL. I relasjon til type er klasse noe av det samme, men en klasse er da mer et run-time relatert konsept som også inkluderer en implementering og mekanisme for å instansiere objekter. Arv er deling eller gjenbruk av operasjoner og attributter mellom klasser basert på hierarkiske relasjoner mellom klassene. Arv kan st ttes på forskjellige måter og det st rste skillet går mellom hvorvidt det er mulig å arve fra flere superklasser eller om en klasse kun kan arve fra en superklasse. Arv er også en måte å st tte utvidbarhet på, ved at nye klasser kan arve allerede eksisterende attributter og metoder og kun legge til nye attributter eller metoder. Polymorfi er at samme operasjon/metode kan ha forskjellig implementasjon og oppf rsel i forskjellige klasser. Ved å redefinering en generell operasjon i en subklasse kan ny oppf rsel tilpasset den arvede klassen implementeres (overriding). Polymorfi er en viktig teknikk i objekt- 2

3 orientering fordi det st tter opp under objektorientering som abstraksjonsmekanisme. Vi kan definere generell funksjonalitet (operasjoner) som deles av klassene, men som under overflaten er implementert forskjellig. Polymorfi er også viktig i forhold til gjenbruk og fleksibilitet fordi det muliggj r at oppf rsel som allerede er definert i klassehierarkiet kan reimplementeres hvis det er behov for annen oppf rsel. 3 Objektorienterte databaser Objektorienterte databaser vokste frem som en egen retning i databaseverdenen i l pet av siste halvdel av 1980-tallet. Motivasjon for denne utviklingen er flerdelt, men elementer som har drevet fram denne kan være at: I l pet av 1980-tallet ble man klar over en rekke begrensinger ved relasjonsdatabasene, f.eks. med hensyn til komplekse datastrukturer og behovet for å lagre tekst og multimedia dokumenter o.l. En objektorientert tilnærming var da en alternativ måte for å finne l sninger på dette. En generell utvikling mot objektorientering som også smittet over til databasesystemer. Objektorientering hadde mange fordeler i forhold til prosedurale programmeringsspråk noe som kunne indikere at en objektorientering for databaser hadde tilsvarende fordeler i forhold til relasjonsdatabaser. Behovet for å ha en nær korrespondanse mellom databasen og den virkelige verden, basert på den oppfatningen at en objektorientert modell er nærmere den menneskelige oppfatning av virkeligheten enn f.eks. en relasjonsmodell for data. Behovet for integrering med objektorienterte programmeringsspråk. I The Objekt-Oriented Database System Manifesto karakteriseres den f rste utvikling av objektorienterte databaser som preget av eksperimentell virksomhet og en mangel på en felles datamodell og formelt fundament [1]. Dette er kanskje karakteristisk for situasjonen også for årene etter at denne artikkel ble publisert (i 1990), selv om det riktignok har kommet standarder på dette området (f.eks. ODMG). Krav til hva systemer må st tte for å kunne karakteriseres som objektorienterte databasesystemer (OODBMS) er i henhold til The Objekt-Oriented Database System Manifesto f lgende: St tte for komplekse objekter som lister, set og arrays. St tte for objektidentitet ved at objekter har identitet uavhengig av verdien(e) objektet inneholder. 3

4 St tte for innkapsling som her indikerer to forhold hvor det ene går på separering mellom objektets spesifikasjon (grensesnitt) og implementeringen av objektet. Det andre forholdet gjelder modularitet og artikkelen presiserer at for objektorienterte databaser b r både data og operasjoner lagres i databasen. St tte for typer og/eller klasser og st tte for ekstensjoner (noe som vil si at databasen skal kunne vedlikeholde settet av alle instanser av en klasse/type i databasen). St tte for arv, men det er ikke et krav at systemet skal st tte arv fra multiple superklasser. St tte for polymorfisme i form av overriding, overloading og sen binding. Systemet skal være komputasjonelt komplett, noe som krever at et objektorientert databasesystem må st tte programmering enten via et etablert programmeringsspråk eller et egendefinert data manipuleringsspråk (DML). I tillegg til predefinerte datatyper må databasesystemet være utvidbart og st tte brukerdefinerte datatyper. Andre krav som er relatert til at en objektorientert database skal håndtere data er behovet for at data skal være persistente utover levetiden til en prosess et transparent lagringssystem som har de egenskapenes som kreves mht. indeksering, buffring, query optimalisering mm. samtidighet recovery tjeneste for sp rring som kan være ad hoc Det er også en rekke andre karakteristikker som er relevante for objektorienterte databaser. Enkelte av disse er valgfrie tilleggsegenskaper som st tte for multippel arv, distribuering, design transaksjoner og objektversjoner. Andre egenskaper som må implementeres er ikke sentrale for hvorvidt dette er en OODBMS eller ikke, men måten dette implementeres på overlates til databaseleverand r, f.eks. valg av programmerings paradigme og syntaks. Ibåde [8], [5] og [6] finner vi også diskusjoner rundt hva som b r være fundamentet for objektorienterte databaser, med varierende grad av uavhengighet i forhold til relasjonsmodell eller andre etablerte databasekonvensjoner. Viktig å fremheve er blant annet behovet for å st tte relasjoner mellom objekter som poengtert i [8]. 4

5 4 Standardisering av OODBMS (The Object Data Standard) The Object Data Management Group (ODMG) ble etablert i 1991 med det formål å utvikle standardiserte spesifikasjoner for integrering av objektorienterte databaser og objektorientert programmering. ODMG er en sammenslutning av en rekke akt rer både leverand rer av objektorienterte databaser og akademiske institusjoner som har utviklet The Object Data Standard som i 2000 ble utgitt i versjon 3.0 [3, 4]. ODMG's fokus er på portabilitet og integrering. Med portabilitet menes her at samme programvare skal kunne brukes mot flere databaseprodukter ved hjelp av standardiserte data skjema, bindinger til programmeringsspråk, data manipulering og query språk. Med integrering menes en bedre integrering mellom programmeringsspråket (fortrinnsvis objektorienterte) og databasen. ODMG adresserer ikke kun objektorienterte databaser men bruker den mer generelle kategorien ODMS (Object Data Management Systems) for å favne både ODBMS (Object Database Management Systems) og ODM (Object-to-Database Mappings). Sistnevnte kategori er produkter som oversetter objekter til andre lagringsmodeller f.eks. relasjonsdatabaser eller andre systemer. Felles for disse er at de integrerer databaseegenskaper med objektorienterte programmeringsspråk, uten bruk av en database som n yaktig gjenspeiler objektmodellen i programmet. Selve ODMG standarden består av flere komponenter; en objekt modell, objektspesifiksasjons språk for å definere objekter og for å dumpe og laste objektenes tilstand mellom database og fil, et sp rrespråk (OQL) samt bindinger til programmeringsspråkene C++, Java og Smalltalk. ODMG spesifikasjonen definerer ikke et DML/OML (data/object manipulation language) av den enkle grunn at dette blir ivaretatt av programmeringsspråkene. Dette kan sees som en skritt videre i forhold til f.eks. bruken av SQL for å endre/oppdatere databasen, ved at ODMG i stedet er basert på en felles underliggende objekt modell som gjenspeiles i bindingene til de forskjellige programmeringsspråkene. Dette burde i prinsippet si at et DML er overfl dig. 4.1 Objekt modellen ODMG's objektmodell er modellen som både objekt definisjons språket og sp rrespråket er basert på, og som utgj r en standard objektmodell for objektorienterte databaser. Objektmodellen skiller mellom objekter og literals hvor en literal er en enkeltverdi av en basis datatype. Et objekt har en unik identitet i systemet (objekt-id), og kan i tillegg ha et navn som et program kan benytte for å aksessere objektet. Navn fungerer også som aksess punkt i databasen ved at et objekter kan hentes fram via 5

6 dets navn og benyttes som startpunkt for å navigere til andre objekter via referanser fra det navngitte objektet. Livstiden til objekter kan enten være begrenset til prosessens levetid (et transient objekt) eller objektet kan overleve prosessens levetid ved at det er et persistent databaseobjekt. Objekter har struktur og kan være samlinger (collection objekter). Et atomisk objekt er et objekt som ikke er en samling men dette er ikke det samme som at objektet kun representerer en enkeltverdi. Brukerdefinerte objekter er mer eller mindre synonymt med atomiske objekter i denne modellen. Samlinger i ODMG er predefinerte konstruksjoner for set, bag, list, array og dictionary som kan inneholde objekter, både andre samlinger og atomiske, men alle objekter i en samling må være av samme type. Atomiske objekter er de objektene som brukerne definerer og de fleste av disse vil være strukturerte objekter som består av et sett egenskaper og operasjoner. Egenskaper er trad. attributter, men kan også være brukerdefinerte relasjoner. I ODMG defineres relasjoner som en egen type egenskap et objekt kan ha. ODMG's objektmodell skiller også mellom interface og klasse. Interface er en typemekanisme for å definere operasjoner til en objekttype som ikke kan instansieres. En klasse er derimot en type som definerer både operasjoner og egenskaper og kan instansieres. Dette gir også opphav til to typer arv. Behaviour er en type arv som kan være mellom grensesnitt eller mellom et grensesnitt som supertype og klasse som subtype. EXTENDS er en annen type arv hvor både operasjoner og attributter arves og både supertype og subtype må da være en klasse. For en klasse er det også mulig å definere en navngitt ekstensjon (extent) for klassen, som i realiteten er et sett-objekt som automatisk vil inneholde alle instansierte objekter av denne klassen. For en klasse med extent er det også mulig å definere et n kkelattributt basert på en eller flere attributter og/eller relasjoner. ODMG's objektmodell legger også en del andre f ringer f.eks. hvordan et databasesystem logisk skal fremstå for brukerne samt f ringer på kontroll av samtidighet ved å definere en lås-mekanisme og transaksjonshåndtering. 4.2 Objekt spesifikasjons språkene ODL og OIF ODMG definerer to objektspesifikasjons språk. Objekt Definition Language (ODL) er en syntaks for å spesifisere objekt-typer som er konforme med ODMG's objekt modell. Dette språket kan f.eks. brukes til å definere databaseskjema som er portable mellom databasesystemer som st tter ODMG standarden. Syntaksen i ODL er til en hvis grad kompatibel med OMG's Interface Definition Language (IDL) ved at ODL er en utvidelse av IDL. ODL er ikke proseduralt, men et programmeringsspråk-uavhengig og deklerativt språk tilsvarende et DDL (data definition language). Intensjonen er at ODL skal kunne brukes for å spesifisere objektstrukturen til en 6

7 database og fungere som en lingua franca for integrering. En ODL spesifikasjon kan realiseres ved hjelp av programmeringspråk som C++, Java og Smalltalk. I motsetning til ODL er OIF (Object Interchange Format) et språk/syntaks for å spesifisere instanser ved dumping og lasting av objekter mellom database og fil(er). Informasjon relevant for å beskrive tilstanden til et objekt er; objekt identifikator, type binding, attributt verdier og lenker til andre objekter. 4.3 Object query språket OQL er ODMG's sp rrespråk for objektorienterte databaser basert på ODMG's objektmodell. OQL har en syntaks som er nær SQL, men med utvidelser som st tter komplekse objekter, objekt identitet, sti-uttrykk og operasjonskall. Tilsvarende som for SQL er OQL heller ikke komputasjonelt komplett, men kun et sp rrespråk. I kontrast til SQL innholder ikke OQL operatorer for å oppdatere objekter, men baserer seg i stedet på objektenes operasjoner til dette formålet. 4.4 Bindinger til forskjellige språk ODMG definerer ikke et eget objekt manipulerings språk, men baserer seg på at objekter skal implementeres via tradisjonelle programmeringsspråk og manipuleres i applikasjoner skrevet i disse språkene. ODMG har spesifisert hvordan objektmodellen og ODL skal mappes til programmeringspråkene C++, Java og Smalltalk og i tillegg definert en syntaks for aksess til objekter og manipulering av objekter (basert på programmeringsspråkenes egen syntaks). Sammen med et sett av objekter og operasjoner for å håndtere databasesesjoner, transaksjoner og andre elementer utgj r dette et API hvor et programbibliotek (eller pakke for Java) er brukernes grensesnitt mot objektbasen. 4.5 Reell bruk av ODMG 3.0 I hvor stor grad ODMG har lykkes i å lage en standard som objektdatabase leverand rer er villige til å f lge er diskutabelt. En rekke leverand rer av objektorienterte databaser og objekt-relasjons mapping produkter st tter ODMG standarden [2], men graden av st tte varierer. OQL og ODL er generelt dårligere st ttet enn C++ og Java bindingene. 5 OORDBMS Objektorienterte databaser og relasjonsdatabaser reprepresenterer to forskjellige retninger med hensyn til datamodell. I realiteten er det kanskje 7

8 riktigere å se disse to forskjellige retningene i lys av andre aspekter. Behovet for nye egenskaper i forhold til dataorganisering og datarepresentasjon er også anerkjent i den relasjonsorienterte databasetradisjonen, men det er mer måten dette skal implementeres som er hovedelementet i diskusjonene om objektorienterte database kontra databaser som er tuftet på relasjonsmodellen. I Third-Generation Database System Manifesto [7] fra 1990 presenteres tre læresetninger for den videre utvikling mot neste generasjons databaser (tredje generasjons databaser) og en rekke konkrete forslag hvordan presserende behov best skal adresseres. Enkelte av disse er direkte tilsvar på forslag som ble promotert av objektorienterte database entusiaster, andre er mer konkrete forslag til den videre utvikling av relasjonsdatabaser: St tte for rikere objektstrukturer og regler i tillegg til tradisjonelle data behandlingstjenester. Det er behov å st tte rikere typesystemer, både via et sett av collection-typer, og muligheten for å deklarere nye brukerdefinerte typer m.m. Det er også behov for å st tte former for arv og ha muligheten for prosedyrer og metoder på databasesiden kombinert med muligheten for innkapsling. På databasesiden b r det også være mulig å definere triggere og regler som kan kontrollere constraints som applikasjonsuavhengig funksjonalitet. Tredje generasjons databaser må bygge videre på andre generasjons relasjonsdatabaser Dette impliserer å bygge videre på bruk av et h ynivå og ikkeproseduralt språk for aksess til data (SQL). Tredje generasjons databaser må være åpne for andre systemer Databasen må være tilgjengelig fra flere h ynivå språk og persistens for f.eks. objekter skal st ttes som del av runtime milj et eller ved kompilering. SQL er i kommet for å bli og b r fortsatt være aksess-språket til databaser. Spesielt viktig er SQL i et distribuert milj hvor quieries og resultatsvar er den mest egnede kommunikasjonsmekanismen mellom klienter og databasetjenere. Third-Generation Database System Manifesto er i stor grad basert på det synet at det er en naturlig utvikling fra andre generasjons databaser (relasjonsdatabaser) til å st tte egenskaper det er enighet om i begge leirer. Dette inkluderer egenskaper som rikere typesystem, funksjoner, arv og innkapsling. Den rene objektorienterte databasen som bygger på en objektorientert modell vurderes som for smal og ensidig fokusert på objekt håndtering. Det andre sentrale standpunktet er datauavhengighet og at data kun skal 8

9 aksesseres gjennom et sp rrespråk. Siden det ikke finnes noe programmeringsspråk ekvivalent til esperanto, er det mest naturlig å bygge videre på SQL. Artikkelen kan sees som en introduksjon til den utviklingen i databaseteknologi som ofte blir kalt objektorienterte relasjonsdatabaser (OORDBMS). I l pet av 1990-tallet har slike systemer blitt utviklet via proprietære l sninger som Informix Universal Server og deres Datablade teknologi, men det har også pågått et standardiseringsarbeid for neste generasjon av SQL (SQL3) som inkluderer egenskaper i tråd med flere av forslagene som ble diskutert i Third-Generation Database System Manifesto. 5.1 SQL3 SQL er et h ynivå deklerativt språk for relasjonsdatabaser som har i sin tidligste utgave ble utviklet av IBM. SQL er etter hvert blitt fellespråket for relasjonsdatabaser og ble ANSI og ISO standardisert i En revidert utgave av SQL (ofte kalt SQL2) kom i 1992 og i 1999 kom en ny versjon av standarden som også introduserte en rekke objekt inspirerte elementer 1. I hovedsak er de objektorienterte elementene i SQL3 introdusert ved utvidelser til TYPE og TABLE primitivene. Kortversjonen av objektorientering i SQL3 kan oppsummeres med: St tte for komplekse objekter ved at SQL3 muliggj r brukerdefinerte abstrakte datatype og en array-lignende type, samt at SQL3 spesifiserer datatyper for store dataobjekter enten binærdata eller for tekstdata. En rekke uttrykk er lagt til SQL3 for å gi mulighet for å spesifisere prosedural kode slik at SQL3 st tter deklarering av metode implementasjoner. Brukerdefinerte typer kan innkapsle data og operasjoner tilsvarende en klassedefinisjon. Arv kan benyttes både mellom brukerdefinerte typer og mellom tabeller. 6 Erfaringer fra bruk av objektorienterte databaser Erfaringer i bruk av objektorienterte databaser er hentet fra diverse prototyper for digitale bibliotek systemer det har vært jobbet med i gruppen for Informasjonsforvaltning ved IDI, NTNU. Erfaringene er basert på bruk av to forskjellige objektorienterte databaser: 1 Informasjon om SQL3 er i stor grad hentet fra [4] og fra diverse str -informasjon som er funnet på nettet. 9

10 O 2 som er en objektorientert database mye referert til i akademisk sammenheng siden dette var en av de f rste ODMG konforme databaser. Denne st tter både ODMG C++, Java og Smalltalk bindinger samt OQL 2. Versant som er en objektorientert database med st tte for ODMG C++ og Java bindinger, men som benytter et proprietært sp rrespråk. Årsaken til at objektorienterte databaser er valgt i disse prototypene er behovet for å gj re objektene i applikasjonene persistente på en enklest mulig måte. Databasene har vært brukt i forbindelse med lagring og manipulering av XML-baserte strukturer hvor konvertering mellom en relasjonsmodell og applikasjonenes objektmodell blir tungvint og krevende. Et annet eksempel på vår anvendelse persistents for CORBA objekter. Felles for disse protoypene er at det har vært et behov for en nær kobling mellom datalagring og programmeringsspråk, og det er dette aspektet som er fokus for denne diskusjonen. 6.1 Komplekse objekter Objektorienterte databaser har i disse prototypene vist seg å være relevant l sninger for komplekse objekter. Databasene har vært brukt til å lagre bla. hierarkiske trestrukturer som representerer XML-dokumenters elementstruktur, og det å kunne lagre eller aksessere disse objektstrukturene direkte uten å transformere frem og tilbake mellom applikasjonens objekter og en relasjonsdatabase har vært en fordel både mht. enklere kode og effektivitet. En annen viktig egenskap i denne sammenhengen har vært muligheten til å kunne navigere enkelt og effektivt i slike trestrukturen, noe som ville vært mer komplisert og antagelig vesentlig tidkrevende med en relasjonsdatabase i bunnen. 6.2 Bruk av eksterne bibliotek Datadefinering for begge disse databasene f lger samme m nster ved at objektstrukturen defineres som klassedefinisjoner i programmeringsspråket. Begge databasene er basert på at klassedefinisjonene endres for å tilf res kode som binder klassene til databasen. For C++ gj res dette ved å preprossesere klassedefinisjonene f r kompilering, mens for Java gj res dette ved å prosessere byte-koden som er generert. For enkle applikasjoner medf rer ikke dette problemer, men for mer komplekse applikasjoner som er basert på eksterne pakker eller biblioteker fra ytterligere leverand rer har dette ofte medf rt problemer. 2 Etter å ha vandret fra eier til eier i en periode besluttet siste leverand ren av denne databasen å ta den vekk fra markedet pga. manglende salg. 10

11 For java baserte applikasjoner (og bruk av Versant OODBMS) har det vist seg at når brukerdefinerte klasser som skal være persistente arver fra andre klasser, kreves det at også superklassene prosesseres og endres. Dette betyr at hvis f.eks. en implementasjon av et CORBA objekt skal være persistent så kreves det at hele hierarkiet som denne implementasjonen arver fra også må prosesseres og evt. gj res persistent. For å implementere persistente CORBA objekter har det derfor vært behov for å definere egne persistente objekter som data hentes fra og lagres til, noe som i prinsippet like gjerne kunne vært l st med en relasjonsdatabase. Et tilsvarende problem oppstod ved bruk av C++ og databasen O 2. Egendefinerte klasser som arver fra klasser definert i andre bibliotek kan i dette tilfellet enkelt gj res persistente, men attributtene som arves er ikke persistente. Dette gj r at bare deler av objektet er persistent, noe som selvsagt resulterer i at objektet reinstansierers med feil tilstand. Begge eksemplene over viser at en tett integrering mellom programmeringsspråk kan introdusere uhåndterlige problemer hvor man må implementere en l sning hvor data og applikasjonsobjekt er separert. 6.3 Skjema endringer Spesielt i en prototyp situasjon vil klassedefinisjoner endres ofte. Begge disse databasene st tter visse endringer i klassedefinisjonene, med påf lgende automatisk sletting eller endringer i databasen. Det har likevel vist seg i mange tilfeller at endringer som gj res i klassedefinisjonene f rer til inkompatibilitet mellom database og klassedefinisjon. På grunn av avhengigheten mellom database og programmeringsspråk har det da vært vanskelig å gjenbruke data i de endrede klassene, med det resultat at hele databasen må gjennoppbygges. Dette er kanskje et problem som er spesifikt knyttet til prototyping, men det indikerer likevel at h y grad av avhengighet mellom applikasjonsobjekter og datalager kan være problematisk. 6.4 Transaksjoner En av de erfaringen vi generelt har gjort med objektorienterte databaser er at persistens sjeldent er transparent. Mye av problematikken i dette er knyttet til transaksjoner. Begge databasene som har vært i bruk er basert på bruk av en objektbuffer for å forhindre at database ikke aksesseres for hvert eneste kall som gj res i applikasjonen. Databasen oppdateres med objektenes endringer når applikasjonen gj r en commit. I hovedsak kan to forskjellige commit-metoder kalles; en vanlig commit forårsaker at alle objektene i bufferen slettes noe som gj r at alle objektreferanser til persistente objekter blir ugyldige en retain variant som ikke sletter objektene i bufferen 11

12 Begge disse variantene har sine ulemper. Hvis objektene slettes må applikasjonen oppdatere referanser til persistenete objekter og hvis objektene ikke slettes vil objektene oppta plass i minnet siden det er ved commit at minne i objektbufferet frigj res. For å få samtidige applikasjonen til å fungere effektivt i forhold til databasen har det derfor vært behov for å n ye designe transaksjonerm nsteret til applikasjonen for å unngå ugyldige referanser på den ene siden og et overforbruk av minne 3. Spesielt vanskelig har dette vært kombinert med flertrådede implementasjoner. Dette forholdet gj r at persistens i liten grad er er en transparent egenskap. Det at persistens er så tett integrert med applikasjonen blir problematisk bla. fordi det er vanskelig å forutsi sekvensen av programmets utf relse, og dermed hvor det er naturlig å gj re en commit. En generell konklusjon på dette er at de fordeler en transparent persistens av applikasjonsobjekter gir i f rste omgang, fort kan oppveies av merarbeid og kompleksitet på andre områder 6.5 Konklusjon I avsnittene over er det presentert en del erfaringene fra bruk av objektorienterte databaser som i stor grad er negative og en generell konklusjon er at den tette koblingen mellom database og programmeringsspråk ikke er uten problemer. På en del andre områder har det vist seg at objektorienterte database har fordeler. Generelt er disse erfaringene alt for usystematiske og begrensede til noen endelig konklusjon, men de kan kanskje være en indikasjon på at man b r ha et pragmatisk forhold til valg av databaseteknologi. Både relasjonsdatabaser og objektorienterte databaser har sine fordeler og ulemper. For applikasjoner med komplekse og rekursive datastrukturer og behov for effektiv navigering som f.eks. i objektmodeller for XML vil objektorienterte databaser være en fordel, men denne fordelen kan fort utjevnes når det er behov for mer kontroll over interaksjonen med databasen og transaksjonene. Referanser [1] Malcolm Atkinson, François Bancilhon, David dewitt, Klaus Dittrich, David Maier, and Stanley Zdonik. The object-oriented database system manifesto. In Won Kim, Jean-Marie Nicolas, and Shojiro Nishio, editors, Deductive and Object-Oriented Databases, Proceedings of the First International Conference on Deductive and Object-Oriented Databases (DOOD'89), Kyoto Research Park, Kyoto, Japan, 4-6 December North-Holland/Elsevier Science Publishers. ISBN Dette problemet er muligens spesifikt for Java som i utgangspunktet har et h yt minneforbruk. 12

13 [2] Inc. Barry & Associates. Odmg compliance from the object storage fact books. [3] R. G. G. Cattell and Douglas K. Barry, editors. The Object Data Standard : ODMG 3.0. Morgan Kaufmann Publishers, [4] Ramez Elmasri and Shamkant B. Navathe. Fundamentals of Database Systems. Benjamin/Cummings publishing Company, [5] Won Kim. Object-oriented databases: Definitions and research directions. IEEE Transactions on Knowledge and Data Engineering, September [6] Won Kim. Research directions in object-oriented database systems. In Proceedings of the ninth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems, Nashville, TN USA, April ACM, ACM. [7] Michael Stonebraker, Lawrence A. Rowe, Bruce Lindsay, James Gray, Michael Carey, Michael Brodie, Philip Bernstein, and David Beech. Thirdgeneration database manifesto. ACM SIGMOD Record, 19(3), September [8] Stanley B. Zdonik and David Maier, editors. Readings in Object-Oriented Database Systems. The Morgan Kaufmann Series in Data Management. Systems Morgan Kaufmann Publishers Inc, San Mateo, CA, ISBN , ISSN

Distribuerte objekter og objekt-basert mellomvare

Distribuerte objekter og objekt-basert mellomvare Distribuerte objekter og objekt-basert mellomvare INF 5040 H2006 foreleser: Frank Eliassen INF5040 Frank Eliassen 1 Hvorfor objekt-basert distribuert mellomvare? Innkapsling naturlig tilnærming til utvikling

Detaljer

Distribuerte objekter og objekt-basert mellomvare

Distribuerte objekter og objekt-basert mellomvare Distribuerte objekter og objekt-basert mellomvare INF 5040 H2004 foreleser: Frank Eliassen Frank Eliassen, SRL & Ifi/UiO 1 Hvorfor objekt-basert distribuert mellomvare?! Innkapsling " naturlig tilnærming

Detaljer

Distribuerte objekter og objekt-basert mellomvare

Distribuerte objekter og objekt-basert mellomvare Distribuerte objekter og objekt-basert mellomvare INF5040 foreleser: Olav Lysne Frank Eliassen, SRL & Ifi/UiO 1 Hvorfor objekt-basert distribuert mellomvare? Innkapsling naturlig tilnærming til utvikling

Detaljer

CORBA Component Model (CCM)

CORBA Component Model (CCM) CORBA Component Model (CCM) INF5040 Høst 2005 Erlend Birkedal Jan Erik Johnsen Tore Ottersen Løkkeberg Denne presentasjonen CORBA Svakheter ved CORBA Object Model Komponenter CORBA Component Model Hva

Detaljer

Databaser & objektorientering.

Databaser & objektorientering. Databaser & objektorientering. Noen grunnbegreper innen objektorientering. Klasser og forekomster klasser beskriver strukturen for noe. Beskrivelsen inneholder: et navn attributter /egenskaper / tilstander

Detaljer

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser INF1300 Introduksjon til databaser Data (transiente, persistente) DBMS databser informasjon interesseområdet informasjonsmodeller informasjonssystemer Transiente og persistente data Når vi programmerer,

Detaljer

Introduksjon til fagfeltet

Introduksjon til fagfeltet LC238D http://www.aitel.hist.no/fag/_dmdb/ Introduksjon til fagfeltet Datafiler side 2 Databasesystemer side 3-5 Databasearkitektur ANSI/SPARC side 6-7 Datamodeller side 8 Flerbruker databasesystem side

Detaljer

Model Driven Architecture (MDA) Interpretasjon og kritikk

Model Driven Architecture (MDA) Interpretasjon og kritikk Model Driven Architecture (MDA) Interpretasjon og kritikk Ragnhild Kobro Runde (Ifi, UiO) Veileder: Ketil Stølen (Ifi/SINTEF) Stuntlunsj SINTEF Oversikt Bakgrunn/utgangspunkt for presentasjonen MDA stuntlunsj

Detaljer

Informasjonssystemer, DBMSer og databaser

Informasjonssystemer, DBMSer og databaser UNIVERSITETET I OSLO Informasjonssystemer, DBMSer og databaser Institutt for Informatikk INF3100-21.1.2008 Ellen Munthe-Kaas 1 Interesseområdet (UoD = Universe of Discourse) Interesseområdet er en del

Detaljer

AlgDat 10. Forelesning 2. Gunnar Misund

AlgDat 10. Forelesning 2. Gunnar Misund AlgDat 10 Forelesning 2 Oversikt Java repetisjon IDE eller teksteditor + kommandolinje? Java Collections and Generics Programvareutvikling En mengde mer eller mindre veldefinerte metoder (software engineering):

Detaljer

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: Data, databaser og databasehånteringssystemer Data versus informasjon Beskrivelse av interesseområdet 100%-prinsippet og det begrepsmessige

Detaljer

AlgDat 12. Forelesning 2. Gunnar Misund

AlgDat 12. Forelesning 2. Gunnar Misund AlgDat 12 Forelesning 2 Forrige forelesning Følg med på hiof.no/algdat, ikke minst beskjedsida! Algdat: Fundamentalt, klassisk, morsomt,...krevende :) Pensum: Forelesningene, oppgavene (pluss deler av

Detaljer

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser INF1300 Introduksjon til databaser INF1300 Introduksjon til databaser INF1300 Introduksjon til databaser INF1300 Introduksjon til databaser databaser data (transiente, persistente) informasjon interesseområdet

Detaljer

Kap3: Klassemodellering

Kap3: Klassemodellering Kap3: Klassemodellering I dag: Litt repetisjon fra sist (innledende om klassemodellen) Deretter egentlig litt mer repetisjon, men nå fra intro- Felt-/Instansvariabler og kurset i Java: Klasser og Objekt,

Detaljer

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus // class Bygning Oppgave 1 System.out.println( Bolighus ); // class Bolighus Hva blir utskriften fra dette programmet? class Blokk extends Bolighus{ // class Blokk IN105subclassesII-1 Eksekveringsrekkefølgen

Detaljer

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; } Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: Data, databaser og databasehåndteringssystemer Data versus informasjon Beskrivelse av interesseområdet Begreper og representasjon av

Detaljer

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme INF2810: Funksjonell Programmering En Scheme-evaluator i Scheme Erik Velldal Universitetet i Oslo 27. april 2017 Tema 2 Forrige forelesning Strømmer og utsatt evaluering Kort om makroer I dag Kap. 4 Metasirkulær

Detaljer

Overordnet beskrivelse

Overordnet beskrivelse N O R K A R T G E O S E R V I C E A S Desember 2010 INNHOLD 1 INTRODUKSJON... 4 2 NAVNETJENESTE... 5 3 PORTAL... 6 4 OBJEKTKATALOG... 6 5 ARKIV... 7 6 ADMINISTRASJONSPROGRAMMER... 8 7 TILGANGSAPI... 8

Detaljer

Læringsmål for forelesningen

Læringsmål for forelesningen Læringsmål for forelesningen Objektorientering Abstrakte klasser og grensesnitt, redefinering av metoder Java-programmering Arv og bruk av abstrakte klasser Eclipse Undersøke instanser i Eclipse 1 Dagens

Detaljer

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Repitisjonskurs. Arv, Subklasser og Grensesnitt Repitisjonskurs Arv, Subklasser og Grensesnitt Subklasser Klasser i OO-programmering representerer typer av objekter som deler et sett med egenskaper. En subklasse har egenskapene til en klasse + ett sett

Detaljer

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

Arv. Book book1 = new Book(); book1. title = Sofies verden class Book { String title; } class Dictiona ry extends Book { Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

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

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk Innhold uke 7 Objektorientert programmering i Python: Introduksjon IN1000 Høst 2017 uke 7 Siri Moe Jensen Lite tilbakeblikk: Prosedyrer og funksjoner Objektorientert programmering Introduksjon: Hvorfor,

Detaljer

Oppsummering. Thomas Lohne Aanes Thomas Amble

Oppsummering. Thomas Lohne Aanes Thomas Amble Oppsummering Thomas Lohne Aanes Thomas Amble 14.11.04 Kapittel 2: Data Modell Mål: Data som skal brukes av applikasjonen blir spesifisert på en formell og likevel intuitiv måte. Resultat: Vi får et konseptuelt

Detaljer

Generiske mekanismer i statisk typede programmeringsspråk

Generiske mekanismer i statisk typede programmeringsspråk Generiske mekanismer i statisk typede programmeringsspråk Dette stoffet er Pensum, og det er bare beskrevet her Mye her er nok kjent stoff for mange INF5110 7. mai 2013 Stein Krogdahl 1 Hvordan kunne skrive

Detaljer

2. HVA ER EN KOMPONENT?

2. HVA ER EN KOMPONENT? Innholdsfortegnelse 1. INTRODUKSJON 3 2. HVA ER EN KOMPONENT? 3 2.1. Litt av historien 3 2.2. UML og komponenter 5 2.3. Noen definisjoner 5 REFERANSER 7 1. Introduksjon Komponenter og komponentbasert systemutvikling

Detaljer

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

Hvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon. Læringsmål uke 7. Undervisning og pensum IN1000 Objektorientert programmering i Python: Introduksjon IN1000 Høst 2019 uke 7 Siri Moe Jensen Læringsmål uke 7 Kjenne til motivasjon og bakgrunn for objektorientert programmering Kunne definere en klasse,

Detaljer

Hvorfor objektorientert programmering?

Hvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon IN1000 Høst 2019 uke 7 Siri Moe Jensen Læringsmål uke 7 Kjenne til motivasjon og bakgrunn for objektorientert programmering Kunne definere en klasse,

Detaljer

Kapittel 7: Mer om arv

Kapittel 7: Mer om arv Kapittel 7: Mer om arv Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk Forlag,

Detaljer

Prosjektoppgave: Bildedatabase. TDT4145 Datamodellering og Databasesystemer. Våren 2007

Prosjektoppgave: Bildedatabase. TDT4145 Datamodellering og Databasesystemer. Våren 2007 Prosjektoppgave: Bildedatabase TDT4145 Datamodellering og Databasesystemer Våren 2007 NB! Kun for de som ikke tar fellesprosjektet. Innledning I løpet av de siste årene har det blitt stadig mer vanlig

Detaljer

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy Kapittel 13 Advanced Hypertext Implementation Martin Lie Ole Kristian Heggøy 08.11.04 Forbedring av arkitektur Problem med alt i ett -løsning: Spredning av forretningslogikk. Avhengighet mellom presentasjonssider

Detaljer

Geosynkronisering. Nasjonale tjenester. Kommuner GeoNorge / andre portaler. Metadata. Visning. Nedlasting. Deltakende virskomhet. Geosynkronise ring

Geosynkronisering. Nasjonale tjenester. Kommuner GeoNorge / andre portaler. Metadata. Visning. Nedlasting. Deltakende virskomhet. Geosynkronise ring Geosynkronisering Geosynkronise ring Kommuner GeoNorge / andre portaler Nasjonale tjenester Metadata Visning Nedlasting Deltakende virskomhet 1 Hva er utviklet til nå? Geosynkronise ring Spesifikasjon

Detaljer

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

Læringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop Læringsmål uke 7 Objektorientert programmering i Python: Introduksjon IN1000 Høst 2018 uke 7 Siri Moe Jensen Kjenne til motivasjon og bakgrunn for objektorientert programmering Kunne definere en klasse,

Detaljer

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme INF2810: Funksjonell Programmering En Scheme-evaluator i Scheme Erik Velldal Universitetet i Oslo 19. april 2016 Tema 2 Forrige uke Strømmer og utsatt evaluering Kort om makroer I dag Kap. 4 Metasirkulær

Detaljer

1. SQL datadefinisjon og manipulering

1. SQL datadefinisjon og manipulering Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag SQL datadefinisjon og manipulering Tore Mallaug 7.10.2008 Lærestoffet er utviklet for faget Databaser 1. SQL datadefinisjon og manipulering

Detaljer

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

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering Etter uke 6 skal du Kjenne til motivasjonen for objektorientert programmering Introduksjon til objektorientert programmering INF1001 Høst 2016 Forstå hva en klasse er, og forskjellen på klasse og objekt

Detaljer

Historisk tidslinje. Resource Description Framework (RDF) Web Ontology Language (OWL) Object-Role Modeling (ORM) Entity Relationship Model (ER)

Historisk tidslinje. Resource Description Framework (RDF) Web Ontology Language (OWL) Object-Role Modeling (ORM) Entity Relationship Model (ER) Historisk tidslinje Natural Language Information Analysis Method (NIAM) 1960 1970 Object-Role Modeling (ORM) Entity Relationship Model (ER) 1980 Unified Modeling Language (UML) 1990 Resource Description

Detaljer

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

Etter uke 9 skal du. Introduksjon til objektorientert programmering. Innhold. Klasser som abstraksjoner Etter uke 9 skal du Introduksjon til objektorientert programmering INF1001 Høst 2016 Uke 9 Kunne designe og implementere en programstruktur med flere klasser Kunne etablere og manipulere objekter i (sammensatte)

Detaljer

UNIVERSITETET I OSLO. Objektdatabaser. ODMGs objektmodell og ODL (Object Definition Language)

UNIVERSITETET I OSLO. Objektdatabaser. ODMGs objektmodell og ODL (Object Definition Language) UNIVERSITETET I OSLO Objektdatabaser ODMGs objektmodell og ODL (Object Definition Language) INF3100 19.2.2008 Ragnar Normann Institutt for Informatikk 1 Databaser vs objektorientering Det er en inherent

Detaljer

Databasesystemer, oversikt

Databasesystemer, oversikt Databasesystemer, oversikt Evgenij Thorstensen V18 Evgenij Thorstensen Databasesystemer, oversikt V18 1 / 23 Kurset Databasesystemer og databaser. Databaser er abstrakte objekter (datastrukturer, spørrespråk).

Detaljer

ADDML. Archival Data Description Markup Language. Generell del. Versjon PA 0.07 Sist oppdatert: TPD. ADDML_8_2.doc 03/03/2011 1(12)

ADDML. Archival Data Description Markup Language. Generell del. Versjon PA 0.07 Sist oppdatert: TPD. ADDML_8_2.doc 03/03/2011 1(12) ADDML Archival Data Description Markup Language Generell del Versjon PA 0.07 Sist oppdatert: 2010-09-16 TPD ADDML_8_2.doc 03/03/2011 1(12) Innledning... 4 Mål... 4 Historie... 4 Hvordan benytte ADDML...

Detaljer

Semantisk Analyse del III

Semantisk Analyse del III Semantisk Analyse del III Typesjekking Kapittel 6.4 08.03.2013 1 Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem

Detaljer

DRI2001 h04 - Forelesning Systemutvikling og nettsteder

DRI2001 h04 - Forelesning Systemutvikling og nettsteder Systemutvikling utvikling av offentlig nettsteder DRI2001 forelesning 20.10 Litt om eksperimentell systemutvikling og prototyping Systemutviklingsprosessene og utvikling av [offentlige] nettsteder Fasene

Detaljer

Objektdatabaser. ODMGs objektmodell og ODL (Object Definition Language) g Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Objektdatabaser. ODMGs objektmodell og ODL (Object Definition Language) g Institutt for Informatikk. INF Ellen Munthe-Kaas 1 UNIVERSITETET IOSLO Objektdatabaser ODMGs objektmodell og ODL (Object Definition Language) g Institutt for Informatikk INF3100 24.2.2009 Ellen Munthe-Kaas 1 Databaser vs objektorientering Det er en inherent

Detaljer

Rammeverk for tverrsektoriell tjenesteutvikling. ST 1.1 og ST 1.2 Enhetlig tverrsektoriell tilnærming

Rammeverk for tverrsektoriell tjenesteutvikling. ST 1.1 og ST 1.2 Enhetlig tverrsektoriell tilnærming Rammeverk for tverrsektoriell tjenesteutvikling ST 1.1 og ST 1.2 Enhetlig tverrsektoriell tilnærming Brukerne av tjenestene får ikke dekket behovene sine Brukerne opplever tungvinte tjenester Innbyggerne

Detaljer

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) Funksjonelle språk (Ghezzi&Jazayeri kap.7 frem til 7.4) Neste uke: ML Ark 1 av 16 Forelesning 16.10.2000 Parameteroverføring

Detaljer

Distributed object architecture

Distributed object architecture Forelesning IMT2243 6. April 2010 Tema: forts. arkitektur og design av programvare Prosjektstatus Programvarearkitektur Oppsummering fra før påske Distribuerte objektarkitektur MDA - Model Driven Architecture

Detaljer

Oblig 2, SLI250 Et kortfattet analyse og designdokument for skifteregister på nett

Oblig 2, SLI250 Et kortfattet analyse og designdokument for skifteregister på nett Oblig 2, SLI250 Et kortfattet analyse og designdokument for register på nett Harald Askestad haraldas@uio-pop.uio.no 2. oktober 2000 Innhold Innledning 2 2 Systemdefinisjon 2 3 Objektmodell 2 4 Funksjoner

Detaljer

Læreplan i informasjonsteknologi - programfag i studiespesialiserende utdanningsprogram

Læreplan i informasjonsteknologi - programfag i studiespesialiserende utdanningsprogram Læreplan i informasjonsteknologi - programfag i studiespesialiserende utdanningsprogram Fastsatt som forskrift av Utdanningsdirektoratet 3. april 2006 etter delegasjon i brev 26. september 2005 fra Utdannings-

Detaljer

Innhold Forord Innledning Kapittel 1 Introduksjon til databaser og databasesystem

Innhold Forord Innledning Kapittel 1 Introduksjon til databaser og databasesystem Innhold Forord....................................................... 5 Innledning.................................................... 15 Databaser som basis i grunnopplæringen....................... 15

Detaljer

ITGK - H2010, Matlab. Dagens tema : Teori - Databaser

ITGK - H2010, Matlab. Dagens tema : Teori - Databaser 1 ITGK - H2010, Matlab Dagens tema : Teori - Databaser 2 I dag Teori: Databaser Bok: 8.1 8.2 (8.1-8.4 i gamle bøker) Læringsmål Lære det grunnleggende om databaser Lære det grunnleggende om databasedesign

Detaljer

Workshop NGIS API. Lars Eggan, Norconsult Informasjonssystemer desember 2014

Workshop NGIS API. Lars Eggan, Norconsult Informasjonssystemer desember 2014 Workshop NGIS API Lars Eggan, Norconsult Informasjonssystemer desember 2014 1 NGIS i WinMap NGIS-klient Hente datasett fra en NGIS portal Oppdatere portalen med endringer gjort lokalt Spesiallaget funksjonalitet

Detaljer

INF2810: Funksjonell Programmering. En metasirkulær evaluator

INF2810: Funksjonell Programmering. En metasirkulær evaluator INF2810: Funksjonell Programmering En metasirkulær evaluator Stephan Oepen & Erik Velldal Universitetet i Oslo 26. april 2013 Tema 2 Forrige uke Strømmer og utsatt evaluering Memoisering Kort om makroer

Detaljer

OM DATABASER DATABASESYSTEMER

OM DATABASER DATABASESYSTEMER OM DATABASER DATABASESYSTEMER Begrepet database brukes på flere måter, og det er ikke uvanlig å bruke det for å angi en total samling av data (i dette tilfellet lagrede opplysninger) uavhengig av hvordan

Detaljer

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl. 09.00 13.

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl. 09.00 13. BOKMÅL Side 1 av 5 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap KONTERINGSEKSAMEN

Detaljer

Applikasjonsutvikling med databaser

Applikasjonsutvikling med databaser Applikasjonsutvikling med databaser Lars Vidar Magnusson October 12, 2011 Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 1 / 24 Applikasjonsutvikling med databaser Databaser tilbyr

Detaljer

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2 INF2810: Funksjonell Programmering En Scheme-evaluator i Scheme, del 2 Erik Velldal Universitetet i Oslo 4. mai 2017 Tema 2 Forrige uke SICP 4.1. Structure and interpretation of computer programs Metacircular

Detaljer

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs BOKMÅL Side 1 av 7 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap KONTINUASJONSEKSAMEN

Detaljer

INF2810: Funksjonell Programmering. Tilstand og verditilordning

INF2810: Funksjonell Programmering. Tilstand og verditilordning INF2810: Funksjonell Programmering Tilstand og verditilordning Stephan Oepen Universitetet i Oslo 2. mars 2017 Forrige gang 2 I dag 3 Vi blar om til kapittel 3 i SICP. Tilstand og verditilordning. Destruktive

Detaljer

Kurskategori 3: Design av IKT- systemer. Normalt vår, 14/15: høst

Kurskategori 3: Design av IKT- systemer. Normalt vår, 14/15: høst Kurskategori 3: Design av IKT- systemer Normalt vår, 14/15: høst Gjennom kurs i denne kategorien skal studentene opparbeide kunnskaper om og ferdigheter i å lage nettsteder, utvikle programvare og tilrettelegge

Detaljer

INF2810: Funksjonell Programmering. En metasirkulær evaluator

INF2810: Funksjonell Programmering. En metasirkulær evaluator INF2810: Funksjonell Programmering En metasirkulær evaluator Stephan Oepen & Erik Velldal Universitetet i Oslo 26. april 2013 Tema 2 Forrige uke Strømmer og utsatt evaluering Memoisering Kort om makroer

Detaljer

INF2810: Funksjonell Programmering. Tilstand og verditilordning

INF2810: Funksjonell Programmering. Tilstand og verditilordning INF2810: Funksjonell Programmering Tilstand og verditilordning Erik Velldal Universitetet i Oslo 1. mars 2018 Forrige gang 2 Kode som trær 3 Ved evaluering oversettes kildekoden i et språk først til et

Detaljer

En ny generasjon standarder for bygging av geografisk infrastruktur Modellering av tjenester

En ny generasjon standarder for bygging av geografisk infrastruktur Modellering av tjenester En ny generasjon standarder for bygging av geografisk infrastruktur Modellering av tjenester Kurs i standarder, Oslo, 13.juni Modellering av tjenester Innhold Kort om tjenester og interoperabilitet NS-EN

Detaljer

INF2810: Funksjonell Programmering. Tilstand og verditilordning

INF2810: Funksjonell Programmering. Tilstand og verditilordning INF2810: Funksjonell programmering INF2810: Funksjonell Programmering Tilstand og verditilordning Erik Velldal Universitetet i Oslo 26. februar 2015 Forrige gang 2 I dag Vi blar om til kapittel 3 i SICP.

Detaljer

Moderne Funksjonell Programmering i Lisp

Moderne Funksjonell Programmering i Lisp Moderne Funksjonell Programmering i Lisp Lars Tveito 11. mai, 2017 Institutt for Informatikk, University of Oslo Introduksjon Abstract Vi skal utforske programmeringsspråket Clojure, en moderne Lisp-dialekt.

Detaljer

SOSI standard - versjon 4.0 1 Del 1: Introduksjon. DEL 1: Introduksjon

SOSI standard - versjon 4.0 1 Del 1: Introduksjon. DEL 1: Introduksjon SOSI standard - versjon 4.0 1 DEL 1: Introduksjon SOSI standard - versjon 4.0 2 DEL 1: Introduksjon 0 Innledning.....3 1 Endringslogg fra SOSI-versjon 3.4......4 2 Organisering......5 2.1 Målsetting...5

Detaljer

Fakultet for informasjonsteknologi, Kontinuasjonsløsning på SIF8037 Distribuerte systemer og ytelsesvurdering (Distribuerte systemer kun)

Fakultet for informasjonsteknologi, Kontinuasjonsløsning på SIF8037 Distribuerte systemer og ytelsesvurdering (Distribuerte systemer kun) Side 1 av 5 NTNU Norges teknisk naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap Kontinuasjonsløsning

Detaljer

INF3110 Programmeringsspråk. Dagens tema. Typer (Kapittel 3 frem til ) Innføring i ML (Kapittel & ML-kompendiet.) 1/19

INF3110 Programmeringsspråk. Dagens tema. Typer (Kapittel 3 frem til ) Innføring i ML (Kapittel & ML-kompendiet.) 1/19 Dagens tema Typer (Kapittel 3 frem til 3.3.1.) Innføring i ML (Kapittel 7.4.3 & ML-kompendiet.) 1/19 Forelesning 2 27.8.2003 Typer En (data-)type består av: en mengde verdier en mengde operasjoner man

Detaljer

Typer. 1 Type: boolean. 2 Verdimengde: {true, false} 3 Operatorer: NOT, AND, OR... 1/19. Forelesning Forelesning

Typer. 1 Type: boolean. 2 Verdimengde: {true, false} 3 Operatorer: NOT, AND, OR... 1/19. Forelesning Forelesning Dagens tema Typer (Kapittel 3 frem til 331) Innføring i ML (Kapittel 743 & ML-kompendiet) Typer En (data-)type består av: en mengde verdier en mengde operasjoner man kan anvende på disse verdiene Eksempel:

Detaljer

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2 INF2810: Funksjonell Programmering En Scheme-evaluator i Scheme, del 2 Erik Velldal Universitetet i Oslo 4. mai 2017 Tema 2 Forrige uke SICP 4.1. Structure and interpretation of computer programs Metacircular

Detaljer

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2 INF2810: Funksjonell programmering INF2810: Funksjonell Programmering En Scheme-evaluator i Scheme, del 2 Erik Velldal Universitetet i Oslo 7. mai 2015 Tema Forrige uke SICP 4.1. Structure and interpretation

Detaljer

Objective-C. Ina Carine Aarvig

Objective-C. Ina Carine Aarvig Objective-C Ina Carine Aarvig 16.10.2011 Innhold 1 Objective-Cs historie 4 1.1 NeXT og Steve Jobs........................ 4 1.2 Apple................................ 4 2 Xcode 5 3 Objective-C 6 3.1 Objekter,

Detaljer

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen Innhold uke 10 Hva bruker vi klasser til? Objektorientert programmering i Python IN1000 Høst 2018 uke 10 Siri Moe Jensen Noen sentrale datastrukturer for programmering lenkede lister trær grafer Eksempler:

Detaljer

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

23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert. Grunnkurs i objektorientert programmering Introduksjon til objektorientert programmering INF1000 Høst 2015 Siri Moe Jensen INF1000 - Høst 2015 uke 5 1 Siri Moe Jensen INF1000 - Høst 2015 uke 5 2 Kristen

Detaljer

Konfigurasjonsstyring. INF1050: Gjennomgang, uke 11

Konfigurasjonsstyring. INF1050: Gjennomgang, uke 11 Konfigurasjonsstyring INF1050: Gjennomgang, uke 11 Kompetansemål Konfigurasjonsstyring Hva og hvorfor? I en smidig sammenheng Endringshåndtering Versjonhåndtering Systembygging Release -håndtering Del

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF2810 Eksamensdag: Fredag 5. juni 2015 Tid for eksamen: 14:30 (4 timer) Oppgavesettet er på 4 sider (ikke medregnet denne siden)

Detaljer

CORBA Objektmodell (Java RMI)

CORBA Objektmodell (Java RMI) CORBA Objektmodell (Java RMI) IN-ODP høst 2002 foreleser: Frank Eliassen Frank Eliassen, SRL & Ifi/UiO 1 OMG & CORBA Object Mangement Group (OMG): non-profit organisasjon med over 800 medlemsorganisasjoner

Detaljer

Datatyper og typesjekking

Datatyper og typesjekking Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem i kompilatoren? Gjennomgang av noen typer Grunntyper Type-konstruktører

Detaljer

Databaser. Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen

Databaser. Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen Databaser Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen Tema for dagen Hva er relasjonsalgebra? Seleksjon Projeksjon Produkt Indre forening Ytterforening Settoperasjoner: union, snitt, differanse

Detaljer

Fakultet for informasjonsteknologi, Løsning på kontinuasjon i TDT4190 Distribuerte systemer Onsdag 4. august 2004, 0900 1300

Fakultet for informasjonsteknologi, Løsning på kontinuasjon i TDT4190 Distribuerte systemer Onsdag 4. august 2004, 0900 1300 Side 1 av 9 NTNU Norges teknisk naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap Løsning på kontinuasjon

Detaljer

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering INF2810: Funksjonell Programmering Høyereordens prosedyrer, lambda og lokale variabler Erik Velldal Universitetet i Oslo 9. februar 2017 Tema 2 Forrige uke Lister og listerekursjon quote Høyereordens prosedyrer

Detaljer

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

Hva gjøres i design? 19. september 2002, Tore Berg Hansen, TISIP Hva gjøres i design? 19. september 2002, Tore Berg Hansen, TISIP Kursleksjonene er forfatters eiendom. Som kursdeltaker kan du fritt bruke leksjonene til eget personlig bruk. Kursdeltakere som ønsker å

Detaljer

Generiske mekanismer i statisk typede programmeringsspråk INF5110 April, 2009

Generiske mekanismer i statisk typede programmeringsspråk INF5110 April, 2009 Generiske mekanismer i statisk typede programmeringsspråk INF5110 April, 2009 Torsdag 30. april (skattedagen!): Mer om generering av maskinkode (Ferdig oppkopiert hefte deles ut) Tirsdag 5. mai: Mer av

Detaljer

Databaser: Relasjonsmodellen, del I

Databaser: Relasjonsmodellen, del I LC238D http://www.aitel.hist.no/fag/_dmdb/ Databaser: Relasjonsmodellen, del I En relasjon er en matematisk mengde side 2 Egenskaper ved relasjoner side 3 Entitetsintegritet side 4-5 Referanseintegritet

Detaljer

INF2810: Funksjonell Programmering. Tilstand og verditilordning

INF2810: Funksjonell Programmering. Tilstand og verditilordning INF2810: Funksjonell Programmering Tilstand og verditilordning Stephan Oepen Universitetet i Oslo 8. mars 2016 Forrige gang 2 I dag 3 Vi blar om til kapittel 3 i SICP. Tilstand og verditilordning. Destruktive

Detaljer

De aktuelle er altså databasene 1 til 3. I praksis brukes mest 2 og 3. Vi skal likevel se på OODBMS også, siden det må antas å være kommende.

De aktuelle er altså databasene 1 til 3. I praksis brukes mest 2 og 3. Vi skal likevel se på OODBMS også, siden det må antas å være kommende. OO & DBMS Innledning Når man deklarerer en kunde Private Kunde kunde = new Kund(); så legges objektet i RAM. Scope er begrenset til referansens (variabelens) scope og levetiden til sesjonen. Objektet blir

Detaljer

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering INF2810: Funksjonell Programmering Høyereordens prosedyrer, lambda og lokale variabler Erik Velldal Universitetet i Oslo 9. februar 2017 Tema 2 Forrige uke Lister og listerekursjon quote Høyereordens prosedyrer

Detaljer

Parallelle og distribuerte databaser del III

Parallelle og distribuerte databaser del III UNIVERSITETET I OSLO Parallelle og distribuerte databaser del III NoSQL og alternative datamodeller Institutt for Informatikk INF3100 20.4.2015 Ellen Munthe-Kaas 1 NoSQL NoSQL er et paraplybegrep som omfatter

Detaljer

Generell metode. v/sigve Espeland, IKA Rogaland

Generell metode. v/sigve Espeland, IKA Rogaland Generell metode v/sigve Espeland, IKA Rogaland Utfordringen Hva med systemer som av bruk, struktur og innhold må betraktes som earkiv, men som ikke er iht. NOARK-kravene? Ofte fagsystem levert og installert

Detaljer

Message Oriented Middleware (MOM) Thomas Filip Andresen Arild Berggren Eivind Bøhn

Message Oriented Middleware (MOM) Thomas Filip Andresen Arild Berggren Eivind Bøhn Message Oriented Middleware (MOM) Thomas Filip Andresen Arild Berggren Eivind Bøhn Agenda Hva er MOM? Hva er JMS? Hvordan kan MOM brukes i praksis? Hva er MOM? Message Oriented Middleware Sende meldinger

Detaljer

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL. 09.00 13.00

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL. 09.00 13.00 Side 1 av 6 NTNU Norges teknisk-naturvitenskapelige universitet BOKMÅL Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap EKSAMEN I FAG

Detaljer

Frokostseminar for arkitektfaget SAMSPILL MELLOM BYGG OG TERRENG - GIS-BIM 9. juni 2010

Frokostseminar for arkitektfaget SAMSPILL MELLOM BYGG OG TERRENG - GIS-BIM 9. juni 2010 Frokostseminarer SAMSPILL MELLOM BYGG OG TERRENG GIS-BIM Program 08:30 Velkomst og introduksjon til buildingsmart standarder Steen Sunesen, buildingsmart Norge. 08:45 Prosess for GIS-BIM Resultat av utvikling

Detaljer

Operativsystemer og grensesnitt

Operativsystemer og grensesnitt Operativsystemer og grensesnitt Ulike måter å bruke OS'et på Application Program Interface (API) Applikasjoner (ofte C-programmer) som f.eks. emacs, som bruker tjenestene i OS ved å kalle på funksjoner

Detaljer

INF212 - Databaseteori. Kursinnhold

INF212 - Databaseteori. Kursinnhold INF212 - Databaseteori Forelesere: Naci Akkök Ellen Munthe-Kaas Mål: Kjennskap til databasesystemer Virkemåte Implementasjon Teoretiske og praktiske problemer INF212 v2003 1 Kursinnhold Databasedesign

Detaljer

FORORD...III KAPITTELOVERSIKT... VI INNHOLDSFORTEGNELSE...VII DEL I SQL OG RELASJONSDATABASER...1 1 INTRODUKSJON...

FORORD...III KAPITTELOVERSIKT... VI INNHOLDSFORTEGNELSE...VII DEL I SQL OG RELASJONSDATABASER...1 1 INTRODUKSJON... FORORD...III KAPITTELOVERSIKT... VI INNHOLDSFORTEGNELSE...VII DEL I SQL OG RELASJONSDATABASER...1 1 INTRODUKSJON... 3 1.1 DATABASESYSTEMER...3 1.1.1 Anvendelser...3 1.1.2 Oppgaver og arkitektur...4 1.1.3

Detaljer

1. SQL server. Beskrivelse og forberedelse til installasjon

1. SQL server. Beskrivelse og forberedelse til installasjon Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag SQL server. Beskrivelse og forberedelse til installasjon Stein Meisingseth 15.10.2014 Lærestoffet er utviklet for faget IDRI2001 Drift av

Detaljer

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum 1 TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum 2 Læringsmål Mål Introduksjon til filer (som inndata og utdata) Å bruke

Detaljer

Læringsmål for forelesningen

Læringsmål for forelesningen Læringsmål for forelesningen Objektorientering Delegeringsteknikken Delegering vs. arv 1 Dagens forelesning Introduksjon og motivasjon Hvorfor forelese om standardteknikker, såkalte patterns? Hva slags

Detaljer

Datatyper og typesjekking

Datatyper og typesjekking Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem i kompilatoren? Gjennomgang av noen typer Grunntyper Type-konstruktører

Detaljer