 Jens Bennedsen 2002Objektorienteret systemudvikling1.1 Objektorienteret design Persistens - introduktion.

Slides:



Advertisements
Lignende præsentationer
2009NOEA/IT - Databaser/arkitektur1 Databaser Introduktion - Arkitektur Introduktion DBMS-arkitektur Datamodeller.
Advertisements

Array vs. ArrayList. Arrays Et array er en struktureret metode til at gemme flere værdier af den samme datatype. Data’en i et array ligger op ad hinanden.
Hvordan man skriver koden.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Tietgen Skolen Trick med facadeklasse og serialisering ”Trick” – model ”samles” til eet overordnet objekt Alle klasser i model skal have attriutten [Serializable]
ASP.NET Cache, State DataGrid og Diagnostics. Agenda – ASP.NET Cache, State og Cookies ( 1 del ) –Cache –Static member –Application State –Session State.
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
Objektorienteret programmering
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
Stig Irming-Pedersen ASP.NET MVC Partner Copenhagen Software.
Den relationelle model
Forelæsning 3.1 Collections Javas for-each løkke
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
Introduktion I4DAB1 Jesper Tørresø Forår Layers + Tiers ? Tiers er opdelinbgslag omkring en logisk abstraktion (Præsentation, forretningslogik og.
1. Database-systemer, introduktion
Objekter og klasser Rasmus D. Lehrmann DM
8.6 Transaktioner1 Transaktioner 8.6 Transactions in SQL.
3. Objekt Orientering og Relations Databaser
11 - Exceptions. 2 NOEA2009Java-kursus – Exceptions Hvad er en exception? En undtagelse. Typisk en fejl der opstår runtime Afbryder det normale programflow.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Forelæsning 7.1 – repetition
DB analyse og modellering Jesper Tørresø DAB1 F Februar 2008.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design klasse model ”Klassemodellen på vej til kode”
Systemudvikling – Fra idé til kode.  Jens Bennedsen 2001Multimedie programmering9.2 Begrebsmodellering Problemspecifikke begreber Problem/vision vedrørende.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler.
 Jens Bennedsen 2002Objektorienteret systemudvikling Persistens.
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
 Jens Bennedsen, 2003Introducerende objektorienteret programmering Exceptions.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.
 Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler.
 Jens Bennedsen, 2003Introducerende objektorienteret programmering MVC Et mønster for grænseflader.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Trinvis forfinelse Systematisk, gradvis udvikling af programmer.
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
Indledende Programmering Uge 6 - Efterår 2006
 Jens Bennedsen 2002Objektorienteret systemudvikling Arkitektur.
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 7 Design - part 2.
 Jens Bennedsen 2001Multimedie programmering MVC Et mønster for grænseflader.
Design af brugerflader13.1 Kursusgang 13 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
 Jens Bennedsen 2002Objektorienteret systemudvikling Modelleringsperspektiver Hvad betyder en klassemodel egentlig?
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
DIEB8.1 Kursusgang 8 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering MVC Et mønster for grænseflader.
Objektinteraktion i GUI’er MVC og Observer.  Michael E. Caspersen, 2003Introducerende objektorienteret programmeringmvc.2 AWT framework Listeners og.
Hvad er en inkrementel og iterativ process?
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Introduktion I4DAB1 Jesper Tørresø Efterår Databaser ? Hvorfor indskyde et lag mellem applikation og det permanente/persistente lager? Hvordan gemmes.
DOMS IT-stormøde 16 november 2009 Kåre Fiedler Christiansen.
Solution Makers A/S – Gruppe 4 Lars Wolter Nils Martinsen Rasmus Seye Tobias Kjeldsen 1.
WebApi service part 2 Routning og Action Simpel test-client (javascript) Session og Application data.
Effektiv vækst - Workshop
WebApi service x.
Problem med at følge de konstant voksende datamængder
DB analyse og modellering
Software Testing Software testing.
Simpel test-client (javascript) Session og Application data
Præsentationens transcript:

 Jens Bennedsen 2002Objektorienteret systemudvikling1.1 Objektorienteret design Persistens - introduktion

 Jens Bennedsen 2002Objektorienteret systemudvikling1.2 Mål Hvilke mål er der for persistens? –Transparens Det er ikke synligt i koden at systemet er persistent Systemet kan køre uden fil el. andet er tilstede –Sikkerhed Alle data er intakte uanset crash –Kun relevante dele af systemet i memory ad gangen Gigantisk model –Data er tilgængelige andre steder fra Standardiseret format data gemmes i –Kode ændringer i model medfører små ændringer i persistensdel Det skal være muligt at tilføje/fjerne/ændre i model uden at persistensdelen skal radikalt ændres –Platformsuafhængighed mht persistensdel Der skal kunne anvendes flere databaser el. andet.

 Jens Bennedsen 2002Objektorienteret systemudvikling1.3 Undervisningsform Vi ser overordnet på en række løsninger –Stigende kompleksitet –Stigende mængde af ønsker der imødeokmmes –Som applikationsprogrammør Brug af framework (Gen-)brug af andres kode

 Jens Bennedsen 2002Objektorienteret systemudvikling1.4 Overordnede løsninger 1.Hent og gem ved opstart/afslutning 2.Som 1 men med transparens 3.Sikkerhed mod crash - løbende hent/gem 4.”Persistenslager” altid synkront med model Transparensgrad Opdateringshyppighed Start/slutpr. x minutter”altid” 1 234

 Jens Bennedsen 2002Objektorienteret systemudvikling1.5 Gennemgående system

 Jens Bennedsen 2002Objektorienteret systemudvikling Load/store ved opstart/nedluk Controlleren holder hele modellen og henter/gemmer den Controller.loadModel("model.dat"); /* Here we could go into the message- * processing loop of a message driven * GUI application. Instead we just call a * method on the TestDriver. */ TestGUI.runCommandLoop(); Controller.storeModel("model.dat");

 Jens Bennedsen 2002Objektorienteret systemudvikling Hent/gem m. transparens Der skal laves kode i Controlleren til at gemme/hente alle containere – det kan gøres generelt Man skal registrere de objekter der ønskes gemt public static void registerRoots(PersistenceController pc) { pc.registerRoot("Controller", "teachers"); pc.registerRoot("Controller", "students"); pc.registerRoot("Controller", "courses"); }

 Jens Bennedsen 2002Objektorienteret systemudvikling Sikkerhed mod crash Ved den forrige løsning er modellen i memory og på disk kun konsistent ved opstart og nedlukning Gem modellen med faste mellemrum –”Persistenslager” overholde evt. ikke invariant

 Jens Bennedsen 2002Objektorienteret systemudvikling Opdateringshypighed: ”Altid” Serialisering giver ikke mening! Anvendelse af en relationel database –Simpel mulighed for mere finkornet opdatering –andre kan anvende de genererede data –få alle fordele fra en RDB I de tidligere løsninger kan RDB også anvendes!

 Jens Bennedsen 2002Objektorienteret systemudvikling1.10 Arkitektur af persistensframework Model Persistens- controller Observer Observer Subject (Observable) Observer DB

 Jens Bennedsen 2002Objektorienteret systemudvikling1.11

 Jens Bennedsen 2002Objektorienteret systemudvikling1.12 Konkret løsning Persistens- controller Observer Observer Subject (Observable) Observer Model Controller DB 1: notifyObservers2: update 3: UPDATE … SET … WHERE …

 Jens Bennedsen 2002Objektorienteret systemudvikling1.13 Konkret løsning Database skema konstrueres automatisk på baggrund af klassemode –refleksion –transient Anvendt database: MySQL –mapning af typer til DB-typer

 Jens Bennedsen 2002Objektorienteret systemudvikling1.14 Applikationsprogrammør Modeltilstandsændrende operationer –Konstruktør –Modifiers (f.eks. set-metoder) public Student(…, boolean graduated) { … this.graduated = graduated; Controller.notifyObservers( new ModelChangeDescription(this, ModelChangeDescription.created, null) ); } public void setGraduated(boolean graduated) { this.graduated = graduated; Controller.notifyObservers( new ModelChangeDescription(this, ModelChangeDescription.changed, "graduated") ); }

 Jens Bennedsen 2002Objektorienteret systemudvikling1.15 Applikationsprogrammør (2) Hvem skal være observable? –Alle modelobjekter eller Containerklasserne public class Controller { private static PersistentLinkedList teachers; … private static class publicSetChangedObservable extends Observable { // make the setChanged method public, so that Controller can call it public void setChanged() { super.setChanged(); } }; private static publicSetChangedObservable modelObservable = new publicSetChangedObservable(); …

 Jens Bennedsen 2002Objektorienteret systemudvikling1.16 Registrering hos Observer