Kalkylprogrammet XL. modellera ett system utan att uppdragsgivaren styr designen,



Relevanta dokument
Beijer Electronics AB 2000, MA00336A,

Isolda Purchase - EDI

Support Manual HoistLocatel Electronic Locks

2.1 Installation of driver using Internet Installation of driver from disk... 3

How to format the different elements of a page in the CMS :

Quick Start Guide Snabbguide

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Webbregistrering pa kurs och termin

Michael Q. Jones & Matt B. Pedersen University of Nevada Las Vegas

Webbreg öppen: 26/ /

Information technology Open Document Format for Office Applications (OpenDocument) v1.0 (ISO/IEC 26300:2006, IDT) SWEDISH STANDARDS INSTITUTE

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

SVENSK STANDARD SS-EN ISO 19108:2005/AC:2015

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Styrteknik: Binära tal, talsystem och koder D3:1

Installation av F13 Bråvalla

FÖRBERED UNDERLAG FÖR BEDÖMNING SÅ HÄR

Windlass Control Panel v1.0.1


Isometries of the plane



TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

Att skriva till och läsa från terminalfönstret

8 < x 1 + x 2 x 3 = 1, x 1 +2x 2 + x 4 = 0, x 1 +2x 3 + x 4 = 2. x 1 2x 12 1A är inverterbar, och bestäm i så fall dess invers.

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

Preschool Kindergarten

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

Från Excel laddningar till web arbetsflöden

Styrteknik : Funktioner och funktionsblock

Översikt Föreläsning 1. Trivicalc. Vad är trivicalc? En cell. Områden på skärmen. SMD168/SMD135 Fredrik Bengtsson

electiaprotect GSM SEQURITY SYSTEM Vesta EZ Home Application SMART SECURITY SYSTEMS! SVENSKA ios Android

Calculate check digits according to the modulus-11 method

Det finns en handledning till kortet på hemsidan. AVR STK500.

Översättning av galleriet. Hjälp till den som vill...

LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik

TAGFAK, semicolon separated

Alias 1.0 Rollbaserad inloggning

Problem som kan uppkomma vid registrering av ansökan

RADIATION TEST REPORT. GAMMA: 30.45k, 59.05k, 118.8k/TM1019 Condition D

Annonsformat desktop. Startsida / områdesstartsidor. Artikel/nyhets-sidor. 1. Toppbanner, format 1050x180 pxl. Format 1060x180 px + 250x240 pxl.

Datasäkerhet och integritet

SVENSK STANDARD SS :2010

Hållbar utveckling i kurser lå 16-17

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

EXTERNAL ASSESSMENT SAMPLE TASKS SWEDISH BREAKTHROUGH LSPSWEB/0Y09

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

Workplan Food. Spring term 2016 Year 7. Name:

Uttagning för D21E och H21E

1. Unpack content of zip-file to temporary folder and double click Setup

Boiler with heatpump / Värmepumpsberedare

Scalable Dynamic Analysis of Binary Code

FORTA M315. Installation. 218 mm.

Viktig information för transmittrar med option /A1 Gold-Plated Diaphragm

Recitation 4. 2-D arrays. Exceptions

Adress 15. August 2014

Byggdokument Angivning av status. Construction documents Indication of status SWEDISH STANDARDS INSTITUTE

[HUR DU ANVÄNDER PAPP] Papp är det program som vi nyttjar för att lotta turneringar och se resultat.

Grafisk teknik IMCDP IMCDP IMCDP. IMCDP(filter) Sasan Gooran (HT 2006) Assumptions:


Application Note SW

Tentamen i Matematik 2: M0030M.

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

Product configurations Produire configuration Produkt konfigurationen Producto configuraciones Produkt konfigurationerna

Monteringsanvisning Nödutrymningsbeslag ASSA 179E

Exempel på uppgifter från 2010, 2011 och 2012 års ämnesprov i matematik för årskurs 3. Engelsk version

27. GUI Programming. Java. Summer 2008 Instructor: Dr. Masoud Yaghini

GeoGebra in a School Development Project Mathematics Education as a Learning System

SVENSK STANDARD SS

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

Får endast utföras av behörig personal. May only be carried out by authorized electrician

Every visitor coming to the this website can subscribe for the newsletter by entering respective address and desired city.

RUP är en omfattande process, ett processramverk. RUP bör införas stegvis. RUP måste anpassas. till organisationen till projektet

Second handbook of research on mathematics teaching and learning (NCTM)

Varmt välkommen som gästföreläsare till Juridiska fakulteten vid Lunds universitet

Accomodations at Anfasteröd Gårdsvik, Ljungskile

Materialplanering och styrning på grundnivå. 7,5 högskolepoäng

ASSEMBLY INSTRUCTIONS SCALE SQUARE - STANDARD

PORTSECURITY IN SÖLVESBORG

Surfaces for sports areas Determination of vertical deformation. Golvmaterial Sportbeläggningar Bestämning av vertikal deformation

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Exempelsamling Assemblerprogrammering

Grafisk teknik IMCDP. Sasan Gooran (HT 2006) Assumptions:

denna del en poäng. 1. (Dugga 1.1) och v = (a) Beräkna u (2u 2u v) om u = . (1p) och som är parallell

Protokoll Föreningsutskottet

Grafisk teknik. Sasan Gooran (HT 2006)

Beslut om bolaget skall gå i likvidation eller driva verksamheten vidare.

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

ASSEMBLY INSTRUCTIONS SCALE - SYSTEM

Föreläsning 8. Designmönster

Bankernas kontonummer Bank Account Numbers in Swedish Banks

ASSEMBLY INSTRUCTIONS SCALE CIRCLE - STANDARD

karl andersson & söner

Chapter 1 : Who do you think you are?

Examensarbete Introduk)on - Slutsatser Anne Håkansson annehak@kth.se Studierektor Examensarbeten ICT-skolan, KTH

2.45GHz CF Card Reader User Manual. Version /09/15

Lights in Alingsås Nordens största workshop inom ljussättning i offentlig miljö.

HANTERING AV UPS CX

Transkript:

Lunds Tekniska Högskola Datavetenskap Lennart Andersson EDA061/EDAF10 Projekt 2 2009-10-25 Kalkylprogrammet XL Syfte Efter att gjort denna uppgift skall du kunna modellera ett system utan att uppdragsgivaren styr designen, använde MVC-arkitektur, utforma ett system med icketriviala beroenden, tillämpa principer för paketdesign, använda designmönstren Observer och Listener, göra felhantering samt implementera kvalificerade associationer. Uppgift Utforma och implementera det program vars referensmanual finns som bilaga. Programmet liknar i vissa avseende ett kommersiellt program med ett likalydande namn. Notera dock att varje kalkylark i XL har ett eget fönster i användargränssnittet med egna menyer och att tomma rutor ej får refereras i uttryck. Designkrav Modellen skall separeras från vyn med hjälp av Observer-mönstret så att de klasser som utgör modellen kan kompileras utan tillgång till något användargränssnitt. Implementering Du skall själv designa och implementera de klasser som utgör modellen. Modellen skall hålla reda på den information som en användare av programmet matar in via användargränssnittet. Huvuddelen av användargränssnittet och ett paket för att representera aritmetiska uttryck finns att hämta på projekthemsidan. expr innehåller klasser för att representera aritmetiska uttryck med metoder för att beräkna värdet av ett uttryck och att skapa den interna representationen från strängar. Du behöver inte göra några förändring eller tillägg av klasserna i detta paket. Om du anser att det är nödvändigt skall du diskutera detta med handledaren innan du gör förändringen. Paketet innehåller en test-klass som illustrerar användningen. 1

view innehåller det grafiska användargränssnittet utan några referenser till den modell som du skall konstruera. Det går att starta programmet, men nästan all funktionalitet saknas. Du skall tillfoga funktionaliteten genom att komplettera lyssnare med anrop av metoder i modellen och observatörer som uppdaterar vyn när tillståndet i modellen förändras. Detta kräver att du tillfogar attribut och konstruerare i många klasser samt implementerar update-metoden i de klasser som skall vara observatörer. Eventuellt kan det vara bra att tillfoga någon klass. Klassen Gui innehåller en main-metod för att starta kalkylprogrammet. control innehåller meny-klasserna. Du skall tillfoga funktionaliteten genom att implementera actionperformed Detta kräver ofta att klassen ges tillgång till vyn eller modellen. Några klasser är kompletta. xl innehåller några abstraktioner och klasserna XLBufferedReader och XLPrintStream. De senare skall flyttas till det paket där de hör hemma. XLPrintStream behöver en liten anpassning till din modell medan XLBufferedReader behöver kompletteras. Studera dokumentation av Set, Map och Map.Entry i java.util. Katalogen test innehåller några testfiler. De filer som innehåller error i namnet är manuellt konstruerade och innehåller fel som programmet skall upptäcka. Filer som sparas med programmet skall vara korrekta och kunna läsas in igen. Paketen och testkatalogen finns att hämta från projekthemsidan som ett eclipse-projekt. Det är ett krav från uppdragsgivaren att minnesbehovet för modellen av kalkylarket ej skall bero på arkets storlek utan bara på den mängd information som matats in i arket. När kalkylblad sparas som filer skall innehållet i varje icketom ruta sparas som en sträng med adressen, ett = och innehållet på samma sätt som det visas i editorn. Varje ruta beskrivs på en rad. Alla mellanslag är signifikanta. Det kalkylark som som visas i referensmanualen skapas om en fil med följande innehåll öppnas. a1=#x = a2=#y = a3=#x*y = b1=2 b2=3 b3=b1*b2 Klassen String innehåller lämpliga metoder för att extrahera komponenterna i en rad. Om någon rad är syntaktiskt felaktig eller beräkningen av kalkylarket ger fel räcker det att programmet rapporterar det fel som upptäcks först. Gör inga optimeringar, utom den som uppdragsgivaren föreskrivit, förrän det visar sig att de behövs! Redovisning Gruppen skall skall träffa en lärare vid två designmöten. Vid det första mötet skall användningsfall, paketindelning och klassdiagram för programmet presenteras. Elektronisk inlämning skall göras senast 24 timmar före mötet till kursnamnet (eda061 eller edaf10) på domänen cs.lth.se med 2

Subject-raden xl by user1 user2 user3 user4. För eda061 är mötet schemalagt till vecka 5 i HT1. För edaf10 är motsvarande möte schemalagt till vecka 2 i HT2. Grupperna registrerar sig via Sam. Inlämningen skall omfatta användningsfall och klassdiagram. Varje användningsfall skall beskrivs med några rader text, ungefär som rutorna i Martin på sidorna 195 198. Beskrivningen skall ange vad användaren gör, vad som skall hända utifrån användarens perspektiv och vilka fel som kan inträffa. UML-diagram för användningsfall skall ej konstrueras. Ett klassdiagram för alla nya paket. Diagrammen skall vara skapade eller genererade med ett Eclipse-baserat verktyg och skall visa klasser, attribut, metoder, arv och generaliseringar men inte associationer och andra beroenden. Diagrammen bifogas som jpg eller pdf. Inför arbetet i gruppen bör du fundera på följande. Frågorna kommer att dryftas på första designmötet. 1. Vilka klasser bör finnas för att representera ett kalkylark? 2. En ruta i kalkylarket skall kunna innehålla en text eller ett uttryck. Hur modellerar man detta? 3. Hur skall man hantera uppdragsgivarens krav på minnesresurser? 4. Vilka klasser skall vara observatörer och vilka skall observeras? 5. Vilket paket och vilken klass skall hålla reda på vad som är Current slot? 6. Vilken funktionalitet är redan färdig och hur fungerar den? Titta på klasserna i viewpaketet och testkör. 7. Det kan inträffa ett antal olika fel när man försöker ändra innehållet i ett kalkylark. Då skall undantag kastas. Var skall dessa undantag fångas och hanteras? 8. Vilken klass används för att representera en adress i ett uttryck? 9. När ett uttryck som består av en adress skall beräknas används gränssnittet Environment. Vilken klass skall implementera gränssnittet? 10. Om ett uttryck i kalkylarket refererar till sig själv, direkt eller indirekt, så kommer det att bli bekymmer vid beräkningen av uttryckets värde. Föreslå något sätt att upptäcka sådana cirkulära beroenden! Det finns en elegant lösning som du får chansen att upptäcka. Om du inte hittar den så kommer handledaren att avslöja den. Vid det andra mötet (i vecka 7 under HT1 resp. vecka 3 i HT2) skall ett fungerande program demonstreras och förändringar i designen redovisas. Elektronisk inlämning skall göras senast 24 timmar före mötet. Inlämningen skall innehålla ett klassdiagram för varje paket utom expr och en zip-fil som innehåller hela eclipse-projektet. E-postbrevet skall också innehålla uppgift om hur mycket tid gruppmedlemmarna använt för inlämningsuppgiften. Eventuella kompletteringar skall utföras före läsperiod 2 resp. senast vecka 4 i HT2. Det är tillåtet för studenter i eda061 att göra inlämningar enligt edaf10:s schema och omvänt efter anmälan till kursansvarig. Korrigeringar och kompletteringar till detta dokument kan dyka upp på kursens hemsida. 3

Introduction The XL Reference Manual, Revision 5 The XL 1 spread sheet program provides a scratch pad for problems involving arithmetic. The program maintains five different areas on the screen: the menu bar, the current slot indicator, the status field, the editor, and the storage area. The menu bar has two pull down menus. The current slot indicator and the status field are located just below the menu bar. They are used for displaying information and error messages about the spread sheet. The editor is located at the following line and provides a simple line editor that can be used for entering data into the storage area. The storage area occupies the remainder of the frame window. It will show the contents of the spread sheet, as it is interactively changed through the editor and the menus. The storage area The storage area is a matrix of slots, with columns ranging from A to H and rows from 1 to 10. The left border of the storage area shows the line numbers and the top border shows the column letters. Each slot can store an expression or a comment. If a slot contains an expression the computed value of that expression is displayed. If it contains a comment the text is displayed. Each slot has an address constructed by the column and row indices. The address of the first slot is A1 or equivalently a1. The last slot is named H10 or h10. The user may construct expressions over slots and thereby produce new values from those already present in the storage area. The main purpose of the spread sheet program is to relate the positions of the numbers rather than the actual numbers. An example: If the numbers 2 and 3 are entered into the b1 and b2 and the expression b1*b2 is entered into b3 then the value displayed in b3 will be 6. Since the program stores the relations between the slots it is possible to change the value of b1 or b2, forcing that also the value of b3 is changed to remain the product of the values in b1 and b2. Each slot can be of three kinds: blank, expression or comment. A blank slot has no value. A comment is a string. The value of an expression slot is a floating point number. An expression is built of constants, slot addresses, additions, subtractions, multiplications, and divisions. Parentheses may be used to change the order of computation in the usual way. These expressions are entered by the user and may be changed at any time. 1 This programming exercise is adapted from Liskov, Guttag: Abstraction and Specification in Program Development. 4

An expression slot must not refer to an empty slot. A comment slot will return the value 0. An expression slot must not refer to it self directly nor indirectly. E.g. you must not store the expression a1+1 in slot a1 and you must not store the expression b2 in slot b1 and the expression b1 in slot b2. In such cases the program will report an error in the status area and leave the contents of the storage unchanged. It is not possible to enter an expression so that a division by 0 occurs anywhere in the storage area. There is always one slot in the storage area that is considered to be the current slot. This slot is marked with a background color and its address is displayed in the current slot indicator. The initial current slot is A1. Clicking on another slot will make it current. The contents of the current slot will be displayed in editor when a new current slot is selected. If the slot contains an expression then this expression is displayed without unnecessary parentheses. The editor The editor is used to enter an expression or a comment into the current slot. Anything starting with a # character is considered to be a comment. The # character is not part of the comment and is not shown in the storage area. If the editor is not empty and the return key is pressed its contents is put into the current slot provided that no error occurs. The menu bar The menu bar has three pull down menus. The File menu has five alternatives. New Creates a new XL frame. The title of the frame is Untitled- followed by a running number. Each new frame has its own menu bar, current slot indicator etc. Print A print dialog opens and the current spread sheet can be printed. Save A file dialog opens and the contents of the current spread sheet may be saved. Open A file dialog opens and the contents of the current contents may be replaced by the file contents. Close The current XL window is closed and all information contained i the spread sheet is lost. Closing the the last window will terminate the program. The Edit menu has two alternatives; one for making the current slot empty and one for clearing all slots. The Window menu shows a list of all open spread sheets. Selecting an item will bring the corresponding window to the front. The status area This area is used for displaying error messages. Current slot indicator At all times the current slot indicator displays the address of the current slot. 5