Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Tietgen Skolen Trick med facadeklasse og serialisering ”Trick” – model ”samles” til eet overordnet objekt Alle klasser i model skal have attriutten [Serializable]

Lignende præsentationer


Præsentationer af emnet: "Tietgen Skolen Trick med facadeklasse og serialisering ”Trick” – model ”samles” til eet overordnet objekt Alle klasser i model skal have attriutten [Serializable]"— Præsentationens transcript:

1 Tietgen Skolen Trick med facadeklasse og serialisering ”Trick” – model ”samles” til eet overordnet objekt Alle klasser i model skal have attriutten [Serializable] Når det overordnede modelobjekt serialiseres vil alle de tilknyttede objekter og felter ”følge med” Der laves en facadeklasse, der ”holder” det overordnede model objekt som en klasse-variabel Facade-klassen tager sig af evt. indlæsning (load) af model objekt, samt forsynes også med metode for at gemme (save) model-objekt.

2 Tietgen Skolen For at objekter kan serialiseres skal klassen forsynes med attributten [Serializable] og alle objektets data skal ligeledes være serializable Klassen Vare: ……. [Serializable] public class Vare : System.IComparable { …………… Klassen Varekartotek: ……. [Serializable] public class Varekatalog { …………… Klassen Varesalg: ……. [Serializable] public class Varesalg { …………… Klasser defineres som Serializable

3 Tietgen Skolen using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace VarekartotekWindowsApplication { public class ModelFasade { // Bemærk at static betyder at felter og metoder er // er på klassen og der ikke laves objekter af typen // ModelFacade private static Varekatalog varekataloget; // klasse instans private static string DEFAULT_FILENAME = "Varekatalog.bin"; Eksempel på Facade med serialisering

4 Tietgen Skolen // klassemetode der kaldes direkte uden at have et objekt //..... = ModelFacade.Varekataloget; public static Varekatalog Varekataloget { get { if (varekataloget == null) LoadVarekataloget(); // sikre load første gang // det bruges return varekataloget; // bemærk klasse instans } Eksempel på Facade med serialisering

5 Tietgen Skolen private static void LoadVarekataloget() { // hent filnavn med "stifinder" facilitet // normalt bør det undgås at placere GUI her, // men det er en praktisk "beskidt" måde for os // at undgå øget kompleksitet / eller fast filnavn OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.FileName = DEFAULT_FILENAME;// startværdi DialogResult dres = openFileDialog.ShowDialog(); if (dres == DialogResult.Cancel) { varekataloget = new Varekatalog(); // opret tomt } else { string filnavn = openFileDialog.FileName; FileStream fileStream = new FileStream(filnavn, FileMode.Open); BinaryFormatter binaryFormater = new BinaryFormatter(); // hent objekt og typecast til rigtig type varekataloget = (Varekatalog)binaryFormater.Deserialize(fileStream); fileStream.Close(); } Eksempel på Facade med serialisering

6 Tietgen Skolen public static void SaveVarekataloget() { // hent filnavn med "stifinder" facilitet SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.FileName = DEFAULT_FILENAME;// startværdi saveFileDialog.ShowDialog(); string filnavn = saveFileDialog.FileName; // Objektet med alle refererede elementer gemmes // serialiseret som fil FileStream fileStream = new FileStream(filnavn, FileMode.Create); BinaryFormatter binaryFormater = new BinaryFormatter(); binaryFormater.Serialize(fileStream, varekataloget); fileStream.Close(); } Eksempel på Facade med serialisering

7 Tietgen Skolen Tilgang til model gennem facade klassen Her eksempel på tilgang fra en funktionsklasse using System; using System.Collections.Generic; using System.Text; namespace VarekartotekWindowsApplication { public class TestFunktioner { public static void OpretTestvarer() { // hent varekatalog objekt // dette kunne også være overføret som parameter Varekatalog varekatalog = ModelFasade.Varekataloget; // Brug objekt til at oprette test varer Vare vare1001 = varekatalog.OpretVare(1001, "A4 blok ternet med huller", 3.98f, "kasser", 3.68f, 100); Vare vare1002 = varekatalog.OpretVare(1002, "A4 blok linieret med huller", 3.88f, "boxe", 3.65f, 20); Vare vare1003 = varekatalog.OpretVare(1003, "Blyant Viking 400x2", 0.64f, "æsker", 0.50f, 500); Vare vare1004 = varekatalog.OpretVare(1004, "Blyant Viking 800x2", 0.66f, "æsker", 0.55f, 200); vare1004.RegistrerVarerSolgt(102); vare1004.RegistrerVarerSolgt(23); }


Download ppt "Tietgen Skolen Trick med facadeklasse og serialisering ”Trick” – model ”samles” til eet overordnet objekt Alle klasser i model skal have attriutten [Serializable]"

Lignende præsentationer


Annoncer fra Google