Flere design mønstre. 19. september 2002, Tore Berg Hansen, TISIP
|
|
- Henrik Håland
- 7 år siden
- Visninger:
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 Kursleksjonene er forfatters eiendom. Som kursdeltaker kan du fritt bruke leksjonene til eget personlig bruk. Kursdeltakere som ønsker å
DetaljerProgramvare 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
DetaljerKapittel 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,
Detaljer1. 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
DetaljerTDT4102 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:
DetaljerLæ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
DetaljerFactory 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
DetaljerKlasser. 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)
DetaljerInnhold. 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
DetaljerKap3: 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,
DetaljerEksekveringsrekkefø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
DetaljerObjektorientert 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
DetaljerAlgDat 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
Detaljer2. 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
DetaljerSpesifikasjon 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
DetaljerAnsvarsdrevet 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
DetaljerUML 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
DetaljerDesign 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
DetaljerKanter, 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
DetaljerObjective-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..............................
DetaljerHusk 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'
DetaljerUNIVERSITETET 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:
DetaljerUML- 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
DetaljerInception 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
DetaljerCORBA 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
DetaljerUML-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
DetaljerUML-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
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
DetaljerLæ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
DetaljerInnhold 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,
DetaljerINF1000 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
DetaljerINF1010 - 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
DetaljerFra 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
DetaljerHiOA 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
DetaljerHva 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 å
DetaljerRepitisjonskurs. 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
DetaljerAlgDat 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):
DetaljerI 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
DetaljerDesign 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
DetaljerHvorfor 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,
DetaljerGeneriske 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
DetaljerHvorfor 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,
DetaljerKompleksitetsanalyse 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
DetaljerDebugging. 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...
DetaljerTittel 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
DetaljerINF1010 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
DetaljerUtfø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
Detaljer23.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
DetaljerLæ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,
DetaljerFra 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
DetaljerInfraWorld 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
DetaljerUKE 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
DetaljerTittel 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
Detaljer1. 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
DetaljerModellering 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
DetaljerSpesifikasjon 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
DetaljerEtter 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
DetaljerLæ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
DetaljerKomponentbasert 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
Detaljer2 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.
DetaljerADDISJON 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
DetaljerUniversitetet 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,
DetaljerEtter 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)
DetaljerFakultet 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
DetaljerFra 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
DetaljerLø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.
DetaljerSkilpaddefraktaler 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
DetaljerHensikten 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
DetaljerR 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
DetaljerJon 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
DetaljerDet 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
DetaljerEKSAMEN 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
DetaljerKlask-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
DetaljerINF130 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
DetaljerModellering 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
DetaljerBOKMÅ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
DetaljerEKSAMEN. 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
Detaljerclass 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
DetaljerKompilering 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
DetaljerLæ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
DetaljerRedd 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
DetaljerDiverse 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
DetaljerINF1300 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,
Detaljer2 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
DetaljerUse 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
DetaljerInnholdsfortegnelse: 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é:
DetaljerKapittel 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
DetaljerKapittel 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
DetaljerSoloball. 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.
DetaljerArv. 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
DetaljerEKSAMENSOPPGAVE. 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,
DetaljerGenerelt 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
DetaljerOblig 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
DetaljerGenerelt 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
DetaljerObjektorientert 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
DetaljerDagens 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
DetaljerForkurs 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
DetaljerUNIVERSITETET 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:
DetaljerGruppenavn. 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
DetaljerTilkobling 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