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

Relevanta dokument
Grafiska användargränssnitt i Java

DVGB05 Grafiska användargränssnitt. Mjukvarudesign med Model-View-Controller

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015

Grafiska användargränssnitt i Java

Felhantering TDDD78, TDDE30, 729A

Grafiska användargränssnitt i Java

JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund Marcus Widblom Senast ändrad: 13 / 05 / 08

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18

Definition. Mängden av reguljära uttryck på alfabetet Σ definieras av. om α och β är reguljära uttryck så är (α β) ett reguljärt uttryck

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Model View Controller. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Design och konstruktion av grafiska gränssnitt

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Lab5 för prgmedcl04 Grafik

Föreläsning 15: Repetition DVGA02

Alfabeten, strängar och språk. String

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

Obligatorisk uppgift 5

DAT043 - Föreläsning 7

EDAA01 Programmeringsteknik - fördjupningskurs

Introduktionsmöte Innehåll

Användarmanual Pagero Connect 2.0

Grammatik. BNF-grammatik

TENTAMEN I DATAVETENSKAP

TDDC77 Objektorienterad Programmering

Dagens program. Objektorienterad modellering och diskreta strukturer / design. Model/View/Control-implementering. Model/View/Control-arkitektur

Classes och Interfaces, Objects och References, Initialization

Code-Lite tutorial ( /RoJ)

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

Design och konstruktion av grafiska gränssnitt

Excel Online Version 1.0 Skolkontoret

TDTS04: Distansvektorroutning i java

Projektuppgift - Biblioteket

Projektet. TNMK30 - Elektronisk publicering

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

Objektorienterad programmering

Objektorienterad programmering Föreläsning 2

Programmering, abstraktion och modellering PROJEKTFÖRELÄSNING ANDERS MÄRAK LEFFLER IDA/HCS

Instruktion för att kunna använda Säkerhetstjänsternas administrationsgränssnitt

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

TUTORIAL: KLASSER & OBJEKT

Extramaterial till Matematik Y

CliMate följer Tre-lager-arkitektur. Domänobjekt - domänlogiklagret. Viktiga domänklasser i CliMate. De tre lagren. Paketen i CliMate:

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Tentamen i Introduktion till programmering

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

Kopiering av objekt i Java

Fyra i rad Javaprojekt inom TDDC32

Vad utmärker ett bra användargränssnitt?

Projektuppgift - Gymmet

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

SCB Räkenskapssammandrag

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Projektuppgift.

Skolan för Datavetenskap och kommunikation. Programmeringsteknik. Föreläsning 16

Objektorienterad Programkonstruktion

Kalkylprogram. I övrigt kan man också söka på Google eller YouTube för att få mer information.

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

Observer Pattern och MVC. Objekt-orienterad programmering och design Alex Gerdes, 2016

Administration av porttelefon SO-3396-GSM. cloud.tidomat.com

Computer projekttid. Objektorienterad modellering och diskreta strukturer / design. Rapporter från verkligheten. EDAF10 i HT2

Kapitel 16 Situationsplan... 3

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Test specifikation. SF Bio App. Författare: Zina Alhilfi Datum: Version: v1,0. Granskad: Klar Ref: Testplan_v1.

Autogiro Online för betalningsmottagare Webbtjänst för dig som erbjuder dina kunder Autogiro

Visma Company Expense. Manual för administratörer och redovisningskonsulter

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

HT2 2015, FÖRELÄSNING 15 (XL-PROJEKTET)

Testning av program. Verklig modell för programutveckling

Sambyggnadsnätverkets nyhetsbrev 02/2018

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Lathund till Nyköpings föreningsregister FRIså gör du enkelt dina föreningsärenden på webben

Objektorienterad programmering D2

PROGRAMMERINGSTEKNIK TIN212

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Vop handledning. Användarhandledning till Vop applikationen. UPPGJORD: Mattias Gyllsdorff GODKÄND:Mattias Gyllsdorff REV: A DATUM:

SELLOUT. Version 2.5. eyescream information ab

I dokumentet beskrivs hur man i medlemsregistret (MiRiaM) utför en så kallad avancerad sökning.

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Inlämningsuppgift MiniPlotter

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

ZWCAD har stöd för VBA och Lisp program så alla funktioner som ni tidigare har skapat kan användas direkt utan anpassning.

Sätt att skriva ut binärträd

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 20

Labb 1: Vad, hur, och varför?

Objektorienterad programmering

Objektorienterad programmering

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Dessa tre fönster kan enbart visas i datavyn, inte i layoutvyn. Det är också möjligt att ha flera fönster öppna samtidigt.

Introduktion BAS On-Line

Projektuppgift - Banken

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Importera adressregister

Microsoft Office Excel, Grundkurs 1. Introduktion

Bruksanvisning för hjälpbegäran

Transkript:

Översikt Trivicalc SMD168/SMD15 Fredrik Bengtsson bson@sm.luth.se Föreläsning 1 Introduktion till Trivicalc - problem Föreläsning Grafiska Användargränssnitt Föreläsning del 1 Versionshantering CVS (Johan Karlsson) del Design av programmet Översikt Föreläsning 1 Vad är Trivicalc? Syftet med Trivicalc Presentation av Trivicalc Funktionalitet Problem som uppstår Övergripande förslag på lösningar Administration inlämning, hjälp, osv... Vad är trivicalc? Grafiskt kalkylprogram typ Excel, Lotus 1--, Quattro Pro m.fl....fast lite enklare Syfte med Trivicalc skriva stora program dela upp problem (arbeta i projekt) grafiska gränssnitt modifiera befintlig kod följa specifikation menyrad aktuell cell statusfält (visar själva uttrycket) inmatningsfält kalkylark (visar värdet av uttrycket) Områden på skärmen En cell Informationen i en cell: Tom cell helt okomplicerat Sträng helt okomplicerat Uttryck lite mer komplicerat vanligt uttryck (från labben) referenser till andra celler (som variabler) ex. A1A1*B1 modifiera parser uppdateras automatiskt 1

Uttryck i kalkylarket Uppdatering vid inmatning Refererande celler uppdateras automatiskt helt ok att uppdatera allt Exempel A1=1 A= A=A1A A visar nu A1 ändras till A visar automatiskt 4 Parsern Utöka parsern från tidigare lab Grammatik (BNF) expr ::= expr addop term term term ::= term mulop factor factor factor ::= posfact negop posfact posfact::= address number "(" expr ") addop ::= "" "- mulop ::= "*" "/ negop ::= "-" Parsern Observera att unärt minus inte behöver följas av parentes! Exempel på korrekt uttryck: -*-4-1 Exempel på korrekt uttryck med referens: -A1*4/-B Ny nod i parsträdet Referenser representerar referens till cell Riktig referens (i java) eller bara en sträng? Riktig: svårt att underhålla Vi kan inte kasta bort en cell och ersätta med en ny, då tappar vi referensen. Abstrakt (koordinater eller motsv.) vi hämtar den refererade cellen från arket varje gång. Referenser - Exempel Mer om referenser A1: *4 * ny! A1: 5 4 Kalkylark A: *A1 * A1 referera arket istället Hur uppdatera? Uppdatera alltid allting helt ok Uppdatera bara det nödvändiga (refererande celler) svårare, men bättre varje cell måste veta vad som ska uppdateras 5 Ny A1: Vi riskerar tappa referensen referens i java? -nej

Cirkelreferenser Om en cell refererar sig själv? Inte tillåtet Även indirekta referenser till sig själv ska upptäckas Exempel (OBS! TRASIGT EXEMPEL): A1=A A=A11 A=A Cirkelreferenser lösning? Hur upptäcker vi cirkelreferenser? Vid evaluering av cell: evalueringen kommer tillbaka till samma cell Skriv felmeddelande! Tillåt inte förändringen! Cirkelreferenser Exempel Snabb evaluering Vi evaluerar A1: A1: *A * A: *A1 Här upptäcker vi cirkeln * A A1 A: *A * A Evaluering måste ske hyffsat snabbt inte ok om det tar flera år att evaluera optimera? Nej; det behövs inte! se till att aldrig evaluera en cell mer än en gång Exempel (på hur illa det kan bli!): A1=1 A1 evalueras A=1 A evalueras A=A1A A, A1, A evalueras A4=AA A4, A, A, A1, A evalueras A5=A4A A5, A4, A, A, A1, A, A, A1, A osv... såhär kan vi inte ha det! Snabb evaluering förslag på lösning Vid uppdatering Evaluera aldrig en cell mer än en gång Hur? Spara värdet från evalueringen Hur länge då? Till nästa uppdatering Snabb evaluering Lagra värdet efter evaluering Exempel: A1=1 A1 evalueras A=1 A evalueras A=A1A A evalueras (A1, A besöks ) A4=AA A4 evalueras (A, A besöks ) A5=A4A A5 evalueras (A4, A besöks )

Flera fönster Filfunktioner ett ark per fönster oberoende av andra fönster inte ett fönster med flera flikar varför? det blir andra problem med flera fönster Öppna/Spara filer filformat enl. specifikation öppnas i aktuellt fönster tidigare innehåll kastas bort Fönstermenyn Ska innehålla alla fönster Innehåller ett menyval för varje fönster Kräver utbyte av information mellan fönstren Felhantering Använd undantag i java; fungerar ofta smidigt. Ärv Exception (Exception måste fångas) Alla fel ska hanteras! inga undantag i konsollfönstret Skriv meddelande i statusfältet Kalkylarket får aldrig vara trasigt Tillåt inte sådana ändringar Trasiga filer ska hanteras med felmeddelande Tänk på att hantera referenser utanför kalkylarket cirkelreferenser trasiga uttryck referenser till celler som inte är uttryck Testning Tänk er Trivicalc som ett riktigt program helst inga fel i slutversionen... Testexempel på webben Testa noga det kommer jag att göra lätt att glömma detaljer ett exempel: referenser till A0 Design Håll isär olika delar parser cell kalkylark grafik osv... Designa noga innan ni kodar snabbare (att utveckla) och enklare helt normal att ändra i designen sträva efter hierarkisk objektstruktur objekten längre ner känner inte till de ovanför går inte alltid att uppnå på ett enkelt sätt Design Använd gärna Observer/Observable för att separera data från presentation Data (modellen) känner inte till presentationen (vyn) Vi kan byta vy utan att ändra modellen (inte ens kompilera om) Vi kan ha flera vyer sammtidigt (om vi vill) Även i andra situationer när man vill ha bort ett ömsesidigt beroende. 4

Observer/Observable Administration Observer update(object msg) TextUI GUI Observable add(observer obs) setchanged() notifyobservers(object msg) Data Data har ingen vetskap om GUI eller TextUI Designredovisning alla gruppmedlemmar Slutredovisning alla gruppmedlemmar ett tillfälle ett extra tillfälle (för returer) Grupper Grupper ska vara tre personer Registrera grupper på webben Annonsforum för att söka gruppmedlemmar Hjälp under labpass på mitt rum (A414) 5