Tittel Objektorientert systemutvikling 3

Like dokumenter
Tittel Objektorientert systemutvikling 2

Tittel Objektorientert systemutvikling 1. Eksamenstid, fra-til Ant. oppgaver 6

EKSAMENSFORSIDE SKRIFTLIG EKSAMEN

EKSAMENSFORSIDE SKRIFTLIG EKSAMEN

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

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

UNIVERSITETET I OSLO

EKSAMEN. Objektorientert programmering

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

Design Patterns - mønstre. Kirsten Ribu

Eksamen Objektorientert Programmering 2011

Repitisjonskurs. Arv, Subklasser og Grensesnitt

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

Kap3: Klassemodellering

INF1010 Arv. Marit Nybakken 2. februar 2004

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

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

UNIVERSITETET I OSLO

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

UNIVERSITETET I OSLO

Læringsmål for forelesningen

Eksamen Objektorientert Programmering 2013

Objektorientert programmering med Java ISBN

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

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

Tilstandsmaskiner med UML og Java

UNIVERSITETET I OSLO

. Ved sensur vl1 ahe bokstaverte deloppgaver (a, b, c,...) telle like mye.

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

Kapittel 8: Programutvikling

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

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

Objektorientert design av kode. Refaktorering.

UML-Unified Modeling Language

Høgskoleni østfold EKSAMEN. ITF10213 Innføring i programmering (Høst 2013)

Design Patterns - mønstre

UNIVERSITETET I OSLO

Argumenter fra kommandolinjen

Emnenavn: Objektorientert programmering. Faglærer: Lars Emil Knudsen

Grafisk Brukergrensesnitt

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

UNIVERSITETET I OSLO

Grafiske brukergrensesnitt med Swing og AWT

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

Læringsmål for forelesningen

(MVC - Model, View, Control)

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE. Antall sider (Inkl forsiden): 8. Alle trykte og håndskrevne

EKSAMEN OBJEKTORIENTERT PROGRAMMERING Alle trykte og skrevne. Java API dokumentasjon er tilgjengelig lokalt på hver maskin.

IN2001: Kravhåndtering, modellering, design

EKSAMENSOPPGAVE. Vil det bli gått oppklaringsrunde i eksamenslokalet? Svar: NEI

HØGSKOLEN I SØR-TRØNDELAG

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

LC191D/LO191D Videregående programmering mai 2010

Eksamensbesvarelser i REA3015 Informasjonsteknologi 2

Norges Informasjonsteknologiske Høgskole

UNIVERSITETET I OSLO

lfæ~~~~:::j~~:~l -.~=:~-t::-d I Alle trykte og håndskrevne EKSAMENSOPPGA VE Side l av 5 Eksamenstid:

G høgskolen i oslo. Emne: Algoritmer og datastrukturer. Emnekode: 80131A. Faglig veileder: UlfUttersrud. Gruppe(r) : Dato:

Side 1 av 11, prosesser, tråder, synkronisering, V. Holmstedt, HiO 2006

klassen Vin må få en ny variabel Vin neste alle personvariable (personpekere) i listeklassen må byttes til Vin

Eksamensveiledning. LOKALT GITT SKRIFTLIG EKSAMEN DTE2001 Produksjon og materialer. Sist redigert 03/03/19. Gjelder fra eksamen 2019.

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

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

1 t:n'v'\ekode LO325E. Alle ~vne og trykte. GOd'"j(jent kalkulator

HØGSKOLEN I SØR-TRØNDELAG

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Kapittel 7: Mer om arv

UNIVERSITETET I OSLO

2012 2a. C rc; void main() { rc = new C (); rc.m2(); } } INF 3110/ INF /28/13 1

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser. En oversikt over kapittel 19 i boka

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

ANTDAGER = 358; I Ifra nyttår 08 til 08 1ed julaften

Tillatte hjelpemidler: alle skrevne og trykte. Antall sider: 2 (+ 1 side vedlegg, bakerst). Oppgave 1 [25%]

UNIVERSITETET I OSLO

Forklaring til programmet AbstraktKontoTest.java med tilhørende filer Konto.java, KredittKonto.java, SpareKonto.java

I dag UML. Domenemodell visualisering av konsepter. Eksempel. Hvordan finne domeneklasser?

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

UNIVERSITETET I OSLO

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

HØGSKOLEN I SØR-TRØNDELAG

Planlegging og dokumentasjon

HØGSKOLEN I SØR-TRØNDELAG

Fra krav til objekter. INF1050: Gjennomgang, uke 05

UNIVERSITETET I OSLO

Post-it spørsmål fra timen (Arv og subklasser)

Transkript:

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 vedl. 3 Tillatte hjelpemidler: Ingen Ansvarlig avdeling SA Eksamenstid, fra-til 09.00-12.00 (tre timer) Ant. oppgaver Ant. vedlegg 6 0 Opplysninger om vedlegg: Merknader: Hver oppgave i oppgavesettet vektes likt. Hvis en oppgave har bokstavpunkter, vektes hvert bokstavpunkt i en oppgave likt innenfor oppgavens nummer. KANDIDATEN MÅ SELV KONTROLLERE AT OPPGAVESETTET ER FULLSTENDIG

Oppgave 1 XP Agile er kilde til en samling med mønstre som alle sammen har forkortelser på tre bokstaver. Ett eksempel er SRP. Dette mønsteret kan assosieres med et mønster fra kilden GRASP som også har sammenheng med ansvar. Velg det mønsteret fra GRASP som best kan assosieres med SRP og skriv det du vet om dette mønsteret. Side 20-21 refererer Single Responsibility Principle til DeMarcos og Page-Jones kohesjon og til GRASPs high cohesion. SRP handler om at objekter fra en klasse kun skal ha ett ansvar/ansvarsområde. High Cohesion innebærer høy sammenheng i ansvar, og dekker derfor omtrent det samme. En god besvarelse reflekterer også over eventuell fordeler, ulemper og bruksområder for high cohesion/srp, og de muligheter for semantisk problemløsning som konsentrerte ansvarsområder automatisk gir. Oppgave 2 Et enkeltstående problem kan enten løses med aggregering eller spesialisering-generalisering. Diskuter forskjellen på aggregering og spesialisering-generalisering. En god besvarelse redegjør først for hva de to ulike strategiene går ut, helst med basis i enkle diagrammer. Deretter diskuteres aspekter ved gjenbrukbarhet. Det vesentlige er likevel å vise når samarbeidet er så komplisert at det lønner seg å aggregere ulike spesialist-objekter, og når samarbeidet er så spesialisert at det i stedet lønner seg å arve fra en eksisterende klasse. Det kan være klokt å peke på velkjente eksempler, som MoveableLens som oppnår bevegelighet gjennom spesialisering ClassSymbol som oppnår en ny form gjennom aggregering av fire LineElements Oppgave 3 Mønsteret Chain-of-Responsibility er et velkjent mønster for å praktisere mønsteret Command Pattern. Beskriv en programdesign der du trenger å praktisere Command Patterns krav til å isolere mellom avsender og mottaker. Beskriv hvordan du kan bruke CoR i denne programdesignen for å praktisere mønsteret Command Pattern. Her kan nesten hvilken som helst av de velkjente prosjektene som er gjennomgått og arbeidet med gjennom vinteren brukes som illustrasjon. Omtrent som en internett-pakke vandrer fra host til host, ved å hoppe fra switch til switch på veien fra avsender til mottaker, kan et metodekall med eventuelle argumenter hoppe fra objekt til objekt til det ender opp hos det objektet som skal behandle metoden.

En god besvarelse tar i bruk UML og lager sekvensdiagram og klassediagram for å illustrere både prinsippet og det praktiske eksemplet, tatt fra for eksempel prosjektet EasyJava2D eller prosjektet SimpleDiagram. CoR implementerer også Command Pattern og som i våre prosjekter også Mediator. Besvarelse skal vise hvordan dette er i paksis, som når for eksempel når et JSlider-objekt vil sende oppdaterte verdier til et objekt som simulerer optikk, altså når Scalecontroller vil sende ny verdi til MoveableLens, og ingen av objektene eller klassene kjenner hverandre. Et interessant aspekt er at kohesjonen nyter godt av både CoR og Command Pattern. Oppgave 4 Grafiske brukergrensesnitt kan ha mye til felles når det gjelder utseende. Men ofte ser vi ulike typer organisering av vinduer. Noen vinduer er organisert med helt like store ruter, andre har et femdelt utseende med den største delen i midten. Noen verktøy bruker aggregering for å administrere utseendet. Ett eksempel er setlayout(new BorderLayout); Velg ut hvilke mønstre for programdesign du kan assosiere med denne strategien for å administrere vinduets utseende. Begrunn valgene av mønstre. En grafisk container (beholder) er parent til de grafiske elementene den organiserer. Meldingen setlayout går til et container-objekt som skal organisere sine grafiske barn. Men container-objektet vil ikke ta seg av barna sine selv, men installerer en nanny som har sin egen bestemte strategi for å organisere barna. Derfor er det nærliggende å bruke Strategy Pattern for å forstå denne mekanismen. Dessuten gir layout-objektet (altså nanny-en ) en helt ny oppførsel til container-objektet. Dermed kan vi også forstå mekanismen ved hjelp av Decorator Pattern. Oppgave 5 Forklar formål og teknikk for følgende kode: class DateRenderer extends DefaultTableCellRenderer { private Format formatter; DateRenderer() { formatter = new SimpleDateFormat("EEEE d MMMM yyyy HH:mm"); protected void setvalue(object o) { settext(o instanceof Date? formatter.format(o) : o.tostring());

Klassen DateRenderer lager en spesialisering av den eksisterende klassen DeafultTableCellRenderer. Poenget er å gjøre noe mer spesielt ut av visningen i en tabellcelle enn det som vanligvis skjer. Det spesielle her er at dataene som vises, skal vises i et bestemt datoformat, bestemt av det aggregerte objektet formatter, som får sine kunster fra klassen SimpleDateFormat. Ordet protected må brukes i stedet for private eller public, fordi metoden setvalue er en call-back metode. Dette betyr at den allerede er deklarert i superklassen, og skal deklareres og lages på nytt i denne, spesialiserte, klassen. Dermed er det klokt at innkapslingen er den samme. Ordet protected brukes nettopp i disse sammenhengene, fordi det brukes for å kapsle inn klassemedlemmer som skal være tilgjengelige i subklassene. Klassen DefaultCellRenderer er ganske enkelt en spesialisert JLabel. Dette framgår ikke av koden ovenfor, men er noe som er demonstrert gjennom undervisning, pensumlitteratur og prosjektarbeid. Oppgave 6 I Java brukes JSplitPane for å dele opp et vindu i to horisontale eller to vertikale deler, der størrelsen på hver del enkelt kan reguleres av en bruker. Forklar hvorfor vi kan si at Java kanskje bruker mønsteret Composite Pattern her. Forklar også mønsteret Decorator Pattern og hva som er sammenhengen mellom Composite Pattern og Decorator Pattern. Hvis hvert av panelene får ny funksjonalitet ved at det installeres et objekt i panelet, kan vi snakke om Decorator Pattern, der panelet er decoreée altså den som blir dekorert, eller tilført ny funksjonalitet. I dette tilfellet er den nye funksjonaliteten evnen til å krympe og utvide seg

i par med et annet panel. I tillegg er panelene utstyrt med rullebaner som vi fra før vet implementeres med Decorator. Siden det er flere decorées som reagererer på det samme signalet, er det lett å bestemme seg for å forstå mekanismen ved hjelp av Composite Pattern. Resultater: Oppgave nr 1 2 3 4 5 6 Alle SNITT 66,9 65,1 77,9 60,2 66,6 61,0 66,3 Tabellen viser hvordan hver oppgave ble besvart i snitt på en skala fra 0 til 100 poeng Uoffisiell Karakterfordeling A 1 B 2 C 5 D 5 E 0 F 2 SUM 15