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



Relevanta dokument
CliMate: Laboration 3 dataselektion

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

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

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

Lab5 för prgmedcl04 Grafik

Föreläsning 10. ADT:er och datastrukturer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Föreläsning 3: Händelsestyrda program och användargränssnitt

Properties. Användbara metoder som kan anropas i propertychanged:

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

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

Webservice & ERP-Integration Rapport

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Laboration 2: Ett kommunikationssystem

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

Objektorienterad Programmering DAT043. Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU

Mål med lektionen! Repetera och befästa kunskaperna.

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

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

Föreläsning 7. Grafiska användargränssnitt

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Malmö högskola 2007/2008 Teknik och samhälle

MVC-mönstret. model-view-control i Swing

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. LayoutManagers. Exempel på några av komponenterna

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Cadcorp SIS. Användarkurs

INTRODUKTION TILL JDBC

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

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

Lektion 5 HTML, CSS, PHP och MySQL

Lektion Händelsehanterare

Spelet i sig är inte avancerat men projektet ställer en del krav på implementationen bland annat:

Objektorienterad programmering i Java I

725G61 - Laboration 8 Ett enkelt GUI. Sahand Sadjadee och Johan Falkenjack

1.Lär känna MS SQL Observera. Tips. Förberedelse

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern.

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

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

Malmö högskola 2007/2008 Teknik och samhälle

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

Sample exam questions. Database exam TIG058

Fyra i rad Javaprojekt inom TDDC32

TDDD78, TDDE30, 729A Grafik: Att "rita" egna komponenter

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Installationsanvisning för Su Officemallar 2007 För PC Word och PowerPoint

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

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

Hämta projektkonfiguration från SharePoint till ett lokalt projekt

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

version 2.5 CONTENTO SVENSKA AB Introduktion till Kursbyggarverktyg

Tentamen DATABASTEKNIK - 1DL116

DI Studio nyheter

ID1004 Laboration 4, November 2012

Grafiska användargränssnitt i Java

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

Objektorienterad programmering med Java Swing. Programexempel. Swing och AWT AWT. = Abstract windowing toolkit

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

LEX INSTRUKTION REPLIKERING UPPGRADERING

Grafiska användargränssnitt i Java

LULEÅ TEKNISKA UNIVERSITET

Objektorienterad Programkonstruktion

Manual HSB Webb brf

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

Övningar i SQL. SQLAccess.doc Ove Lundgren

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern.

Insamlingsverktyg - teknisk beskrivning av metadataformuläret

1 Skapa Tabell Skapa Relationer Redigera Relationer Redigera Fält i Tabell Lägga till Poster i Tabell...

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

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

Projekt Foreläsning VI

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

Laboration 5 - Biblioteksapplikation

Tentamen i EDAF oktober Skrivtid: Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas.

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Mobila applikationer. Mobil applikationer. Java ME. Konfigurationer. Grunderna i ME

Klientprogrammering mot databaser

Arv och Grafiska Användargränssnitt

Classes och Interfaces, Objects och References, Initialization

TDDD78 Objektorientering: Lagring och livstid

Design och konstruktion av grafiska gränssnitt

PC-Axis 2004, Handledning

Funktionsbeskrivning

Transkript:

följer Tre-lager-arkitektur De tre lagren presentation: användarhändelser+grafik+resultat domänlogik: håller systemets funktioner databasaccess: databas + sql-hantering Paketen i : climate.ui (inkl climate.ui.action och climate.ui.) är presentation climate.domain är domänlogik climate.database är databasaccess Varför lager: separera olika uppgifter i olika delar statisk uppdelning: vilken fil/klass gör vad Viktiga domänklasser i 1 n ObservationFile 1 n Observation Domänobjekt - domänlogiklagret Domänlogiken uttrycker data och logiska operationer på data ex: observationer, filer, fil-attribut, inläsningfilter Motsvarande data: METDATA97010100 METDATA97010103.utf-16 METDATA97010106 FileIdentity: 97010100 Coding: ISO-8859-1 Long: 0.120000E+07 Lat: 0.766000E+07 Domänobjekten håller aktuell data Domänobjekt är grunden i OO-design de förändras lite/sakta de är nära besläktade med problemdomänen..förutom data ( tillstånd ) håller dessa klassers objekt systemets funktionalitet. Dessa två tillsammans kan man kalla domänlogik tillstånd/data är viktigare än funktion: metoder kan läggas till gradvis

Labb 2: uppgift 1 Visa inlästa filer lyssna på climate.domain visa resultat climate.ui..savefilelist Göra knappar skapa grafik : grafik och swing-lyssnare javax.swing.: skapar en knapp ex: b = ("I'm a Swing button!"); javax.swing.abstractaction gör subklass ger en ActionListener se t ex ReadFileAction tilldela en lyssnare till en knapp JLabel JFrame associera lyssnare climate.ui.savetodatabasepanel ex: b.addactionlistener(listener) använder metadata för text ex: metadata.get Använd javadoc! Exempel: ReadFileAction Läs Plockar data från domänlagret Testar om alla data är ifylld annars popup Om allt är ok läs in från fil/katalog Anrop till domän! Ex: skapa lyssnaren på läs-knappen main Window ReadFromFile Panel addaction Listener(rf) readfilebutton: rf: ReadFile Action Dvs framtida knapp-händelser till rf

UI-objekt - presentationslagret Två typer av objekt: grafik: grafiskt innehåll och layout lyssnare: lyssnar efter händelser och agerar på dem Två typer av lyssnare: användarhändelser action : t ex Swing-lyssnare på komponenter systemhändelser : t ex Observable/Observer på domänlogik Exempel: Användarhändelse läs in readfilebut: ReadFile Action actionperformed readfromfile readfromfile ObservationFile filterrow Observation Filter climate.ui innehåller grafik-klasser climate.ui.action Swing-lyssnare climate.ui. Observer-lyssnare JList: Swing-komponent för listor Används för att lista strängar eller andra swingkomponenter vertikalt eller horisontellt JList använder en JListModel som håller innehållet i listan Exempel: UI- ny fil inläst till flik Spara SaveFileList addelement DefaultList Model Skapad av SaveToDatabase Panel uppdaterar man modellen uppdateras grafiken använder en subklass DefaultListModel

Laboration 2 - uppgift 2 Databas-access via JDBC (skiss) Spara observationer och fildata i MySQLdatabas Editera i alla tre lagren för användarfallet spara Klasser som påverkas: Java klientklass java.sql.connection Java.sql.Statement Databas SaveToDatabaseAction/Worker ObservationFile Java.sql.ResultSet DatabaseService Sparandet ska ske så att flikens JProgressBar uppdateras kontinuerligt. Litet exempel på JDBC-koppling JDBC i Climate Klassen Database skapar ett java.sql.connectionobjekt val av host/databas/användare/lösen sätts i settings.properties Observera att endast ett Connection-objekt skapas per körning DatabaseService bygger SQL-statements och skickar via detta Connection-objekt

Lagret för databas-access Avbilda objekt på relationer Enkel lösning: transaktionsskript (Fowler) hantera SQL i Java - metaprogrammering Separera ut SQL-källkod från löpande Java-källkod Hantera process-koppling värddator + sökväg föränderlig konfigureringsdata Modell-vy-kontroll (MVC) namnet på denna kommunikationsmodell mellan domänlogik och presentation. SaveFileList Vy Modell Kontroll Domänlogik Presentation Hantera tillfälliga avbrott och omstart ReadFromFilePanel SaveToDatabasePanel ReadFileAction SwingWorker - bakgrundsprocess Undvik att krävande operationer fryser grafiken introducera trådar (eng thread) som kör separat process climate.ui.swingworker skapar en tråd SaveToDatabaseWorker ärver av SwingWorker måste implementera construct()-metoden trådar startas med med metoden start() SaveToDatabaseAction ska starta SaveToDatabaseWorker Swing körs i sin egen tråd ( the Swing thread ) SwingUtilities: invokeandwait och invokelater Sekvensdiagram för Spara : från presentation till databas savebut: action Performed SaveToDb Action Swing-tråden start SaveToDb Worker saveto Database Obs saveprogress Obs Obs Database Service SwingWorker-tråden execute - - - - Connection

Spara i omgångar och ProgressBar Spara : från databas till presentation Observer/Observable: ui-lagret lyssnar även inåt mot domain då använder vi java.util.observer SaveProgress JProgressBar Se paketet climate.ui. markerar hur långt man kommit setsaveprogressmax: sätter hur lång nuvarande fil är setsaveprogress: sätter hur många obs som sparats I MetaData finns en metod getdatabasebatchsize anger antal observationer som ska sparas åt gången. Vid varje progressionsmarkering anropas alla Observer-objekt för SaveProgress lyssnar efter progressions-händelser Progressions-grafiken nollställs för varje sparad fil getstringprop getstringprop getstringprop SwingWorker-tråden display(true) setmaximum setvalue setvalue Swing-tråden DatabaseService: Data Mapper i Kopplar domänobjekt och databasrepresentation Objektorienterad modell till relationsmodell - O/R bridge Tre publika metoder i DatabaseService saveobservations: sparar ner ett segment ur en observationsfil registerin: registrerar vilken observationssamling som just sparats (labb 2) selectobservations: gör en selektion baserat på givna sökkriterier (labb 3) Statement: s object-klass Skapa en speciell klass/metoder som bygger upp en databas-uppdatering (insert, delete, replace etc) Statement: objekt som utifrån ett eller flera ValueSet tilldelar query = REPLACE INTO + table + VALUES addvalueset: lägger till värden efter VALUES execute: skickar värdet på query till databasen

Summering Tre-lager-arkitektur: olika uppgifter i olika lager Labb 2, del 1: arbeta med swing-grafik och uppdatering via Observable/Observer Domänlogik och presentation arbetar ihop via MVC lyssnare åt två håll: på användaren och på systemet I : action och Labb 2, del 2: JDBC/SQL enbart i databaslagret Separat tråd för tung beräkning DataMapper och Object