Flere design mønstre. 19. september 2002, Tore Berg Hansen, TISIP

Størrelse: px
Begynne med side:

Download "Flere design mønstre. 19. september 2002, Tore Berg Hansen, TISIP"

Transkript

1 Flere design mønstre 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 å bruke leksjonene til undervisning eller kursformål må ta kontakt med TISIP for nærmere avtale. Tore Berg Hansen

2 Sammendrag Denne leksjonen tar for seg flere design mønstre. Design behandles dermed i to leksjoner. Det gjør vi fordi vellykket design er av avgjørende betydning for et prosjekts suksess eller fiasko. En tråd gjennom disse to leksjonene om design er at design kan gjøres systematisk og metodisk gjennom bruk av sunne prinsipper og god praksis. Prinsipper og praksis er nedfelt i design mønstre (patterns). Design mønstre beskriver enkle og elegante løsninger for spesifikke problemer i objektorientert design. Å lage en god objektorientert design er en utfordrende oppgave. Å gjøre en design gjenbrukbar er en enda større oppgave. Bruk av design mønstre hjelper oss med dette. Nå man finner en god løsning vil man bruke den om og om igjen. Det er noe av hensikten med design mønstre.

3 Innhold Introduksjon...1 Prinsipper for god design...1 Polymorfisme...3 Mellomledd (indirection)...4 Ren fabrikasjon...5 Beskyttelse mot variasjoner...5 Factory...6 Singleton...7 Fasade...7 Observer...7 Lesestoff...7 Referanser...7

4 Introduksjon En av nøklene til et vellykket utviklingsprosjekt er god design. Det viktigste er designerens dyktighet. Men dyktige folk oppnår resultater gjennom bruk av sunne prinsipper og praksis. Disse er bl.a nedfelt i design mønstre. I forrige leksjon så vi på fem sentrale mønstre. Disse fem er de som trolig anvendes hyppigst fordi de gir svar på de mest vanlige design problemer. Disse mønstrene tilhører de såkalte GRASP 1 mønstre lansert av lærebokforfatteren [1]. De fem GRASP mønstrene var: Informasjonsekspert Skaper (Creator) Høy kohesjon Løs kobling Kontroller I denne leksjonen skal vi se på noen flere GRASP mønstre og noen fra The Gang of Four (GoF) [2]. GoF mønstre skriver seg fra noen av pionerene innen design mønstre. De var fire personer og er kjent gjennom utgivelsen av en bok som har blitt et av standardverkene innen for dette fagfeltet. De mønstrene vi skal se på i denne leksjonen er: Polymorfisme (GRASP) Mellomledd (GRASP) Ren fabrikasjon (GRASP) Beskyttelse mot variasjon (GRASP) Factory (GoF) Singleton (GoF) Fasade (GoF) Observer/Publish-Subscribe/Delegation Event Model (GoF) Men før vi gjør det skal vi ta for oss noen generelle retningslinjer for god design. Prinsipper for god design Vi skal her kort ta for oss noen generelle prinsipper og retningslinjer for god design. Stoffet er i hovedsak hentet fra [2]. Et hovedpoeng er at programvare må designes for gjenbruk. Det stiller spesielle krav til designeren. De retningslinjer som presenters her skal gjøre det lettere å foreta de nødvendige avveininger. Disse retningslinjene finner man også igjen i de forskjellige mønstre. Før vi går løs på retningslinjene må vi avklare noen begreper. Ojektorienterte programmer settes sammen av objekter. Et objekt inneholder både data og prosedyrer som operer på disse dataene. Slike prosedyrer kalles typisk metoder eller operasjoner avhengig av modellerings- eller programmeringsspråk. Et objekt utfører en operasjon som svar på en forespørsel ( også kalt en melding). En operasjon har en signatur. Den utgjøres av operasjonens navn, parametere og returverdi. Ikke alle operasjoner har parametere eller returverdi. 1 GRASP General Responsibility Assignment Software Patterns 1

5 En samling (sett, mengde) signaturer for et objekt kalles objektets grensesnitt (interface). En type brukes for å benevne et bestemt grensesnitt. Et objekt er av type Rektangel hvis det godtar alle forespørsler om operasjoner som er definert i grensesnittet med navn Rektangel. Det betyr også at et objekt kan ha flere typer og forskjellige objekter kan ha typer som er felles. Eller med andre ord så kan objekter ha flere grensesnitt av forskjellig type. Grensesnitt er fundamentale i objektorienterte systemer. Dette fordi objekter kun er kjent gjennom sine grensesnitt. En klasse inneholder et objekts definisjon. Klassen spesifiserer objekters interne data og operasjonene som kan utføres på dataene. Instansiering er begrepet som brukes om det å skape objekter. Objekter som gjør jobben i et program må skapes. Det som i praksis skjer er at det avsettes plass i datamaskinens minne for objektets interne data såkalte instansvariabler og deres tilhørende operasjoner. Mange lignende objekter kan skapes (instansieres) fra samme klasse. Abstrakte klasser er klasser hvis eneste hensikt er å definere et felles grensesnitt for nedarvede klasser. Javas Interface er et eksempel på denne idéen. C++ klasser med rent virtuelle funksjoner er et annet eksempel. Vi vil i dette notatet bruke begrepet Interface som synonym for en abstrakt klasse. I [2] legges det vekt på at det er to typer arv. Den ene er arv mellom klasser. Det andre er arv mellom Interface. Arv mellom klasser betyr at definisjonen av et objekts implementasjon delvis består av et annet objekts implementasjon. Dvs at man deler på kode og representasjon. Arv av Interface forteller at et objekt kan brukes i stedet for et annet. Java har denne mekanismen, mens C++ ikke har den. Man kan få til det samme i C++ ved å lage abstrakte klasser som kun inneholder rent virtuelle funksjoner. Med bakgrunn i disse begrepsavklaringene skal vi lansere noen grunnleggende design prinsipper. Disse er: Programmer for et grensesnitt, ikke en implentasjon. Grunnen er at polymorfisme er avhengig av det. Arv må brukes med forsiktighet. La klasser arve fra abstrakte klasser. Da vil alle subklasser få det samme grensesnitt. Det er to fordeler med dette. 1. En klient behøver ikke bekymre seg for typen til objekter så lenge de har det grensesnitt som klienten har bruk for. 2. En klient behøver ikke kjenne til klassen som implementerer objektet. Foretrekk komponering med objekter fremfor arv mellom objekter. Dette dreier seg om gjenbruk. Ved komponering menes at man får ny og mer avansert funksjonalitet ved å sette sammen objekter. Motstykket er gjenbruk ved arv, hvor man lager nye objekter ved å utvide funksjonaliteten til eksisterende objekter. Det er det man vanligvis forstår med arv. Ulempen er at man bryter med prinsippet om løs kobling fordi forelderklassens indre ofte må være synlig for subklassen. På den måten blir subklassen avhengig av endringer i forelderklassens definisjon. Og man kan bli tvunget til å gjøre endringer i en forelderklasse for at en subklasse skal fungere hensiktsmessig i gitte situasjoner. Det kan igjen føre til at andre subklasser må endres. Man snakker her om hvit-boks gjenbruk. Motstykket er svart-boks gjenbruk. Her skjer gjenbruk ved bruk av objekter med et definert grensesnitt settes sammen. Det trengs ingen kunnskap om de indre detaljer. Slik komposisjon kan gjøres i kjøretid. 2

6 Arv er bestemt ved kompilering. Moderne komponentteknologi baserer seg på komposisjon. Det skal vi komme tilbake til i neste leksjon. Ved å fokusere på komposisjon blir klassehierarkiene små og vokser ikke til store uhåndterlige monstre. Men nå er det ikke slik at det alltid finnes egnede objekter å komponere med. Arv gjør det enkelt å lage nye komponenter, som man så kan komponere med. Så det er ikke et enten eller, men en balansert avveining. Men det understrekes at man må unngå den ukritiske bruk av arv som går igjen i mange lærebøker i objektorientert programmering. Vi avslutter dette kapitlet med eksempel på komposisjon som kalles delegering. Se figuren. Vindu Rektangel - bredde - hoyde { double Vindu::areal() { return rektangel.areal(); } } { double Rektangel::areal() { return bredde * hoyde; } } Det dette klassediagrammet forteller er at Vindu delegerer til Rektangel å beregne sitt areal. Vindu har altså en referanse til rektangel. En alternativ løsning ville være å la Vindu arve fra Rektangel fordi vinduer ofte er rektangulære. Men det vil være en dårligere løsning fordi da binder man et vindu til rektangel under kompilering. Nå finnes det vinduer som har andre former sirkulære, elliptiske, triangulære. Med delegering og polymorfisme (neste kapittel), kan man vente til kjøretid og dynamisk å bestemme hvilken geometrisk form et vindu skal assosieres med. Beregning av areal går bra så lenge grensesnittet er det samme. Polymorfisme Polymorfisme er et sentralt begrep innenfor objektorientering og kan ha forskjellig betydning avhengig av sammenhengen begrepet brukes i. Polymorf betyr mangeformet, noe som opptrer i mange former. I objektorientert sammenheng betyr det at vi gir samme navn til likeartet oppførsel hvor implementasjonen er forskjellig. Det er slik begrepet brukes i forbindelse med mønstre. Mønsteret er beskrevet i 3

7 kapittel 22 fra side 326 i læreboken. Vi skal ta et eksempel. Det er behov for å beregne areal og omkrets av forskjellige geometriske figurer. Figurene kan være sirkel, trekant, firkant, ellipse osv. Det er samme operasjon som skal utføres, men på forskjellige måter. Derfor kan vi gi operasjonene samme navn slik som vist i denne figuren. <<Interface>> IGeomFigur + omkrets() : double Sirkel Trekant Firkant Ellipse + omkrets() : double + omkrets() : double + omkrets() : double + omkrets() : double Her har vi et pluggbart opplegg ved at man kan plugge inn nye figurer etter behov. I et programmeringsspråk som Java kan deler av koden som implementerer dette se ut som følger. Igeomfigur enfigur; Sirkel ensirkel = new Sirkel(); Trekant entrekant = new Trekant(); Firkant enfirkant = new Firkant(); Ellipse enellipse = new Ellipse(); enfigur = enellipse; arealet = enfigur.areal(); omkretsen = enfigur.omkrets(); I de to siste linjene kan man si at beregningene blir utført for en eller annen figur. Forhistorien bestemmer hvilken figur og dermed hvordan beregningene blir utført. I dette tilfellet kan det se ut som beregningene utføres for en ellipse. Mellomledd (indirection) Mønsteret er beskrevet fra side 332 i læreboken. Poenget er å gi løsere kobling slik at potensialet for gjenbruk øker. Eksemplet i boken viser en situasjon hvor det er behov 4

8 for å kommunisere over et nettverk for å hente informasjon. For at et domeneobjekt 2 ikke skal være direkte avhengig av en gitt kommunikasjonsprotokoll, legger man inn et mellomledd. Dette kan byttes hvis/når man har behov for andre protokoller. Mekanismen for å gjøre bytte kan være basert på polymorfisme. Det vil si at domeneobjektet alltid ser det samme grensesnittet og er uavhengig av hvordan grensesnittet implementeres i en gitt sammenheng. Ren fabrikasjon Pure fabrication heter detter mønsteret på engelsk. Beskrivelsen starter på side 329 i læreboken. Her er poenget å løse opp en design som gjennom bruk av andre mønstre, kanskje spesielt Ekspert, har ført til lav kohesjon og tett kobling. Bruk av Ekspert fører gjerne til at objekter som er hentet fra problemdomenet får for mye å gjøre. En løsning på dette representerer altså mønsteret Ren fabrikasjon. Det sier at man skal legge ansvar som hører sammen (høy kohesjon) til et kunstig objekt som man fabrikkerer for formålet. Ettersom høy kohesjon og løs kobling på en måte er to sider av samme sak, resulterer bruk av mønsteret også gjerne i løsere kobling og økt mulighet for gjenbruk. Et slikt kunstig objekt vil ikke ha noe motstykke i problemdomenet. Mange av objektene som er Mellomledd (mønsteret som er beskrevet foran) er gjerne slike rene fabrikasjoner. Beskyttelse mot variasjoner På originalspråket heter dette mønsteret Protected Variations (side 334 i læreboken). Det er mer et design prinsipp enn et mønster. Poenget er at man skal forsøke så langt det er praktisk og økonomisk mulig å identifisere steder i programvaren hvor det er stor sannsynlighet for at noe vil endres. For å beskytte seg mot slike endringer søker man å legge grensesnitt rundt slike steder slik at innvirkningen av mulige endringer blir minimal for andre deler av programsystemet. De to foregående mønstre kan være eksempler på dette prinsippet. Også de generelle objektorienterte prinsipp om abstraksjon og skjuling av informasjon går inn under prinsippet om Protected Variations. I sin første utgave av læreboken hadde Larman et mønster han kalte Ikke snakk til fremmede. Poenget er at et objekt må beskyttes fra kunnskap om fremmede objekter. Med fremmede objekter menes objekter som ligger langt ute i en kjede av objekter. Objekter som er direkte koblet tilhører den nære familie, som man trygt kan henvende seg til. Her gjengis eksemplet fra forrige utgave av læreboken. Det baserer seg på sammen case som i denne utgaven av læreboken. Kasseterminal + beløptilbetaling() : double Salg + betaling() : Betaling Betaling + forfaltbeløp() : double Denne figuren viser hvilke objekter som er involvert når det skal tas betaling. Betalingen skjer i Kasseterminalen. Denne henvender seg så til Salg som kan 2 Med domeneobjekt mener vi her et objekt som har ansvar for å utføre noe av den egenlige nytteverdi i programmet, som f.eks en beregning. Et slikt objekt skal kunne gjenbrukes i forskjellige sammenhenger og må derfor ikke være sterkt koblet til bestemte andre objekter. 5

9 returnere en referanse til Betaling som kjenner og kan returnere det forfalte beløp. Samarbeidsdiagrammet viser hendelsesforløpet. : Kasseterminal 1: betaling( ) : Salg 2: forfaltbeløp( ) : Betaling Denne figuren viser klart at her brytes prinsippet om at man ikke skal snakke til fremmede fordi Betaling er fremmed for Kasseterminal. De neste figurene viser en bedre løsning i henhold til prinsippet om ikke å snakke til fremmede. Kasseterminal + beløptilbetaling() : double Salg + beløptilbetaling() : double Betaling + forfaltbeløp() : double Det som er gjort her er at i stedet for at Salg returnerer en referanse til Betaling returneres i stedet det forfalt beløp. Samarbeidsdiagrammet ser nå slik ut. 1: beløptilbetaling( ) : Kasseterminal : Salg 2: forfaltbeløp( ) : Betaling Her er kasseterminal frikoblet fra interne detaljer i Betaling. Jobben med å få fatt i det forfalte beløp er overlatt til det nærmeste objektet som Kasseterminal ser direkte. Factory Beskrivelsen starter på side 346 i læreboken. Jeg velger å bruke den engelske betegnelsen. Det dreier seg om hvordan man skal håndtere kreering av objekter når 6

10 man må ta helt spesielle hensyn. Slike spesielle hensyn kan være at logikken rundt kreeringen kan være spesiell. Uten å gå i detalj så brukes denne mekanismen i Microsoft sin komponentmodell, COM. Factory kommer også til anvendelse når man bruker prinsippet om at man fortrinnsvis skal programmere for et grensesnitt og ikke implementasjon. I slike tilfeller lar man et objekt, som gjerne er en Singleton, ta seg av kreering av objekter. En slik objektfabrikk returnerer så en referanse til et objekt som har det ønskede grensesnitt. Eventuelle endringer blir dermed isolert til et sted. Singleton Dette mønsteret brukes når man har behov for bare en forekomst (instance) av en klasse. Se side 348 i læreboken. Løsningen er å definere en statisk metode i den klassen som skal returnere forekomsten (the Singleton). Fasade Side 368 i læreboken. Dette mønsteret skal løse problemet med samspill med andre systemer eller subsystemer. Et Fasadeobjekt representerer et kontaktpunkt i slike situasjoner. Bak fasaden kan det skjule seg mange objekter. Det behøver ikke engang være objekter, men systemer eller subsystemer realisert i andre språk. Hvis det dreier seg om systemer som en bedrift har investert mange penger i tidligere og som man gjerne vil forsette å bruke sier man at systemet tilhører arvegodset (legacy system på engelsk). Man kobler altså det eksisterende system til det nye via et fasadeobjekt. I denne sammenheng betegnes fasadeobjektet et wrapperobjekt. Observer Dette mønsterert går også under navnene Publish-Subscibe/Delegation Event Model. Se side 372. Mønsteret har spesiell anvendelse i hendelsesorienterte programvaresystemer. Prinsippet anvendes på problemer hvor man ønsker å unngå for tett kobling mellom objekter som utløser en hendelse og det objektet som skal reagere på hendelsen. Et eksempel på en slik situasjon er kommuniksjon mellom et grafisk brukergrensesnitt og domeneobjekter. For dere som er familiær med Java så har dere støtt borti løsninger etter dette mønsteret i form av forskjellige lyttere (ActionListener, WindowListener er eksempler). Lesestoff Mønstrene som er behandlet er beskrevet i kapittel 22 og 23 i læreboken. Referanser 1. Craig Larman, Applying UML and Patterns. An Introduction to Object- Oriented Analysis and Design and the Unified Process, Prentice Hall, andre utgave 2002, ISBN Erich Gamma & al, Design Patterns. Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995, ISBN

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

Programvare arkitekturer

Programvare arkitekturer Programvare arkitekturer 14. oktober 2001, Tore Berg Hansen, TISIP Kursleksjonene er forfatters eiendom. Som kursdeltaker kan du fritt bruke leksjonene til eget personlig bruk. Kursdeltakere som ønsker

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

1. Modellering av objektorienterte systemer

1. Modellering av objektorienterte systemer Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag Modellering av objektorienterte systemer Tore Berg Hansen Lærestoffet er utviklet for faget IFUD Objektorientert systemutvikling 1. Modellering

Detaljer

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

TDT4102 Prosedyre og Objektorientert programmering Vår 2014 Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyre og Objektorientert programmering Vår 2014 Øving 10 Frist: 2014-04-11 Mål for denne øvinga:

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

Factory Patterns Interface Deklarerer at klassen skal bruke et interface (implements i Java) Definerer implementasjoner for alle metodene i interfacet

Factory Patterns Interface Deklarerer at klassen skal bruke et interface (implements i Java) Definerer implementasjoner for alle metodene i interfacet Factory Patterns Interface Deklarerer at klassen skal bruke et interface (implements i Java) Definerer implementasjoner for alle metodene i interfacet Slide 2 v Factory Method Pattern Class creational

Detaljer

Klasser. Webprogrammering høsten 2015. Objekter. Eksempelklasser og -objekter. 2 of 11 14.10.2015 07:56. 1 of 11 14.10.2015 07:56

Klasser. Webprogrammering høsten 2015. Objekter. Eksempelklasser og -objekter. 2 of 11 14.10.2015 07:56. 1 of 11 14.10.2015 07:56 [Kurssidene] [ ABI - fagsider bibin ] Objekter Webprogrammering høsten 2015 Et objekt er en "ting" som representeres i et program. Representasjonen tar for seg attributter og oppførsel Attributter (egenskaper)

Detaljer

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49 Innhold Forord...5 1 Det første programmet...15 1.1 Å kommunisere med en datamaskin 16 1.2 Programmeringsspråk 17 1.3 Et program som skriver på skjermen 18 1.4 Kompilering og kjøring 19 1.5 Kommentarer

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

Objektorientert design av kode. Refaktorering.

Objektorientert design av kode. Refaktorering. Objektorientert design av kode. Refaktorering. DEL 1 INF1010-forelesning 2. mars Ragnhild Kobro Runde Læringsmål Kjenne til og kunne bruke viktige prinsipper for god kodedesign. Kunne finne alternative

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

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

Spesifikasjon av Lag emne

Spesifikasjon av Lag emne Dagens forelesning o Kort repetisjon av kravspesifikasjon med UML Fra krav til objekter Hva skal systemet gjøre? UML: Bruksmønstermodeller (Use Cases) o Objektdesign Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

Detaljer

Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer Fra krav til objekter Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer INF1050--1 Dagens forelesning o Kort repetisjon av kravspesifikasjon med UML Hva skal systemet gjøre? UML: Bruksmønstermodeller (Use

Detaljer

UML 1. Use case drevet analyse og design. 20.01.2004 Kirsten Ribu

UML 1. Use case drevet analyse og design. 20.01.2004 Kirsten Ribu UML 1 Use case drevet analyse og design 20.01.2004 Kirsten Ribu 1 I dag Domenemodell (forløper til klassediagram) Interaksjonsdiagrammer Sekvensdiagram Kollaborasjonsdiagram 2 Domenemodell visualisering

Detaljer

Design Patterns - mønstre

Design Patterns - mønstre Design Patterns - mønstre Om mønstre i design Kirsten Ribu 28.02.2005 1 I dag Om estimeringseksperimentet Mønstre Patterns 2 Estimeringsksperimentet 22 deltakere 11 fikk oppgitt 50 timer 11 fikk oppgitt

Detaljer

Kanter, kanter, mange mangekanter

Kanter, kanter, mange mangekanter Kanter, kanter, mange mangekanter Nybegynner Processing PDF Introduksjon: Her skal vi se på litt mer avansert opptegning og bevegelse. Vi skal ta utgangspunkt i oppgaven om den sprettende ballen, men bytte

Detaljer

Objective-C. Shermila Thillaiampalam 01.11.2011

Objective-C. Shermila Thillaiampalam 01.11.2011 Objective-C Shermila Thillaiampalam 01.11.2011 Innhold 1 Kort om Objective-C 4 1.1 Xcode................................ 4 2 Historie 5 2.1 Programmeringsspråket C..................... 5 2.2 Smalltalk..............................

Detaljer

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i. Skilpaddeskolen Steg 1: Flere firkanter Nybegynner Python Åpne IDLE-editoren, og åpne en ny fil ved å trykke File > New File, og la oss begynne. Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell'

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Eksamensdag: 17. august 2012 Tid for eksamen: 09.00 15.00 Oppgavesettet er på 5 sider. Vedlegg:

Detaljer

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

UML- Use case drevet analyse og design. Domenemodeller Sekvensdiagrammer Use case realisering med GRASP patterns Klassediagram - designmodeller UML- Use case drevet analyse og design Bente Anda 23.09.2004 23.09.04 INF320 I dag Domenemodeller Sekvensdiagrammer Use case realisering med GRASP patterns Klassediagram - designmodeller 23.09.04 INF320

Detaljer

Inception Elaboration Construction Transition Bemanning 1 1,5 2 2 Varighet i uker Antall iterasjoner (lengde i uker i parentes) Tabell 1

Inception Elaboration Construction Transition Bemanning 1 1,5 2 2 Varighet i uker Antall iterasjoner (lengde i uker i parentes) Tabell 1 Innhold Innledning... 2 Faseplan... 2 Iterasjonsplanlegging... 3 Oppstartsfasen... 3 Artefaktene i oppstartsfasen... 4 Utdypingsfasen... 5 Konstruksjonsfasen... 5 Overføringsfasen... 6 Litteratur... 7

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

UML-Unified Modeling Language

UML-Unified Modeling Language UML-Unified Modeling Language Use case realisering Designmodellering 21.01.2004 Kirsten Ribu Use Case diagram Klassediagram Oppførselsdiagrammer: Sekvensdiagram Kollaborasjonsdiagram Tilstandsdiagram Aktivitetsdiagram

Detaljer

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

UML-Unified Modeling Language. Prosess-oversikt. Use case realisering Use case realisering Designmodellering 31.01.2005 Kirsten Ribu UML-Unified Modeling Language Use Case diagram Klassediagram Oppførselsdiagrammer Sekvensdiagram Kollaborasjonsdiagram Tilstandsdiagram Aktivitetsdiagram

Detaljer

å gjenkjenne regning i ulike kontekster å kommunisere og argumentere for valg som er foretatt

å gjenkjenne regning i ulike kontekster å kommunisere og argumentere for valg som er foretatt 13. mai 2014 å gjenkjenne regning i ulike kontekster å velge holdbare løsningsmetoder - gjennomføre å kommunisere og argumentere for valg som er foretatt tolke resultater kunne gå tilbake og gjøre nye

Detaljer

Læringsmål for forelesningen

Læringsmål for forelesningen Læringsmål for forelesningen Objektorientering Håndtering av unntak (eng: exceptions) Java-programmering Håndtering av unntak Exception-objekter og klasser try, catch og finally throw og throws Eclipse

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

INF1000 Metoder. Marit Nybakken marnybak@ifi.uio.no 16. februar 2004

INF1000 Metoder. Marit Nybakken marnybak@ifi.uio.no 16. februar 2004 INF1000 Metoder Marit Nybakken marnybak@ifi.uio.no 16. februar 2004 Motivasjon Når man begynner å skrive store programmer, vil man fort oppleve at programmene blir uoversiktlige. Det blir vanskeligere

Detaljer

INF1010 - Seminaroppgaver til uke 3

INF1010 - Seminaroppgaver til uke 3 INF1010 - Seminaroppgaver til uke 3 Oppgave 1 I denne oppgaven skal vi lage et klassehiearki av drikker. Alle klassene i hiearkiet skal implementere følgende grensesnitt p u b l i c i n t e r f a c e Drikkbar

Detaljer

Fra krav til objekter. INF1050: Gjennomgang, uke 05

Fra krav til objekter. INF1050: Gjennomgang, uke 05 Fra krav til objekter INF1050: Gjennomgang, uke 05 Kompetansemål Systemmodellering og systemperspektiv Utvikle abstrakte modeller av et system Ulike modeller representerer ulike perspektiver av systemet

Detaljer

HiOA TDK. Ingeniørfag data. DATS1600 Programutvikling. Eva Hadler Vihovde. Prosjektoppgaven 2015. - Prosessdokumentasjon - Alternativ 1

HiOA TDK. Ingeniørfag data. DATS1600 Programutvikling. Eva Hadler Vihovde. Prosjektoppgaven 2015. - Prosessdokumentasjon - Alternativ 1 HiOA TDK Ingeniørfag data DATS1600 Programutvikling Eva Hadler Vihovde Prosjektoppgaven 2015 - Prosessdokumentasjon - Alternativ 1 - Forsikring - Gruppe #14 Studentnavn Marius Alexander Skjolden Hans Christian

Detaljer

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

Hva gjøres i analysen? 2. oktober 2001, Tore Berg Hansen, TISIP Hva gjøres i analysen? 2. oktober 2001, Tore Berg Hansen, TISIP Kursleksjonene er forfatters eiendom. Som kursdeltaker kan du fritt bruke leksjonene til eget personlig bruk. Kursdeltakere som ønsker å

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

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

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt. Hei JavaScript! Introduksjon Web Introduksjon I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt. Steg 1: Bruke JS Bin

Detaljer

Design Patterns - mønstre. Kirsten Ribu

Design Patterns - mønstre. Kirsten Ribu Design Patterns - mønstre Kirsten Ribu 04.02.2004 1 I dag Om estimeringseksperimentet Mer om use case estimering, fortsetter fra i går Verktøy Visual Paradigm www.visual-paradigm.com Mønstre Patterns Mari

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

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

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

Kompleksitetsanalyse Helge Hafting 25.1.2005 Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder

Kompleksitetsanalyse Helge Hafting 25.1.2005 Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder Helge Hafting 25.1.2005 Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder Innhold 1 1 1.1 Hva er en algoritme?............................... 1 1.2

Detaljer

Debugging. Tore Berg Hansen, TISIP

Debugging. Tore Berg Hansen, TISIP Debugging Tore Berg Hansen, TISIP Innhold Innledning... 1 Å kompilere og bygge et program for debugging... 1 Når debugger er i gang... 2 Symbolene i verktøylinjen... 3 Start på nytt... 3 Stopp debugging...

Detaljer

Tittel Objektorientert systemutvikling 3

Tittel Objektorientert systemutvikling 3 EKSAMENSFORSIDE Fagnr. OBJ310 Tittel Objektorientert systemutvikling 3 Ansvarlig faglærer Viggo Holmstedt Klasse(r) Dato IS 3 20.05.2011 Eksamensoppgaven Ant. sider inkl. består av følgende: forside og

Detaljer

INF1010 Arv. Marit Nybakken marnybak@ifi.uio.no 2. februar 2004

INF1010 Arv. Marit Nybakken marnybak@ifi.uio.no 2. februar 2004 INF1010 Arv Marit Nybakken marnybak@ifi.uio.no 2. februar 2004 Motivasjon Arv bruker vi så vi skal slippe å skrive oss i hjel. Når vi programmerer, prøver vi gjerne å modellere en del av verden ved hjelp

Detaljer

Utførelse av programmer, metoder og synlighet av variabler i JSP

Utførelse av programmer, metoder og synlighet av variabler i JSP Utførelse av programmer, metoder og synlighet av variabler i JSP Av Alf Inge Wang 1. Utførelse av programmer Et dataprogram består oftest av en rekke programlinjer som gir instruksjoner til datamaskinen

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

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

Fra krav til objektdesign

Fra krav til objektdesign Fra krav til objektdesign Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer INF1050-ansvar-1 Dagens forelesning o Kort repetisjon av kravspesifikasjon med UML Hva skal systemet gjøre? UML: Bruksmønstermodeller

Detaljer

InfraWorld avslutningsseminar. - Introduksjon. torsdag 13/9-12

InfraWorld avslutningsseminar. - Introduksjon. torsdag 13/9-12 InfraWorld avslutningsseminar - Introduksjon torsdag 13/9-12 13:00 13:30 Innledning Dagens agenda 13:30 14:15 Siste nytt innen bruk av virtuelle modeller (Erik Kjems) 14:15 15:00 Bruk av kunstig intelligens

Detaljer

UKE 11 UML modellering og use case. Gruppetime INF1055

UKE 11 UML modellering og use case. Gruppetime INF1055 UKE 11 UML modellering og use case Gruppetime INF1055 Hva skal vi i dag? Analyse og design - kapittel 5 og 7 UML modellering Ukesoppgaver 3: Modellering av krav UML UML Kompetansemål Modellering av krav

Detaljer

Tittel Objektorientert systemutvikling 2

Tittel Objektorientert systemutvikling 2 EKSAMENSFORSIDE Fagnr. OBJ208 Tittel Objektorientert systemutvikling 2 Ansvarlig faglærer Viggo Holmstedt Klasse(r) Dato IS/IN 2 11.06.2009 Eksamensoppgaven Ant. sider inkl. består av følgende: forside

Detaljer

1. Modellering av objektorienterte systemer

1. Modellering av objektorienterte systemer Tore Berg Hansen 3.2.2004 Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LV339D Objektorientert systemutvikling 1. Resymé: I denne leksjonen skal vi se på hva som genererelt

Detaljer

Modellering av objektorienterte systemer

Modellering av objektorienterte systemer Modellering av objektorienterte systemer 16. august 2002, Tore Berg Hansen, Tisip Kursleksjonene er forfatters eiendom. Som kursdeltaker kan du fritt bruke leksjonene til eget personlig bruk. Kursdeltakere

Detaljer

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

Spesifikasjon av Lag emne. Kursregistrering bruksmønstermodell (ny versjon) Dagens forelesning. Fra krav til objektdesign Dagens forelesning o Kort repetisjon av kravspesifikasjon med UML Fra krav til objektdesign Hva skal systemet gjøre? UML: Bruksmønstermodeller o Objektdesign Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

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

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

Komponentbasert Systemutvikling - Hva, Hvorfor, Hvordan

Komponentbasert Systemutvikling - Hva, Hvorfor, Hvordan Komponentbasert Systemutvikling - Hva, Hvorfor, Hvordan Øyvind Matheson Wergeland Master student 23. 1. 2004 Typiske bruksområder for komponenter Sammensatte dokumenter Microsoft OLE og ActiveX (COM) Distribuerte

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

Detaljer

ADDISJON FRA A TIL Å

ADDISJON FRA A TIL Å ADDISJON FRA A TIL Å VEILEDER FOR FORELDRE MED BARN I 5. 7. KLASSE EMNER Side 1 Innledning til addisjon 2 2 Grunnleggende om addisjon 3 3 Ulike tenkemåter 4 4 Hjelpemidler i addisjoner 9 4.1 Bruk av tegninger

Detaljer

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

Universitetet i Oslo Institutt for informatikk. Eskild Busch. UML hefte Universitetet i Oslo Institutt for informatikk Eskild Busch UML hefte 6. desember 2000 Innhold Dette heftet tar for seg deler av UML som er sentralt i kurset IN29. Use case-, sekvens-, tilstand- og klassediagrammer,

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

Fakultet for informasjonsteknologi, Institutt for datateknikk og informasjonsvitenskap

Fakultet for informasjonsteknologi, Institutt for datateknikk og informasjonsvitenskap Side 1 av 6 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap BOKMÅL KONTINUASJONSEKSAMEN

Detaljer

Fra problem til program

Fra problem til program Fra problem til program Gitt et problem, hvordan går man fram for å programmere en løsning? UML klassediagrammer Enhetstesting Dokumentasjon Som student ønsker vi oss et program som kan holde oversikt

Detaljer

Løsningsforslag Test 2

Løsningsforslag Test 2 Løsningsforslag Test 2 Oppgave 1.1: Interface definerer et grensesnitt som kan implementeres av flere klasser. Dette gir en standardisert måte å kommunisere med objekter av en eller flere relaterte klasser.

Detaljer

Skilpaddefraktaler Erfaren Python PDF

Skilpaddefraktaler Erfaren Python PDF Skilpaddefraktaler Erfaren Python PDF Introduksjon Vi vil nå jobbe videre med skilpaddekunsten fra tidligere. Denne gangen skal vi tegne forskjellige figurer som kalles fraktaler. Fraktaler er figurer

Detaljer

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

Hensikten med denne delen av kurset. Objektets egenskaper. Objektorientering hva er det? Best practises ved programvareutvikling. Kravspesifikasjonen Hensikten med denne delen av kurset Objektorientert systemutvikling Rational Unified Process (RUP) Gurholt og Hasle kap. 6 UML Distilled kap. 2 Å lære modellerings- og designprinsipper og øve opp teknikker

Detaljer

R A P P O R T. Kongsberg Seatex AS Pirsenteret 7462 Trondheim Tlf: 73 54 55 00 Telefax: 73 51 50 20 E-post: km.seatex@kongsberg.com Tittel 12.10.

R A P P O R T. Kongsberg Seatex AS Pirsenteret 7462 Trondheim Tlf: 73 54 55 00 Telefax: 73 51 50 20 E-post: km.seatex@kongsberg.com Tittel 12.10. R A P P O R T Kongsberg Seatex AS Pirsenteret 7462 Trondheim Tlf: 73 54 55 Telefax: 73 51 5 2 E-post: km.seatex@kongsberg.com Tittel Rapport nr Antall sider Dato 12.1.21 Gradering Rapport fra demotur til

Detaljer

Jon Hammeren Nilsson, Anders Emil Rønning, Lars Grini og Erling Fjelstad

Jon Hammeren Nilsson, Anders Emil Rønning, Lars Grini og Erling Fjelstad Forprosjektrapport Presentasjon Tittel: Oppgave: Infront SSO Utvikle en Single Sign-on løsning for Infront Periode: 8/1-2013 28/5-2013 Gruppemedlemmer: Jon Hammeren Nilsson, Anders Emil Rønning, Lars Grini

Detaljer

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten Interface, Abstract Class... i-120 : H-98 2a. Abstraksjon i JAVA: 1 Det finnes ingenting som kan gjøres med interface i-120 : H-98 2a. Abstraksjon i JAVA: 2 som kan gjøres med bruk av unntak i-120 : H-98

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

Klask-en-Muldvarp. Steg 1: Gjøre klart spillbrettet. Sjekkliste. Introduksjon

Klask-en-Muldvarp. Steg 1: Gjøre klart spillbrettet. Sjekkliste. Introduksjon Klask-en-Muldvarp Introduksjon App Inventor Introduksjon I denne oppgaven skal vi lage et veldig enkelt spill med litt animasjon. Det som skal skje er at en muldvarp hopper rundt på spillbrettet mens du

Detaljer

INF130 Databehandling og analyse

INF130 Databehandling og analyse 28.01.15 INF130 Databehandling og analyse Introduksjon Knut Kvaal 28.01.15 1.1 Administrasjon Gruppearbeid og øvinger Du skal registere deg for gruppe etc https://docs.google.com/spreadsheets/d/1n4vqedksrkflh6273wk5zqd852me_mtshunh6dfzzma/edit?usp=sharing

Detaljer

Modellering av data. Magnus Karge, Kartverket

Modellering av data. Magnus Karge, Kartverket Modellering av data Magnus Karge, Kartverket 02.05.2018 Modellering av data Innhold Sentrale elementer i klassediagrammer Sentrale elementer i pakkediagrammer Relevante standarder Internasjonalt: ISO 19103

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

EKSAMEN. Objektorientert programmering

EKSAMEN. Objektorientert programmering EKSAMEN Emnekode: ITF 10609 Dato: 13.mai 2009 Emne: Objektorientert programmering Eksamenstid: kl 09.00 til kl 12.00 Hjelpemidler: 2 A4-ark med valgfritt innhold på begge sider. Faglærere: Tom Heine Nätt

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

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering Dagens tema Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Statiske metoder og variabler Hvordan oppdage feil? Kildekode Hva er kompilering? Anta at

Detaljer

Læringsmål for forelesningen

Læringsmål for forelesningen Læringsmål for forelesningen Objektorientering Bruk av grensesnitt og implementasjoner i Collection-klasser Java-prog, kap. 14-16 i Big Java Og side 990-997 i Appendix D Collection-rammeverket og iterasjon

Detaljer

Redd verden. Steg 1: Legg til Ronny og søppelet. Sjekkliste. Introduksjon

Redd verden. Steg 1: Legg til Ronny og søppelet. Sjekkliste. Introduksjon Redd verden Nybegynner Scratch Introduksjon Kildesortering er viktig for å begrense hvor mye avfallet vårt påvirker miljøet. I dette spillet skal vi kildesortere og samtidig lære en hel del om meldinger

Detaljer

Diverse eksamensgaver

Diverse eksamensgaver Diverse eksamensgaver Noen har fått den idé å lage et språk hvor klasser kan ha noe tilsvarende byvalue-result -parametere. Klasser har ingen konstruktører, og by-value-result parametere spesifiseres som

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

2 Grafisk grensesnitt 1

2 Grafisk grensesnitt 1 Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag Grafisk grensesnitt 1 Mildrid Ljosland 01.02.2011 Lærestoffet er utviklet for faget LN350D Applikasjonsutvikling for mobile enheter 2 Grafisk

Detaljer

Use Case-modellering. INF1050: Gjennomgang, uke 04

Use Case-modellering. INF1050: Gjennomgang, uke 04 Use Case-modellering INF1050: Gjennomgang, uke 04 Kompetansemål Modellering av krav Kunne modellere ulike typer krav UML-diagrammer Innføring i grunnleggende UML-modellering Bruksmønster (use case) Sekvensdiagram

Detaljer

Innholdsfortegnelse: Resymé: Denne leksjon gir en kort og enkelt oversikt over hvilke oppgaver som skal utføres i design- og programmeringsfasen.

Innholdsfortegnelse: Resymé: Denne leksjon gir en kort og enkelt oversikt over hvilke oppgaver som skal utføres i design- og programmeringsfasen. Kort innføring i design og programmeringsfasen Jarle Larsen/Tore Berg Hansen 2.11.04 Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO314 Prosjektrettet systemarbeid Resymé:

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

Kapittel 1: Datamaskiner og programmeringsspråk

Kapittel 1: Datamaskiner og programmeringsspråk Kapittel 1: Datamaskiner og programmeringsspråk 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

Detaljer

Soloball. Steg 1: En roterende katt. Sjekkliste. Test prosjektet. Introduksjon. Vi begynner med å se på hvordan vi kan få kattefiguren til å rotere.

Soloball. Steg 1: En roterende katt. Sjekkliste. Test prosjektet. Introduksjon. Vi begynner med å se på hvordan vi kan få kattefiguren til å rotere. Soloball Introduksjon Scratch Introduksjon Vi skal nå lære hvordan vi kan lage et enkelt ballspill med Scratch. I soloball skal du styre katten som kontrollerer ballen, slik at ballen ikke går i nettet.

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

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen Fakultet for naturvitenskap og teknologi EKSAMENSOPPGAVE Eksamen i: Dato: 20.02.2017 Klokkeslett: 09:00 13:00 INF-1100 Innføring i programmering og datamaskiners virkemåte Sted: Teorifagbygget, Hus 3,

Detaljer

Generelt om operativsystemer

Generelt om operativsystemer Generelt om operativsystemer Operativsystemet: Hva og hvorfor Styring av prosessorer (CPU), elektronikk, nettverk og andre ressurser i en datamaskin er komplisert, detaljert og vanskelig. Maskinvare og

Detaljer

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59 Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59 Formål Formålet med denne oppgaven er å gi trening i hele pensum og i å lage et større program. Løsningen du lager skal være

Detaljer

Generelt om operativsystemer

Generelt om operativsystemer Generelt om operativsystemer Hva er problemet? Styring av maskinvare og ressurser tilknyttet en datamaskin er komplisert, detaljert og vanskelig Maskinvare, komponenter og programvare endres og forbedres

Detaljer

Objektorientert programmering i Python

Objektorientert programmering i Python Objektorientert programmering i Python IN1000 Høst 2019 uke 8 Siri Moe Jensen Læringsmål uke 8 Repetisjon fra forrige uke Definere en klasse, opprette og arbeide med objekter: How-to

Detaljer

Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?

Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn? Dagens tema: 12 gode råd for en kompilatorskriver Hva skal gjøres med navn? Sjekking av navn Hvordan sjekke navn? Testutskrifter 12 gode råd En kompilator må også sjekke riktig navnebruk: Det må ikke forekomme

Detaljer

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14. Forkurs INF1010 Dag 2 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Gard Inge Rosvold (gardir@ifi.uio.no) Institutt for Informatikk, 14. januar 2016 Forkurs INF1010 - dag 2 Feilmeldinger 2 Forkurs INF1010

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF3110/4110 Programmeringsspråk Eksamensdag: 3. desember 2004 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 8 sider. Vedlegg:

Detaljer

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

Gruppenavn. Prosjektnavn Beskrivelse av design For Navn på systemet. Versjon <1.0> Gruppenavn Prosjektnavn Beskrivelse av design For Navn på systemet Versjon Revisjonshistorie Dato Versjon Beskrivelse av endring Forfatter Innhold 1. Innledning

Detaljer

Tilkobling og Triggere

Tilkobling og Triggere Tilkobling og Triggere Lars Vidar Magnusson October 12, 2011 Lars Vidar Magnusson () Forelesning i DAS 11.10.2011 October 12, 2011 1 / 25 Tilkobling med PHP PHP bruker databasespesifike moduler til å koble

Detaljer