EKSAMEN I FAG TDT4180 - MMI Mandag 4. august 2008 Tid: kl. 0900-1300

Like dokumenter
EKSAMEN I FAG TDT4180 MMI Mandag 18. mai 2009 Tid: kl

EKSAMEN I FAG TDT MMI Lørdag 11. august 2012 Tid: kl

EKSAMEN I FAG TDT4180 MMI Torsdag 27. mai 2010 Tid: kl

EKSAMEN I FAG TDT MMI Lørdag 4. juni 2005 Tid: kl

Eksamensoppgave i TDT4180 Menneske-Maskin- Interaksjon (MMI)

EKSAMEN I FAG TDT4180 MMI Onsdag 28. mai 2008 Tid: kl

EKSAMEN I FAG TDT MMI Lørdag 26. mai 2012 Tid: kl

EKSAMEN I FAG TDT MMI Mandag 15. august 2011 Tid: kl

EKSAMEN I FAG TDT4180 MMI Lørdag 15. august 2009 Tid: kl

EKSAMEN I FAG TDT4180 MMI Lørdag 21. august 2010 Tid: kl

Oppgave 1 (30%) Grensesnittdesign

NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP. Løsningsforslag

EKSAMEN I FAG TDT4180/IT2401 MMI Onsdag 23. mai 2007 Tid: kl

EKSAMEN I FAG TDT4180 MMI Torsdag 27. mai 2010 Tid: kl

NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

Løsningsforslag (Løsningene i kursiv)

NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP LØSNINGSFORSLAG

Eksamensoppgave i TDT4180 Menneske-maskin-interaksjon

EKSAMEN I FAG TDT4180 MMI Onsdag 18. mai 2009 Tid: kl

EKSAMEN I FAG TDT MMI Tirsdag 1. juni 2004 Tid: kl

EKSAMEN I FAG SIF MMI OG GRAFIKK Lørdag 16. august 2003 Tid: kl

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

Hvordan føre reiseregninger i Unit4 Business World Forfatter:

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

EKSAMEN I FAG TDT4180 Menneske-maskin-interaksjon. Lørdag 27. juni 2006 Kl

Grafisk Brukergrensesnitt

Grafiske brukergrensesnitt med Swing og AWT

Gjennomgang av eksamen H99

Slope-Intercept Formula

Du må håndtere disse hendelsene ved å implementere funksjonene init(), changeh(), changev() og escape(), som beskrevet nedenfor.

Eksamensoppgave i TDT4180 Menneske-maskin-interaksjon

Fakultet for informasjonsteknologi, Institutt for datateknikk og informasjonsvitenskap AVSLUTTENDE EKSAMEN I. TDT42378 Programvaresikkerhet

5 E Lesson: Solving Monohybrid Punnett Squares with Coding

JList, JTree, JTable. JList

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

INF Våren Li' repe$sjon om Tråder og GUI. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk

Dynamic Programming Longest Common Subsequence. Class 27

Information search for the research protocol in IIC/IID

Feilmelding Årsak Løsning

Konseptuell modell, skjermdesign og konstruksjon

EMPIC MEDICAL. Etterutdanningskurs flyleger 21. april Lars (Lasse) Holm Prosjektleder Telefon: E-post:

IN2010: Algoritmer og Datastrukturer Series 2

UNIVERSITETET I OSLO

MVC Model, View, Controller

UNIVERSITY OF OSLO DEPARTMENT OF ECONOMICS

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Moving Objects. We need to move our objects in 3D space.

TB-615 / TB-617 Wireless slim keyboard. EN User guide SE Användarhandledning FI Käyttöohje DK Brugervejledning NO Bruksanvisning

Brukersentert design Kapittel 3 i Shneiderman

Andrew Gendreau, Olga Rosenbaum, Anthony Taylor, Kenneth Wong, Karl Dusen

Elektronisk innlevering/electronic solution for submission:

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Norsk (English below): Guide til anbefalt måte å printe gjennom plotter (Akropolis)

Administrasjon av postnummersystemet i Norge Post code administration in Norway. Frode Wold, Norway Post Nordic Address Forum, Iceland 5-6.

Brukerdokumentasjon Brukerdokumentasjon

AVSLUTTENDE EKSAMEN I/FINAL EXAM. TDT4237 Programvaresikkerhet/Software Security. Mandag/Monday Kl

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 INF1010

1 User guide for the uioletter package

// Translation // KLART SVAR «Free-Range Employees»

Elektronisk termostat med spareprogram. Lysende LCD display øverst på ovnen for enkel betjening.

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

GYRO MED SYKKELHJUL. Forsøk å tippe og vri på hjulet. Hva kjenner du? Hvorfor oppfører hjulet seg slik, og hva er egentlig en gyro?

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Compello Fakturagodkjenning Versjon 10 Software as a service. Tilgang til ny modulen Regnskapsføring

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

Paul Hinsch. MICADO AS Utviklet MapBasic applikasjoner i 10 år. Registreringsknapper og Objektdialog

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Compello Fakturagodkjenning Versjon 10.5 As a Service. Tilgang til Compello Desktop - Regnskapsføring og Dokument import

UNIVERSITETET I OSLO

INF1010. Grensesnittet Comparable<T>

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Databases 1. Extended Relational Algebra

XML enabled database. support for XML in Microsoft SQL Server 2000 & Martin Malý

case forts. Alternativ 1 Alternativer Sammensetning Objekt-interaktor med valg

EKSAMEN. Algoritmer og datastrukturer. Eksamensoppgaven: Oppgavesettet består av 11 sider inklusiv vedlegg og denne forsiden.

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

pnvdb Documentation Release Jan Tore Kyrdalen

TDT4100 Objektorientert programmering

EKSAMENSOPPGAVE I BI2034 Samfunnsøkologi EXAMINATION IN: BI Community ecology

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

Trådløsnett med. Wireless network. MacOSX 10.5 Leopard. with MacOSX 10.5 Leopard

(MVC - Model, View, Control)

HONSEL process monitoring

Perpetuum (im)mobile

STILLAS - STANDARD FORSLAG FRA SEF TIL NY STILLAS - STANDARD

EKSAMENSOPPGAVE I SØK 1002 INNFØRING I MIKROØKONOMISK ANALYSE

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

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

AMS-case forts. Eksemplifisering av modellbasert. tilnærming til design av brukergrensesnitt

buildingsmart Norge seminar Gardermoen 2. september 2010 IFD sett i sammenheng med BIM og varedata

MID-TERM EXAM TDT4258 MICROCONTROLLER SYSTEM DESIGN. Wednesday 3 th Mars Time:

Enkel og effektiv brukertesting. Ida Aalen LOAD september 2017

Den som gjør godt, er av Gud (Multilingual Edition)

Emneevaluering GEOV272 V17

Transkript:

Side 1 av 11 NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP Faglig kontakt under eksamen: Dag Svanæs, Tlf: 73 59 18 42 EKSAMEN I FAG TDT4180 - MMI Mandag 4. august 2008 Tid: kl. 0900-1300 Bokmål Sensuren faller 25. august Hjelpemiddelkode: D Ingen trykte eller håndskrevne hjelpemidler tillatt. Bestemt enkel kalkulator tillatt.

Side 2 av 11 Oppgave 1 (30%) Grensesnittdesign a. Affordance Forklar begrepet affordance slik det brukes av bl.a. Don Norman og i læreboka. Gi minst to eksempler fra datasystemer, og to fra andre produkter. Hvorfor er begrepet nyttig i interaksjonsdesign? b. Gestaltpsykologi Forklar de 3-4 viktigste gestaltprinsippene relatert til visuell komposisjon. Hvorfor er det nyttig å ha kjennskap til disse prinsippene når man skal komponere et skjermbilde? Hvilke implisitte sammenhenger mellom elementene kan leses ut av layoutet under. Relater dette til gestaltprinsippene. Anta at mønsteret i elementene I og K er en farge. A B C D E F G H I J K L M N O P Q

Side 3 av 11 Oppgave 2 (30%) Designprosessen og evaluering ISO 9241-11 definerer brukskvalitet (usability) som følger:... the effectiveness, efficiency, and satisfaction with which specified users achieve specified goals in particular environments På norsk: Anvendbarhet, effektivitet og tilfredsstillelse for bestemte brukere med bestemte mål i bestemte omgivelser. a. En konsekvens av denne definisjonene er at brukskvalitet er en kontekstavhengig egenskap ved et produkt. Hvilke konsekvenser har dette for utviklingen av brukervennlige produkter? b. Definisjonen sier at det som skal måles er anvendbarhet, effektivitet og tilfredsstillelse. Hvordan måler man dette i en brukbarhetstest? Hvilke av disse målene er kvantitative og hvilke er kvalitative?

Side 4 av 11 Oppgave 3 (40%) Grensesnittkonstruksjon Du skal i denne oppgaven vise bruk av SWING-komponenter og MVC-arkitektur for et gitt eksempel. Eksempelet som er skissert i figur 1 og figur 2 er hentet fra et tenkt chatteprogram for barn. Brukeren skal kunne definere seg fjes for tilhørende bokstav-kombinasjoner. For enkelthets skyld er antall fjes satt fast til 12 stk.. For hvert fjes som brukeren ønsker skriver han/hun inn et navn, en bokstavkombinasjon (kode) og velger seg et ikon fra en fast meny av 35 slike ved å trykke på knappen Velg ikon. Til venstre i figur 1 er en liste med de 12 fjesene. Programmet starter med at ingen fjes er definert. Når brukeren velger et fjes kan han/hun editere på definisjonen i området i midten. Området til høyre viser alltid en totaloversikt over alle de 12 fjesene med tilhørende koder (dersom definert). Fjes som ikke er definert vises som en tom sirkel uten kode. Området til høyre er passivt, d.v.s. at ingenting skjer når disse ikonene blir trykket på. Området til høyre oppdateres automatisk når det skjer forandinger i definisjonen av fjesene. Figur 1, Grensesnittet for å definere egne fjes. Figur 2. Popup for å velge et ikon. Figur 2 viser dialogboksen som kommer opp for å velge ikon blant de 35 mulige. Denne dialogboksen skal ikke beskrives i løsningen. Figur 2 er kun med for å vise hva brukeren ser. Det er kun grensesnittet i figur 1 som skal beskrives i løsningen.

Side 5 av 11 Du kan anta at ikonene ligger som ikonfiler med navn ikon1.jpg, ikon2.jpg o.s.v. Ikonet for den tomme sirkelen heter sirkel.jpg. Du kan videre anta at du kan bruke SWING-klassen JLabel for å tegne ut ikoner og ikoner med tekst. (Se vedlegget for detaljer). Det betyr at du aldri behøver å lagre selve ikonene, kun stringer som angir hvilke filer de skal hentes fra. Du skal i løsningen ikke gjøre rede for mekanismene for layout. Fokus i oppgaven er på informasjonsflyt og datastrukturer. Du skal heller ikke beskrive mekanisme for scrolling i listen. Besvarelsen skal inneholde følgende: En forklaring av hvordan du vil gjøre bruk av MVC prinsippet i din løsning. Hvor ligger informasjonen om de 12 fjesene? Tegn opp de klassene du definerer, og deres metoder og relasjoner. Tegn opp objektene som vil eksistere under kjøring og deres relasjoner. Tegn opp sekvensdiagrammer for følgende: o Initielt når objektene skapes og vinduet vises første gang. o Når brukeren velger et fjes i listen til venstre. o Når brukeren forandrer bokstavkode for valgte fjes ved å taste inn en ny kode i feltet for kode i midten. I vedlegget ligger nødvendig definisjon av en del nyttige klasser og grensesnitt.

Side 6 av 11 Vedlegg: En del nyttige klasser og grensesnitt for oppgave 3. Det følgende er klippet og limt fra Java definisjonen. class PropertyChangeSupport This is a utility class that can be used by objects that support bound properties. You can use an instance of this class as a variable in your object and delegate various work to it. public void addpropertychangelistener(propertychangelistener listener) Add a PropertyChangeListener to the listener list. The listener is registered for all properties. Parameters: listener - The PropertyChangeListener to be added public void firepropertychange(string propertyname, Object oldvalue, Object newvalue) Report a bound property update to any registered listeners. No event is fired if old and new are equal and non-null. Parameters: propertyname - The programmatic name of the property that was changed. oldvalue - The old value of the property. newvalue - The new value of the property. interface PropertyChangeListener A "PropertyChange" event gets fired whenever an object changes a "bound" property. You can register a PropertyChangeListener with a source object so as to be notified of any bound property updates. public void propertychange(propertychangeevent evt) This method gets called when a bound property is changed. Parameters: evt - A PropertyChangeEvent object describing the event source and the property that has changed.

Side 7 av 11 class PropertyChangeEvent A "PropertyChange" event gets delivered whenever an object changes a "bound" or "constrained" property. A PropertyChangeEvent object is sent as an argument to the PropertyChangeListener method. Normally PropertyChangeEvents are accompanied by the name and the old and new value of the changed property. Null values may be provided for the old and the new values if their true values are not known. An event source may send a null object as the name to indicate that an arbitrary set of if its properties have changed. In this case the old and new values should also be null. public String getpropertyname() Gets the programmatic name of the property that was changed. Returns: The programmatic name of the property that was changed. May be null if multiple properties have changed. public Object getnewvalue() Gets the new value for the property, expressed as an Object. Returns: The new value for the property, expressed as an Object. May be null if multiple properties have changed. public Object getoldvalue() Gets the old value for the property, expressed as an Object. Returns: The old value for the property, expressed as an Object. May be null if multiple properties have changed. class JPanel JPanel is a generic lightweight container. public Component add(component comp) Appends the specified component to the end of this container.

Side 8 av 11 class Jlist JList is a component that allows the user to select one or more objects from a list. A separate model, ListModel, represents the contents of the list. The selection state is managed by a separate delegate object, an instance of ListSelectionModel. The contents of a JList can be dynamic, in other words, the list elements can change value and the size of the list can change after the JList has been created. The JList observes changes in its model. A correct implementation of ListModel notifies it's listeners each time a change occurs. Simple dynamiccontent JList applications can use the DefaultListModel class to store list elements. This class implements the ListModel interface and provides the java.util.vector API as well. public void setmodel(listmodel model) Sets the model that represents the contents or "value" of the list. public void addlistselectionlistener(listselectionlistener listener) Adds a listener to the list that's notified each time a change to the selection occurs. public void setselectionmode(int selectionmode) Determines whether single-item or multiple-item selections are allowed. ListSelectionModel.SINGLE_SELECTION: Only one list index can be selected at a time. class DefaultListModel implements ListModel A data model that provides a List with its contents (a ListModel). public void addelement(object obj) Adds the specified component to the end of this list. public Object getelementat(int index) Returns the component at the specified index.

Side 9 av 11 public void setelementat(object obj, int index) Sets the component at the specified index of this list to be the specified object. interface ListSelectionListener The listener that's notified when a lists selection value changes. public void valuechanged(listselectionevent e) Called whenever the value of the selection changes. class ListSelectionEvent An event that characterizes a change in the current selection. The change is limited to a row interval. ListSelectionListeners will generally query the source of the event for the new selected status of each potentially changed row. public int getfirstindex() Returns the index of the first row whose selection may have changed. If the selection mode is ListSelectionModel.SINGLE_SELECTION, this method returns the selected row starting at row 0. class JTextField JTextField is a lightweight component that allows the editing of a single line of text. public String gettext() Returns the text contained in this JTextField public void settext(string t) Sets the text of this JTextField to the specified text.

Side 10 av 11 public void addactionlistener(actionlistener l) Adds the specified action listener to receive action events from this JTextField. interface ActionListener The listener interface for receiving action events. The class that is interested in processing an action event implements this interface, and the object created with that class is registered with a component, using the component's addactionlistener method. When the action event occurs, that object's actionperformed method is invoked. public void actionperformed(actionevent e) Invoked when an action occurs. class ActionEvent A semantic event which indicates that a component-defined action occured. This high-level event is generated by a component (such as a Button) when the component-specific action occurs (such as being pressed). The event is passed to every every ActionListener object that registered to receive such events using the component's addactionlistener method. The object that implements the ActionListener interface gets this ActionEvent when the event occurs. The listener is therefore spared the details of processing individual mouse movements and mouse clicks, and can instead process a "meaningful" (semantic) event like "button pressed". public Object getsource() Returns: The object on which the Event initially occurred.

Side 11 av 11 class JLabel A display area for a short text string or an image, or both. A label does not react to input events. A JLabel object can display either text, an image, or both. public void settext(string text) Defines the single line of text this component will display. public void seticon(icon icon) Defines the icon this component will display. Merk: Selve ikonet blir laget v.h.a. hjelpeklassen ImageIcon, slik at kallet for å hente et ikon for en JLabel fra filen myimage.jpg blir: myjlabel.seticon(new ImageIcon("myImage.jpg")) class JButton An implementation of a "push" button. void addactionlistener(actionlistener l) Adds an ActionListener to the button. void settext(string text) Sets the button's text.