Eksempel: et ordresystem note 5 Lagdeling s. 1

Størrelse: px
Starte visningen fra side:

Download "Eksempel: et ordresystem note 5 Lagdeling s. 1"

Transkript

1 Eksempel: et ordresystem note 5 Lagdeling s. 1 Eksempel: et ordre-system NiceHair er et firma, som sælger udstyr, inventar og frisørartikler til frisørsaloner over hele landet. Det er ejet af et ægtepar (Sanne og Ulrik). Analyse Aktører Der er følgende aktører til systemet: Salgschefen, som registrer ordrerne, der indtelefoneres af sælgerne. Det er i øjeblikket Sanne, der varetager rollen som salgschef. Lagerekspedient, som ser i systemet, hvilke ordrer, der skal ekspederes. Det er Sannes far, der har den rolle i dag. Indkøber, som ser i systemet, hvor stor omsætning er på de enkelte varer, for at planlægge indkøb. Ulrik har den rolle. Use cases Der er følgende use cases i systemet: Modtag varer Modtag ordre Ekspeder ordre Planlæg indkøb Afhold status Lav regnskab Modtag varer: (brief) Når der kommer varer hjem, er det indkøberen, der kontrollerer om det modtagne svarer til det, der er bestilt, og lægger varerne ud til lagerekspedienten, som lægger varerne på plads. Indkøberen slår den enkelte vare op i systemet vha. varenr, og registrerer det modtagne antal og viser den nye beholdning for hver af de modtagne varer. Hvis varen er en ny vare, opretter indkøberen den i systemet med oplysninger om varenr, betegnelse og pris. Modtag ordre: (brief) Når en sælger ringer en ordre ind, undersøger salgschefen først om kunden findes i systemet vha. af kundenr. Hvis kunden ikke findes, registrerer salgschefen kunden i systemet med kundenr, navn, adresse, mm. 1 1 I denne udgave ser vi bort fra kunden

2 Eksempel: et ordresystem note 5 Lagdeling s. 2 Herefter registrerer salgschefen ordren med ordredato og leveringsdato og derefter varenr og antal for hver ordrelinie. Ekspeder ordre: (brief) Hver dag åbner lagerekspedienten systemet for at checke, om der er ordrer, der skal ekspederes. Systemet viser en oversigt over de ordrer, der skal ekspederes den pågældende dag, og lagerekspedienten vælger en ordre fra oversigten. Systemet viser ordren med varenr, betegnelse og antal for hver vare, og lagerekspedienten pakker nu ordren, og registrer dette i systemet, som automatisk nedskriver antallet for de berørte varer. (casual) Når systemet opstiller oversigten over ordrer, der skal pakkes den pågældende dag, undersøger systemet, om der er de varer på lager, der skal pakkes. Hvis der er en ordre, hvor dette ikke er tilfældet, kommer ordren ikke med på listen, men systemet sender en med oplysning om ordrenr, varenr, betegnelse, antal på ordrelinien og det registrerede antal på lager til indkøberen. Planlæg indkøb: (brief) Hver dag trækker indkøberen en lagerliste fra systemet. Indkøberen løber listen igennem, og checker, om der er varer, hvor beholdningen er så lav, at han skal bestille nye varer hjem. Indkøberen checker også flere gange om dagen sine s, for at se, om systemet har sendt s med besked om ordrer, der ikke kan leveres, fordi der ikke er varer nok på lager. Når der er kommet en sådan besked, foretager indkøberen et haste-indkøb. Afhold status: (brief) Cirka en gang i kvartalet afholder indkøberen sammen med lagerekspedienten status over lageret. Først trækker lagerekspedieneten en lagerliste fra systemet. Dernæst gennemgår han lageret for ukurante varer, som han derefter smider ud og fjerner fra systemet. Endelig vurderer indkøberen, om der skal ske en justering af pris og evt betegnelse på nogle varer, og foretager de nødvendige justeringer i systemet. Lav regnskab: (brief) Gennem året laver salgschefen løbende opfølgning på regnskabet (cirka en gang i kvartalet). I den forbindelse slår han op i systemet, for at se den samlede lagerbinding for alle varerne.

3 Eksempel: et ordresystem note 5 Lagdeling s. 3 I use case-diagrammet gives et overblik over systemets aktører og use cases: Planlæg indkøb Modtag varer Indkøber Afhold status Ekspeder ordre Lagerekspedient Modtag ordre Salgschef Lav regnskab

4 Eksempel: et ordresystem note 5 Lagdeling s. 4 Eksempler på objekter for systemet: Vare-objekter: Ordrelinieobjekter Ordre-objekter: 2345 zigzag-saks 345,- 20 stk / /8-09 plukket stålkamme 257,- 30 pk føntørrer de luxe 1275,- 12 stk / /9-09 ikke plukket 1 Domænemodellen for systemet ser således ud: Vare -varenr -betegnelse -pris -beholdning Ordrelinie -antal 1 0..* 0..* 1 ordre -ordrenr -ordredato -leveringsdato -plukket

5 Eksempel: et ordresystem note 5 Lagdeling s. 5 Design og kode GRASP Når vi designer sekvensdiagrammer (se nedenfor) skal vi anvende GRASP-mønstrene til at designe efter. I denne omgang har vi især anvendt følgende GRASP-mønstre: High Cohesion (høj samhørighed). Dette mønster betyder, at der skal være høj samhørighed i en klasse eller sagt på en anden måde, at en klasse ikke må bruges som skraldespand for alt muligt, der ikke kar noget med hinanden at gøre. Dette mønster bruges til at opdele vores formular-klasse i to klasser: én som har med selve brugergrænsefladen at gøre, og én, som har med administration af varer at gøre (VareCollection) Information Expert. Dette mønster betyder, at metoder skal placeres på den klasse, hvor de naturligt hører hjemme, dvs på den klasse som har de oplysninger (attributter), som metoden skal bruge. Eksempler på hvor dette mønster er anvendt: o Get og Set-proporties o Tilføjelse, fjernelse og justering af vare ligger naturligt på VareCollection-klassen som har en liste over varerne og dermed også kan finde den vare, som skal behandles. o Beregning af lagerbinding for en vare ligger naturligt på vare-klassen (som har pris og beholdnings-attributterne), hvorimod beregning af samlet lagerbinding ligger på VareCollection klassen som har en liste over alle varerne. Creator. Dette mønster betyder, at der skal være en creator for forretningsobjekterne. Hvis en anden forretningsklasse er naturlig creater, bruges denne, ellers laves en collection-klasse. Som creator for VareCollection-klassen er det naturligt at bruger brugergrænsefladen (formularen) Ifm creator-mønstret taler man om, at de objekter, der bliver skabt af creatoren, er aggregeret op i creatoren. Low Coupling (Lav kobling). Dette mønster betyder, at der skal være en lav kobling mellem klasserne for at gøre deres indbyrdes afhængighedsforhold så lille som muligt. Derved opnår man, at ændringer i én klasse medfører få eller ingen ændringer i en anden klasse. Mønsteret bruges f.eks. i forbindelse med systemoperationen VisLagerliste. Frem for at returnere den interne datastruktur i Collection-klassen (en liste), returneres i stedet en iterator, som er uafhængig af listen. Controller. Dette mønster betyder, at brugergrænsefladen kontakter systemet gennem et controller-objekt (dette gælder i det mindste for det første kald til systemet i et Systemsekvens-diagram). Controller-objekter udfører ikke selv domæne-logik, men delegerer ansvaret videre til de underlæggende objekter. I frisør-eksemplet hedder kontroller-klassen FrisørSystem, og den aggregerer collection-klasserne Ordre-Collection og Vare-Collection op i sig. Men ellers har controller-klassen ikke nogen selvstændige attributter.

6 Eksempel: et ordresystem note 5 Lagdeling s. 6 Der findes to videreudviklinger af controller-mønstret, nemlig Facade-controlleren og Session-controlleren. Session-controlleren bruges i use-casene Modtag ordre og Ekspeder ordre. Ideen er, at controlleren husker den aktuelle ordre mellem systemoperationerne, så den ikke skal findes frem ved hvert kald. Facade-controlleren sørger for at skjule domæne-objekterne for brugergrænsefladen, og er dermed med til at mindske koblingen. Dette gøres ved at sende interfaces til domæneklasserne op i brugergrænsefladen, når der skal læses domæne-data. Disse interfaces inderholder kun Get-properties til domæne-klasserne Arkitektur (Nyt) Udover indkapslingen i klasser, findes en bredere indkapsling i såkaldte lag, også kaldet komponenter (Namespaces i C# og Packages i Java og UML). Et lag indeholder en gruppe af klasser, et subsystem, som er ansvarlig for en større del af systemet. De klassiske lag består af: Brugergrænseflade Model (Domæne logik) Teknisk lag, f.eks. Data Source lag, som er ansvarlig for persistens af data. I vores system, ser arkitekturen således:

7 Eksempel: et ordresystem note 5 Lagdeling s. 7 Her repræsenterer GUI brugergrænseflade-laget og Model model-laget Ansvaret for persistens af data er lagt ind i klassen FrisørSystem (den er fejlagtigt kaldtordresystem i figuren ovenfor det retter jeg når jeg får tid). Denne klasse fungerer også som Facade og Sessioncontroller, derfor er laget kaldt Controller. Interfaces-laget er ikke et rigtigt lag i klassisk forstand, men er medtaget af hensyn til Facademønstret, dvs det er et lag, som GUI en har kendskab til (udover til controlleren). Lagene og deres indbyrdes afhængigheder er implementeret vha Namespaces, idet hvert lag har sit eget Namespace. Når man lagdeler et projekt, skal de lag, der ikke indeholder GUI oprettes som tomme projekter /empty projects. Hvis man skal opdele et eksisterende projekt er der følgende trin: Opret et projekt til laget Træk eller cut - og - paste de filer, der skal ligge på laget ind i projektet Sørg for, at de får et name space svarende til projektet Når man er færdig med at opdele i lag, kender de forskellige lag ikke hinanden. Derfor skal man lave de nødvendige forbindelser mellem lagene (du kan se hvilke der er nødvendige på skitsen ovenfor, men for en sikkerheds skyld skriver jeg dem også lige her): GUI skal have reference til Controller og Interfaces og skal også tilføje using directives til deres name spaces Controller skal have reference til model og interfaces, og skal også tilføje using directives til deres name spaces Model skal have reference til Interface skal også tilføje using directive til dens name spaces

8 Eksempel: et ordresystem note 5 Lagdeling s. 8 Kode - generelt Controlleren FrisørSystem har de collection-klasser VareCollection og OrdreCollection aggregeret op i sig og sørger generelt for at delegere kaldene videre til disse klasser. Den er desuden en kombination mellem en session- og facade-controller. Som session-data gemmes den den aktuelle ordre. Facaden sørger for at der altid returneres interfaces til brugergrænsefladen, når det er domæne-objekter (f.eks metoden FindVare): class FrisørSystem private OrdreCollection ordrecol; private VareCollection varecol; [NonSerialized] private Ordre aktuelordre; // aggregering af ordrecollection // aggregering af varecollection // session-variabel for aktuel ordre // Konstruktør public FrisørSystem() ordrecol = new OrdreCollection(); varecol = new VareCollection(); aktuelordre = null; VareCollection-klassen er lavet vha. en liste: class VareCollection private List<Vare> varer; // aggregering af nul til mange varer // Konstruktør public VareCollection() varer = new List<Vare>(); // pga aggregering skal vareliste skabes Vare-klassens attributter ser således ud: class Vare : IVaredata // her ses at vareklassen implementerer interfacet IVaredata // ************ Attributter ************ private long varenr; private string betegnelse; private double pris; private uint beholdning; Vare-klassen implementerer interfacet IVaredata: // interface: bruges til at sørge for, at andre dele af programmet kun kan læse et objekts data, men ikke rette/slette dem interface IVaredata

9 Eksempel: et ordresystem note 5 Lagdeling s. 9 long Varenr get; string Betegnelse get; double Pris get; uint Beholdning get; OrdreCollection-klassen er lavet efter samme princip som VareCollection-klassen. Ordre-klassen er creator for ordrelinierne, dvs. at klassen udover attributterne også har aggregeret ordrelinierne op i sig. OrdreCollection-klassen implementerer interfacet IOrdredata: class Ordre : IOrdredata private int ordrenr; private DateTime ordredato; private DateTime leveringsdato; private bool plukket; private List<Ordrelinie> ordrelinier; // aggregering af ordrelinier // Konstruktør public Ordre(int ordrenr, DateTime ordredato, DateTime leveringsdato) this.ordrenr = ordrenr; this.ordredato = ordredato; this.leveringsdato = leveringsdato; plukket = false; ordrelinier = new List<Ordrelinie>(); // Skab ordrelinie-list // interface: bruges til at sørge for, at andre dele af programmet kun kan læse et objekts data, men ikke rette/slette dem interface IOrdredata DateTime LeveringsDato get; DateTime OrdreDato get; int Ordrenr get; Ordrelinie-klassen er associeret til én vare og implementerer interfacet IOrdreliniedata: class Ordrelinie private int antal; private Vare vare; // Associéring til vare public void TilknytVare(Vare vare) this.vare = vare; // antallet af varer på ordrelinien // associéring til én vare

10 Eksempel: et ordresystem note 5 Lagdeling s. 10 public Vare GetVare() return vare; // get associeret vare interface IOrdreliniedata int Antal get; Vare Vare get; I note 3 brugte vi en hjemmelavet iterator i VareCollection. Den skulle sende én vare ad gangen op i GUI I denne version af programmet benyttes to iteratorer af typen IEnumerator, som findes i.net. En iterator over varerne og en iterator over ordrelinierne på en ordre. Vare-iteratoren hentes (via controlleren) vha. metoden GetVareIterator, som ligger på VareCollection-klassen. Metoden returnerer interfacet IEnumerator, som har iterator-metoderne Reset og MoveNext samt property en Current: using System.Collections; // skal bruges til IEnumerator class VareCollection public IEnumerator GetVareIterator() return varer.getenumerator(); // varer (List<T> implementerer Ienumerator og kan // derfor returnere den videre via metoden // GetEnumerator() I brugergrænsefladen bruges iteratoren således (husk at tilføje Using directivet): // Udskriver lagerliste private void btnvislagerliste_click(object sender, EventArgs e) IVaredata varedata; IEnumerator vareiterator = frisørsystem.getvareenumerator(); vareiterator.reset(); // Sæt iterator til at pege før første element while (vareiterator.movenext()) // så længe der er varer varedata = (IVaredata)vareiterator.Current; // læs aktuel vare // Udskriv vare txtlagerliste.text += string.format(format, varedata.varenr, varedata.betegnelse, varedata.pris, varedata.beholdning) + "\r\n"; FrisørSystem skal også modificeres, for ellers virker frisørsystem.getvareenumerator() ikke: public IEnumerator GetVareEnumerator()

11 Eksempel: et ordresystem note 5 Lagdeling s. 11 return varecol.getvareiterator(); Ligesom Vare-klassen har Ordre-klassen en iterator over ordrelinierne, som fungerer på samme vis.

12 Eksempel: et ordresystem note 5 Lagdeling s. 12 Iteration I. Use case: Modtag varer System-sekvens-diagram for Modtag varer Operationskontrakt for FindVarenumre varenumre=findvarenumre() Use cases: Modtag varer, Afhold status, Modtag ordre Pre: ingen Post: uændret Output: varenumrene vises på skærmen Sekvensdiagram for FindVarenumre

13 Eksempel: et ordresystem note 5 Lagdeling s. 13 Kode for FindVarenumre UI: List<long> varenumre = frisørsystem.findvarenumre(); FrisørSystem: public List<long> FindVarenumre() return varecol.getvarenumre(); VareCollection: // returnerer liste med varenumre public List<long> GetVarenumre() List<long> varenumre = new List<long>(); foreach (Vare vare in varer) varenumre.add(vare.varenr); return varenumre;

14 Eksempel: et ordresystem note 5 Lagdeling s. 14 Operationskontrakt for FindVare vare=findvare(varenr) Use cases: Modtag varer, Afhold status, Modtag Ordre Pre: Varen med varenr findes Post: uændret Output: varen vises på skærmen Sekvensdiagram for FindVare :FrmVare frisørsystem:frisørsystem varecol:varecollection :Vare vare = FindVare(varenr) vare = FindVare(varenr) loop [Varenr er forskellig fra aktueltvarenr ] aktueltvarenr = Varenr Kode for FindVare UI (user interface): Vare vare = varecol.findvare(varenr); FrisørSystem: public Vare FindVare(long varenr) return varecol.findvare(varenr); VareCollection: // Finder og returnerer varen udfra varenr public Vare FindVare(long varenr) int i = 0; long aktueltvarenr = varer[i].varenr; while (varenr!= aktueltvarenr) i++; aktueltvarenr = varer[i].varenr; return varer[i]; Vare: public long Varenr get return varenr;

15 Eksempel: et ordresystem note 5 Lagdeling s. 15 public string Betegnelse get return betegnelse; public double Pris get return pris; public uint Beholdning get return beholdning; NB: her har jeg sat get Properties på alle attributter, fordi vi kalder dem fra FrmVare Operationskontrakt for TilføjVare TilføjVare(varenr, betegnelse, pris) Use cases: Modtag varer Pre: varen med varenr findes ikke Post: en vare med varenr, betegnelse og pris og en beholdning på 0 er oprettet Sekvensdiagram for TilføjVare :UI TilføjVare(varenr, betegnelse, pris) frisørsystem:frisørsystem varecol:varecollection TilføjVare(varenr, betegnelse, pris) <<create>>(varenr, betegnelse, pæris :Vare Varen tilføjes listen Kode for TilføjVare UI: frisørsystem.tilføjvare(varenr, betegnelse, pris); Frisørsystem public void TilføjVare(long varenr, string betegnelse, double pris) varecol.tilføjvare(varenr, betegnelse, pris);

16 Eksempel: et ordresystem note 5 Lagdeling s. 16 VareCollection: // Tilføjer vare public void TilføjVare(long varenr, string betegnelse, double pris) Vare vare = new Vare(varenr, betegnelse, pris); varer.add(vare); Vare: public Vare(long varenr, string betegnelse, double pris) this.varenr = varenr; this.betegnelse = betegnelse; this.pris = pris; this.beholdning = 0; Operationskontrakt for ModtagVarer nybeholdning=modtagvare(varenr, antal) Use cases: Modtag varer pre: en vare med varenr findes post: antallet af modtagne varer er lagt til varens beholdning output: ny beholdning vises på skærmen Sekvensdiagram for ModtagVarer :UI frisørsystem:frisørsystem varecol:varecollection nybeholdning = modtagvarer(varenr, antal) nybeholdning = modtagvarer(varenr, antal) vare = FindVare(varenr) :Vare beholdning = ModtagVarer(antal) NB: Findvare(varenr) er vist tidligere Kode for ModtagVarer FrmVare: uint nybeholdning = frisørsystem.modtagvarer(varenr, antal);// Modtag varer Frisørsystem: public uint ModtagVarer(long varenr, int antal)

17 Eksempel: et ordresystem note 5 Lagdeling s. 17 return varecol.modtagvarer(varenr, antal); VareCollection: public uint ModtagVarer(long varenr, uint antal) Vare vare = FindVare(varenr); uint beholdning = vare.modtagvarer(antal); return beholdning; Vare: public uint ModtagVarer(uint antal) beholdning += antal; return beholdning;

18 Eksempel: et ordresystem note 5 Lagdeling s. 18 Iteration II. Use case: Afhold status System-sekvens-diagram for Afhold status

19 Eksempel: et ordresystem note 5 Lagdeling s. 19 Operationskontrakt for FjernVare FjernVare(varenr) Use cases: Afhold status pre: en vare med varenr findes i systemet post: varen er slettet output: ingen Sekvensdiagram for FjernVare :UI frisørsystem:frisørsystem varecol:varecollection :Vare FjernVare(varenr) FjernVare(varenr) vare = FindVare(varenr) <<destroy>> Kode for FjernVare UI: frisørsystem.fjernvare(varenr); Frisørsystem: public void FjernVare(long varenr) varecol.fjernvare(varenr); VareCollection: // Fjerner vare med varenr public void FjernVare(long varenr) Vare vare = FindVare(varenr); varer.remove(vare); Vare: Ingen kode.

20 Eksempel: et ordresystem note 5 Lagdeling s. 20 Operationskontrakt for VisLagerliste lagerliste = VisLagerliste() Use cases: Afhold status pre: ingen post: uændret output: Lagerlisten vises på skærmen. Operationen laves vha en iterator på VareCollection, derfor vises ingen sekvensdiagram.

21 Eksempel: et ordresystem note 5 Lagdeling s. 21 Operationskontrakt for JusterVare JusterVare(varenr, betegnelse, pris) Use cases: Afhold status pre: et vare-objekt med varenr findes i systemet post: betegnelse og pris er justeret på varen output: ingen Sekvensdiagram for JusterVare :UI frisørsystem:frisørsystem varecol:varecollection Justervare(varenr, betegnelse, pris) Justervare(varenr, betegnelse, pris) vare = FindVare(varenr) vare:vare Betegnelse=betegnelse Pris= pris Kode for JusterVare UI: frisørsystem.justervare(varenr, betegnelse, pris); Frisørsystem: public void JusterVare(long varenr, string betegnelse, double pris) varecol.justervare(varenr, betegnelse, pris); Vare: public string Betegnelse set betegnelse = value; public double Pris set pris = value; NB: her har jeg sat set properties på Pris og Betegnelse fordi de skal kunne rettes

22 Eksempel: et ordresystem note 5 Lagdeling s. 22 Iteration III. Use case: Lav regnskab System-sekvens-diagram for Lav regnskab Operationskontrakt for VisLagerbinding lagerbinding=vislagerbinding() Use cases: Lav regnskab pre: ingen post: uændret output: Den samlede lagerbinding vises på skærmen. Lagerbindingen for en vare er varens antal * pris, og den samlede lagerbinding er summen af lagerbindingen på hver af varerne. Sekvensdiagram for VisLagerbinding :UI frisørsystem:frisørsystem varecol:varecollection vare:vare lagerbinding = Vislagerbinding() lagerbinding = VisLagerbinding() loop varebinding = BeregnVarebinding() [så længe der er varer] Kode for VisLagerbinding UI: double lagerbinding = frisørsystem.vislagerbinding(); FrisørSystem: public double VisLagerbinding() return varecol.vislagerbinding(); VareCollection: public double VisLagerbinding()

23 Eksempel: et ordresystem note 5 Lagdeling s. 23 double lagerbinding = 0.0; double varebinding; foreach (Vare vare in varer) varebinding = vare.beregnvarebinding(); lagerbinding += varebinding; return lagerbinding; Vare: public double BeregnVarebinding() return beholdning * pris;

24 Eksempel: et ordresystem note 5 Lagdeling s. 24 Iteration IV. Use case: Modtag ordre System-sekvens-diagram for Modtag Ordre

25 Eksempel: et ordresystem note 5 Lagdeling s. 25 Operationskontrakt for RegistrerOrdre RegistrerOrdre(ordrenr, ordredato, leveringsdato) Use cases: Modtag Ordre pre: Ordre-objekt med ordrenr findes ikke i forvejen post: Der er oprettet et ordre-objekt med ordrenr, ordredato, leveringsdato og plukket lig false samt en tom ordrelinieliste output: Sekvensdiagram for RegistrerOrdre Kode for RegistrerOrdre UI: frisørsystem.registrerordre(ordrenr, ordredato, leveringsdato); Frisørsystem: public void RegistrerOrdre(int ordrenr, DateTime ordredato, DateTime leveringsdato) ordrecol.opretordre(ordrenr, ordredato, leveringsdato); OrdreCollection: public void OpretOrdre(int ordrenr, DateTime ordredato, DateTime leveringsdato) Ordre ordre = new Ordre(ordrenr, ordredato, leveringsdato); ordrer.add(ordre); Ordre: public Ordre(int ordrenr, DateTime ordredato, DateTime leveringsdato) this.ordrenr = ordrenr; this.ordredato = ordredato; this.leveringsdato = leveringsdato; plukket = false; ordrelinier = new List<Ordrelinie>(); // Skab ordrelinie-list

26 Eksempel: et ordresystem note 5 Lagdeling s. 26 Operationskontrakt for RegistrerOrdrelinie RegistrerOrdrelinie(ordrenr, varenr, antal) Use cases: Modtag Ordre pre: Ordre-objekt med ordrenr samt vare-objekt med varenr findes i forvejen post: Der er oprettet et ordrelinie-objekt med antal, som er aggregeret op i ordre-objektet (med ordrenr) og associeret til vare-objektet (med varenr) output: Sekvensdiagram for RegistrerOrdrelinie Kode for RegistrerOrdrelinie UI: frisørsystem.registrerordrelinie(ordrenr, varenr, antal); Frisørsystem: public void RegistrerOrdrelinie(int ordrenr, long varenr, int antal) Vare vare = varecol.findvare(varenr); ordrecol.opretordrelinie(ordrenr, vare, antal); OrdreCollection: public void OpretOrdrelinie(int ordrenr, Vare vare, int antal) Ordre ordre = FindOrdre(ordrenr); ordre.opretordrelinie(vare, antal); public void OpretOrdrelinie(int ordrenr, Vare vare, int antal) Ordre ordre = FindOrdre(ordrenr);

27 Eksempel: et ordresystem note 5 Lagdeling s. 27 ordre.opretordrelinie(vare, antal); public Ordre FindOrdre(int ordrenr) foreach (Ordre minordre in ordrer) if (minordre.ordrenr == ordrenr) return minordre; return null; Ordre: public void OpretOrdrelinie(Vare vare, int antal) Ordrelinie ordrelinie; ordrelinie = new Ordrelinie(antal); // skab ordrelinie ordrelinie.tilknytvare(vare); // tilknyt vare til ordrelinie ordrelinier.add(ordrelinie); // placer ordrelinie i liste public long Ordrenr get return ordrenr; Ordrelinie: public Ordrelinie(int antal) this.antal = antal; // Associéring til vare public void TilknytVare(Vare vare) this.vare = vare; public long Ordrenr get return ordrenr;

28 Eksempel: et ordresystem note 5 Lagdeling s. 28 Iteration V. Use case: Ekspedér ordre System-sekvens-diagram for Ekspedér Ordre

29 Eksempel: et ordresystem note 5 Lagdeling s. 29 Operationskontrakt for FindordrenumreEksp ordrenumre = FindordrenumreEksp() Use cases: Ekspeder Ordre pre: ingen post: ingen output: En liste med ordrenumre, hvis ordrer er klar til at blive ekspederet, dvs hvor leveringsdatoen er nået (eller overskredet) og som ikke er plukket. Kode for FindordrenumreEksp UI: List<int> ordrenumreeksp = frisørsystem.findordrenumreeksp(); Frisørsystem: public List<int> FindOrdrenumreEksp() return ordrecol.findordrenumreeksp(); OrdreCollection: public List<int> FindOrdrenumreEksp() List<int> ordrenumre = new List<int>(); foreach (Ordre ordre in ordrer) if (ordre.skalekspederes()) ordrenumre.add(ordre.ordrenr); return ordrenumre;

30 Eksempel: et ordresystem note 5 Lagdeling s. 30 Ordre: public bool SkalEkspederes() return (DateTime.Now.CompareTo(leveringsdato) >= 0) &&!plukket; public int Ordrenr get return ordrenr; Operationskontrakt for FindOrdre ordre = FindOrdre(ordrenr) Use cases: Ekspeder Ordre, Modtag Ordre pre: Ordre-objekt med ordrenr findes post: ingen output: Ordre. Operationen er analog med operationen FindVare, derfor vises ingen sekvensdiagram. Operationskontrakt for VisOrdrelinier(ordrenr) ordrerlinier = VisOrdrelinier(ordrenr) Use cases: Ekspeder Ordre pre: Ordre-objekt med ordrene findes post: ingen output: Ordrelinier med vareinformationer. Operationen laves vha en iterator over ordrelinier, derfor vises ingen sekvensdiagram.

31 Eksempel: et ordresystem note 5 Lagdeling s. 31 Operationskontrakt for KanEkspederes kanekspederes = KanEkspederes(ordrenr) Use cases: Ekspeder Ordre pre: ingen post: ingen output: En boolsk værdi, som fortæller om ordren med ordrenr kan ekspederes, dvs. om der er varer nok på lageret til alle ordrelinierne. NB: vare.getbeholdning() hedder vare.beholdning Kode for KanEkspederes UI: kanekspederes = frisørsystem.kanekspederes(ordrenr); Frisørsystem: public bool KanEkspederes(int ordrenr) return ordrecol.kanekspederes(ordrenr); OrdreCollection: public bool KanEkspederes(int ordrenr) Ordre ordre = FindOrdre(ordrenr); return ordre.kanekspederes();

32 Eksempel: et ordresystem note 5 Lagdeling s. 32 Ordre: public bool KanEkspederes() foreach (Ordrelinie ordrelinie in ordrelinier) if (!ordrelinie.kanekspederes()) return false; return true; Ordrelinie: public bool KanEkspederes() return (antal <= vare.beholdning); Vare: public int Beholdning get return beholdning;

33 Eksempel: et ordresystem note 5 Lagdeling s. 33 Operationskontrakt for EkspederOrdre EkspedererOrdre (ordrenr) Use cases: Ekspeder Ordre pre: Ordren skal findes og skal kunne ekspederes, se operationen KanEkspederes post: Varebeholdningen er nedskrevet med antal for alle ordrelinier output: Kode for EkspedererOrdre UI: frisørsystem.ekspederordre(ordrenr); Frisørsystem: public void EkspederOrdre(int ordrenr) ordrecol.ekspederordre(ordrenr); OrdreCollection: public void EkspederOrdre(int ordrenr) Ordre ordre = FindOrdre(ordrenr); ordre.ekspederordre(); Ordre: public void EkspederOrdre() foreach (Ordrelinie ordrelinie in ordrelinier) ordrelinie.ekspederordrelinie(); plukket = true;

34 Eksempel: et ordresystem note 5 Lagdeling s. 34 Ordrelinie: public void EkspederOrdrelinie() vare.plukvarer((uint)antal); Vare: public void PlukVarer(uint antal) beholdning -= antal;

35 Eksempel: et ordresystem note 5 Lagdeling s. 35 Iteration I. Use case: Planlæg indkøb System-sekvens-diagram for Planlæg indkøb

36 Eksempel: et ordresystem note 5 Lagdeling s. 36 Designmodel Her er vist et Designklassediagram med de metoder, sekvensdiagrammerne fører til.

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

Obligatorisk opgave i objektorienteret analyse og design

Obligatorisk opgave i objektorienteret analyse og design Obligatorisk SD-opgave s. Obligatorisk opgave i objektorienteret analyse og design Løs følgende, som en indviduel opgave. I må gerne samarbejde i grupper, men alle har ansvar for at udfærdige sin egen

Læs mere

Indhold. Side 2 af 26

Indhold. Side 2 af 26 Tema Design Design, Programmering og test af Adressebog Fra d. 17 april til 20 april 2012 Vejledere: Gunhild Marie Andersen Kis Boisen Hansen Gruppe B Deltagere Side 1 af 26 Indhold Indledning.... 3 Kodestandard...

Læs mere

Kursusarbejde 3 Grundlæggende Programmering

Kursusarbejde 3 Grundlæggende Programmering Kursusarbejde 3 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 21. november 2003 Indhold 1. Kode 2 1.1. forestillinger.h............................................. 2 1.2. forestillinger.cc.............................................

Læs mere

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte

Læs mere

Løsningsforslag til Camp Let. Case Beskrivelse: Camp Let

Løsningsforslag til Camp Let. Case Beskrivelse: Camp Let Løsningsforslag til Camp Let Case Beskrivelse: Camp Let Firmaet Camp Let har til formål at udleje forskellige typer transportable ferieboliger. Det drejer sig i øjeblikket om campingbusser, campingvogne,

Læs mere

Assignment #5 Toolbox Contract

Assignment #5 Toolbox Contract Assignment #5 Toolbox Contract Created by: René Kragh Trine Randløv E mail address cph rk70@cphbusiness.dk 23 11 2014 1 Introduktion Dette dokument indeholder en vertikal kontrakt for et system som skal

Læs mere

Indholdsfortegnelse for kapitel 3

Indholdsfortegnelse for kapitel 3 Indholdsfortegnelse for kapitel 3 Kapitel 3 Design............................................................ 2 Database........................................................... 3 ER-diagram.................................................

Læs mere

Kursusarbejde 1 Grundlæggende Programmering. Arne Jørgensen, 300473-2919 klasse dm032-1a

Kursusarbejde 1 Grundlæggende Programmering. Arne Jørgensen, 300473-2919 klasse dm032-1a Kursusarbejde 1 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 3. oktober 2003 Kode //File Name: kaalhovede.cc //Author: Arne Jørgensen //Email Address: arne@arnested.dk, arnjor@niels.brock.dk

Læs mere

SWC eksamens-spørgsmål. Oversigt

SWC eksamens-spørgsmål. Oversigt SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition

Læs mere

Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net)

Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net) Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net) Kim Harding Christensen EOS A/S Margrethepladsen 3 8000 Århus TLF: 8732 8787

Læs mere

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal

Læs mere

Kursusarbejde 2 Grundlæggende Programmering

Kursusarbejde 2 Grundlæggende Programmering Kursusarbejde 2 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 31. oktober 2003 Indhold 1. Kode 2 1.1. hotel.h.................................................... 2 1.2. hotel.cc...................................................

Læs mere

Software Design (SWD) Spørgsmål 1

Software Design (SWD) Spørgsmål 1 Spørgsmål 1 Unified Process Du skal give en beskrivelse af Unified Process. Beskrivelsen skal indeholde forklaring på følgende begreber: Phase Iteration Discipline Activity Milestone Artifact Spørgsmål

Læs mere

Udvikling af DOTNET applikationer til MicroStation i C#

Udvikling af DOTNET applikationer til MicroStation i C# Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt

Læs mere

PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections;

PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections; PROGRAM using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace EventManager class Program static void Main(string[] args) string hovedmenu = ""; string svar;

Læs mere

Indholdsfortegnelse for kapitel 2

Indholdsfortegnelse for kapitel 2 Indholdsfortegnelse for kapitel 2 Kapitel 2. Analyse.......................................................... 2 Analyse af 2.1...................................................... 2 Analysen af Database.................................................

Læs mere

Plugin-arkitektur med.net

Plugin-arkitektur med.net Denne guide er oprindeligt udgivet på Eksperten.dk Plugin-arkitektur med.net Denne artikel viser hvordan du kan lave en plugin-arkitektur i dit program. Gør det muligt for andre at skrive udvidelser til

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 6 Komponenter (og lidt Swing og MVC) Læsning: VP 4, evt. VP 6 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Grafiske komponenter

Læs mere

Rekursion C#-version

Rekursion C#-version Note til Programmeringsteknologi Akademiuddannn i Informationsteknologi Rekursion C#-version Finn Nordbjerg 1 Rekursion Rekursionsbegrebet bygger på, at man beskriver noget ved "sig selv". Fx. kan tallet

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Software Construction 1 semester (SWC) Spørgsmål 1

Software Construction 1 semester (SWC) Spørgsmål 1 Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /

Læs mere

Dm071 / Dm072 - Obligatorisk projekt 3: Design af model

Dm071 / Dm072 - Obligatorisk projekt 3: Design af model Dm071 / Dm072 - Obligatorisk projekt 3: Design af model Fag: Projektet omhandler emner fra fagene Software Design og Software Konstruktion. Formål: Formålet med projektet er at give dig mulighed for sammen

Læs mere

Eksempel: Skat i år 2000

Eksempel: Skat i år 2000 Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)

Læs mere

Elaboration fase 2. semester projekt 2008-04-11. Gruppe 4

Elaboration fase 2. semester projekt 2008-04-11. Gruppe 4 Indholdsfortegnelse Analysemodeller... 4 Domænemodel... 4 ER-model... 5 Designmodeller... 7 Designklassediagram... 7 Sekvensdiagram... 9 Relationel model... 10 Diskussion af datastrukturer, algoritmer

Læs mere

Tredjepart webservices

Tredjepart webservices Tredjepart webservices 4. juni 2015 USS Dok. Klik her for at angive tekst. 1/12 Indholdsfortegnelse Introduktion... 3 Miljøer... 3 Adgang... 3 API kald... 4 GET: /authorizations... 4 Input 4 Output 4 Output

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Design af brugerflader 11.1 Samme sted Forskellige steder Sidste kursusgang Samtidigt

Læs mere

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Løsning af møntproblemet

Løsning af møntproblemet Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet

Læs mere

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Hassansalem.dk/delpin User: admin Pass: admin BACKEND Hassansalem.dk/delpin User: admin Pass: admin BACKEND 1/10 Indledning Dette projekt er den afsluttende del af web udvikling studiet på Erhvervs Lillebælt 1. semester. Projektet er udarbejdet med Del-pin

Læs mere

SWC Elementer i klassedefinition

SWC Elementer i klassedefinition SWC Elementer i klassedefinition Indhold Eksempel... 2 Karakteristika for en klasse... 3 Karakteristika for et instance field... 4 Karakteristika for en constructor... 5 Karakteristika for en property...

Læs mere

Software Design (SWD) Spørgsmål 1

Software Design (SWD) Spørgsmål 1 Spørgsmål 1 Unified Process Du skal give en beskrivelse af Unified Process. Beskrivelsen skal indeholde forklaring på følgende begreber: Phase Iteration Discipline Activity Milestone Artifact Spørgsmål

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3 DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget

Læs mere

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1 Spørgsmål 1 Grundlæggende objektorienterede begreber o Klasse (class) o Objekt (object) o Metode (method), herunder return type og parametre o Instansvariable (instance variables) & egenskaber (properties),

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

DKAL Snitflader REST Register

DKAL Snitflader REST Register DKAL Snitflader REST Register 1 Indholdsfortegnelse A2.1 INTRODUKTION 3 A2.1.1 HENVISNINGER 3 A2.1.2 LÆSEVEJLEDNING 4 A2.1.2.1 SÅDAN LÆSES EN REST GRAF 4 A2.1.2.2 SÅDAN LÆSES EN RESSOURCE OG EN TYPE 4

Læs mere

Noter til dm529. Jonas Nyrup. 11. november 2011

Noter til dm529. Jonas Nyrup. 11. november 2011 Noter til dm529 Jonas Nyrup 11. november 2011 Indhold 1 Kravdisciplinen: Kravmodellen og Indfangning af Krav 2 1.1 (ikke)-funktionelle krav...................... 2 1.2 Kravattributter...........................

Læs mere

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations Tabelbegrebet Klassediagrammer (III) Tabeller og qualified associations originally by Michael R. Hansen modified/extended by Anne E. Haxthausen Informatics and Mathematical Modelling Technical University

Læs mere

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5 Databaser og SQL Introduktion til SQL Kap 1-5 1 Dagens gang Databaser Database begreber Mapning af klasser til relationel model Normalisering Opgaver til næste gang 2 Databasebegreber A database is a:

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

ITWIN1. Afsluttende projekt. PhotoDays. Benjamin Sørensen (02284) Tomas Stæhr Berg (03539)

ITWIN1. Afsluttende projekt. PhotoDays. Benjamin Sørensen (02284) Tomas Stæhr Berg (03539) ITWIN1 Afsluttende projekt PhotoDays Benjamin Sørensen (02284) Tomas Stæhr Berg (03539) ITWIN1 - AFSLUTTENDE PROJEKT PhotoDays Benjamin Sørensen & Tomas Stæhr Berg 02284 & 03539 1 1 Underskrifter Rapporten

Læs mere

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater Design by Contract Bertrand Meyer 1986 Design and Programming by Contract Michael R. Hansen & Anne Haxthausen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav. Miniprojekt2011 Projektbeskrivelse Der skal fremstilles en lille java application på PC, hvor brugeren kan foretage interaktioner med en simpel database på disken via et grafisk brugerinterface. Formålet

Læs mere

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11 DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void

Læs mere

Digital post Snitflader Bilag A2 - REST Register Version 6.3

Digital post Snitflader Bilag A2 - REST Register Version 6.3 Digital post Snitflader Bilag A2 - REST Register Version 6.3 1 Indholdsfortegnelse A2.1 INTRODUKTION 4 A2.1.1 HENVISNINGER 4 A2.2 OVERSIGT OVER FUNKTIONSOMRÅDE 5 A2.2.1 OPRET / HENT OPLYSNINGER OM SLUTBRUGER

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug

Læs mere

Kapitel 4 Løkker i C#

Kapitel 4 Løkker i C# Kapitel 4 Løkker i C# Løkker en vigtig del af alle programmeringssprog, og C# er ikke andeles. En løkke er en måde at udføre en del af koden gentagne gange. Ideen er at du fortsætter med at udføre en opgave

Læs mere

Civilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

Civilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Kursusnavn: Programmering. Tilladte hjælpemidler: Alle skriftlige hjælpemidler Opgavesættet består af fire opgaver, der har følgende vægtning: Opgave

Læs mere

Supermarkedsmodellen for design af brugergrænseflade

Supermarkedsmodellen for design af brugergrænseflade Supermarkedsmodellen for design af brugergrænseflade Denne note er skrevet frit efter Peter Huber, som på et kursus i Efteruddannelsescenteret fortalte om supermarkedsmodellen til design af brugergrænseflader.

Læs mere

SimaxCash. Brugervejledning

SimaxCash. Brugervejledning SimaxCash Brugervejledning 1 Indhold 1 Opsætning af varer... 3 1.1 Hovedgrupper... 3 1.2 Varegrupper... 5 1.3 Varer... 9 2 Opsætning af tilbud... 18 2.1 Kombinationstilbud... 18 3 Opsætning af kasseterminal...

Læs mere

Om binære søgetræer i Java

Om binære søgetræer i Java Om binære søgetræer i Java Mads Rosendahl 7. november 2002 Resumé En fix måde at gemme data på er i en træstruktur. Måden er nyttig hvis man får noget data ind og man gerne vil have at det gemt i en sorteret

Læs mere

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004 Genbrugelige komponenter og designmønstre i Java Jacob Nordfalk Ingeniørhøjskolen i København Nykøbing F itvisioncenter 24. februar 2004 Program Om Jacob Nordfalk introduktion (ikke-teknisk del) Komponentbaseret

Læs mere

1B fil database. //globale variabler DateTime tid; // erklærer en variabel af typen datetime DateTime dag; // erklærer en variabel af typen datetime

1B fil database. //globale variabler DateTime tid; // erklærer en variabel af typen datetime DateTime dag; // erklærer en variabel af typen datetime 1B fil database using System; //eksterne klasser using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks;

Læs mere

Dvs. at give dit program muligheden for at loade og bruge plugins som andre har lavet.

Dvs. at give dit program muligheden for at loade og bruge plugins som andre har lavet. Denne guide er oprindeligt udgivet på Eksperten.dk Refleksion med.net Refleksion bruges til at undersøge klasser på runtime tidspunktet. Se hvordan du f.eks. loader en klasse fra en DLL, gennemkigger dens

Læs mere

Software Design (SWD) Spørgsmål 1

Software Design (SWD) Spørgsmål 1 Spørgsmål 1 Unified Process Du skal give en beskrivelse af Unified Process. Beskrivelsen skal indeholde forklaring på følgende begreber: Phase Iteration Discipline Artifact Milestone Du skal relaterer

Læs mere

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

PHP 3 UGERS FORLØB PHP, MYSQL & SQL PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at

Læs mere

Hvordan vælger jeg dokumentprofilen?

Hvordan vælger jeg dokumentprofilen? Hvordan vælger jeg dokumentprofilen? Valget af OIOUBL profil i en konkret dokumentudveksling vil bl.a. afhænge af, hvilke OIOUBL profiler den anden part i udvekslingen understøtter. Et konkret eksempel

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 11 sider Skriftlig eksamen i Datalogi Modul 1 Sommer 2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 10% Opgave 2 10%

Læs mere

Design af genbrugeligt objektorienteret software

Design af genbrugeligt objektorienteret software Velkommen Design af genbrugeligt objektorienteret software Evaluering af software ved hjælp af statiske mål. 24 februar 2004 Specialeforsvar af: Søren Gaardbo Jensen Design af genbrugeligt objektorienteret

Læs mere

Modul 2 Database projekt Multimediedesign 3. semester Gruppe 3 IRF/TUJE

Modul 2 Database projekt Multimediedesign 3. semester Gruppe 3 IRF/TUJE Modul 2 Database projekt Multimediedesign 3. semester Gruppe 3 IRF/TUJE Fact sheet Indholdsfortegnelse Fact Sheet Gantt kort Valgt af virksomhed Brainstorm Attribut tabel ER-diagram Skitse MySQLWorkbench

Læs mere

Workshop Persistence

Workshop Persistence Workshop Persistence University College Nordjylland Datamatikeruddannelsen Klasse: dmaa0216 Titel: Workshop Persistence Versionskontrol-sti: https://github.com/mrurb/workshop-persistans/invitations versionsnummer:

Læs mere

Forelæsning Uge 1 Torsdag

Forelæsning Uge 1 Torsdag Forelæsning Uge 1 Torsdag Objekters tilstand og opførsel Java og BlueJ Skabelse af objekter (via new-operatoren) Iteration (gentagelser) og parametrisering Java's for løkke Parametre i metoder Forskellige

Læs mere

My Shop. Funktioner, oversigt: Kom i gang: Online shop system

My Shop. Funktioner, oversigt: Kom i gang: Online shop system My Shop Online shop system Infusion name: My_Shop Ajax baseret, online SHOP system Vejledning til installation og brug -------------------------------------------------------- Author: Egon Jessen, webmaster@myphp.dk

Læs mere

Løsning af skyline-problemet

Løsning af skyline-problemet Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle

Læs mere

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1. Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 9 Andre designmønstre Andre designmønstre: Uforanderlig, Fluevægt, Lagdelt Initialisering, Komposit/Rekursiv Komposition, Kommando/Ændring Fremlæggelse af programmering/status

Læs mere

Klasser og objekter. (Afsnit i manualen)

Klasser og objekter. (Afsnit i manualen) Klasser og objekter (Afsnit 4 + 5 i manualen) Grundbegreber Klasser og objekter beskrivelse oprettelse Attributter og metoder tilstand opførsel Indkapsling afskærmning datarepræsentationsuafhængighed Klasser

Læs mere

Quick guide til BordingNet

Quick guide til BordingNet Quick guide til BordingNet BordingNet - Når tiden er vigtig BordingNet - Når tiden er vigtig Kom godt i gang med BordingNet. Denne Quick Guide giver dig en hurtig introduktion til de mest anvendte funktioner,

Læs mere

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere Integrationsmanual Anvendelse af webservice til kursusoversigt i Campus Brugervejledning til udviklere Moderniseringsstyrelsen Webservice manual til udviklere 2016 1 1. Indholdsfortegnelse Nyt kapitel

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Integration mellem OpenBizBox og E conomic

Integration mellem OpenBizBox og E conomic Integration mellem OpenBizBox og E conomic 1. Introduktion Integrationens formål er at sørge for at ordre der laves i OpenBizBox automatisk bliver eksporteret som en ordre i E conomic. Hvorved det gøres

Læs mere

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer Opfølgning på Opgave 2 og Use Cases originally by Michael R. Hansen modified/extended by Anne E. Haxthausen Informatics and Mathematical Modelling Technical University of Denmark Opgaven fortsat Efter

Læs mere

Spring Schema Extension eller Spring Domain Specific Languages

Spring Schema Extension eller Spring Domain Specific Languages Spring Schema Extension eller Spring Domain Specific Languages Forfatter: Jeppe Cramon Cramon Consulting (http://www.cramon.dk) Dato: 23/7-2005 Efter at have arbejdet med Spring i lang tid, har jeg lagt

Læs mere

Lavet af Danni jensen og David Olsen

Lavet af Danni jensen og David Olsen Projekt Delfin Lavet af Danni jensen og David Olsen 19/5-2008 Indholdsfortegnelse. Side 1: Indholdsfortegnelse og forord. Side 2: Kravsliste. Side 3: Use Case Model. Side 4: Formandens aktørbeskrivelse

Læs mere

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

Læs mere

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen. Copenhagen Business Academy Multimediedesigner 3. semester - 1. projekt, september 2014 Gruppe 1 - MulA Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen. Study: Multimedia Design Project:

Læs mere

Vejledning til online blanketten Industriens salg af varer

Vejledning til online blanketten Industriens salg af varer Vejledning til online blanketten Industriens salg af varer Din vej gennem blanketten Her er en kort vejledning om hvordan du udfylder online blanketten trin for trin. Har du spørgsmål, er du velkommen

Læs mere

Fra Excel til Capture part

Fra Excel til Capture part e-service Fra Excel til Capture part Side 1 af 5 Fra Excel til Capture part Note skrevet af : Nordcad Systems Technical Support Revision : Maj 2003, Release 14.2/9.2.3, 2003 Denne tekniske note gennemgår

Læs mere

Eksamens spørgsmål Software Construction. Objekter. Spørgsmål 1: Januar Giv en beskrivelse af Objekt-begrebet og deres brug

Eksamens spørgsmål Software Construction. Objekter. Spørgsmål 1: Januar Giv en beskrivelse af Objekt-begrebet og deres brug Spørgsmål 1: Objekter Giv en beskrivelse af Objekt-begrebet og deres brug Under eksaminationen forventes du at forklare: Hvad er en type og en variabel? Hvordan erklæres en variabel? Hvad forstås ved en

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Introduktion til ActionScript, fortsat

Introduktion til ActionScript, fortsat Introduktion til ActionScript, fortsat Kaspar Rosengreen Nielsen kaspar@interactivespaces.net i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, kaspar@interactivespaces.net 1 Dagens program Opsamling

Læs mere

En textbox har et Validating event, med dette kan vi samme med en errroprovider checke input:

En textbox har et Validating event, med dette kan vi samme med en errroprovider checke input: Inputvalidering i Windows Forms Applikationer Rolf Therkildsen (6. nov 2008) Krav til inputvalidering Brugeren må aldrig blive forhindret i at flytte til en anden kontrol. Brugeren skal informeres om fejl

Læs mere

Specifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api

Specifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api Specifikation Abstrakt, objektorienteret operativsystem-api Indhold 1 Indledning... 3 1.1 Introduktion... 3 1.2 Formål... 3 1.3 Overordnede krav... 3 2 Ressourcer i OS-API et... 4 2.1 Tråde... 4 2.2 Timere...

Læs mere

Test af It-komponent

Test af It-komponent Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side

Læs mere

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne. Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning

Læs mere

Web- og serverprogrammering

Web- og serverprogrammering Web- og serverprogrammering Arkitekturer i webprogrammer - dag 6 Model-View-Controller-arkitukturen Flerlags-arkitekturer Læsning: WJSP 10 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Læs mere

SERIENUMMER OG PARTINUMMER PÅ VARER

SERIENUMMER OG PARTINUMMER PÅ VARER SERIENUMMER OG PARTINUMMER PÅ VARER Registrering af serienummer og partinummer på varer giver mulighed for at spore enheder og hele partier hele vejen fra anskaffelse, lagerføring til forsendelse og fakturering.

Læs mere

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen Studiepraktik Thomas Bøgholm boegholm@cs.aau.dk Mikkel Hansen mhan@cs.aau.dk Jacob Elefsen jelefs12@student.aau.dk 1 Studiepraktik -- program Program onsdag 10.00 10.15 Registrering af fremmøde og gennemgang

Læs mere

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni 2011. 1 8 jun 2011 MapBasic &.

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni 2011. 1 8 jun 2011 MapBasic &. MapBasic &.NET interaktion MapBasic.NET Jakob Lanstorp IT konsulent COWI Odense 23. Juni 2011 1 MapBasic &.NET interaktion Erfaring med MapBasic.NET / Visual Studio Anden programmering 2 Program Hurtig

Læs mere

Forelæsning Uge 1 Torsdag

Forelæsning Uge 1 Torsdag Forelæsning Uge 1 Torsdag Objekters tilstand og opførsel Java og BlueJ Skabelse af objekter (via new-operatoren) Iteration (gentagelser) og parametrisering Java's for løkke Parametre i metoder Forskellige

Læs mere

Quick guide til BordingNet

Quick guide til BordingNet Quick guide til BordingNet BordingNet - Når tiden er vigtig Kom godt i gang med BordingNet. Denne Quick Guide giver dig en hurtig introduktion til de mest anvendte funktioner, så du hurtigt kan komme i

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 10. april, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

//Udskriver System.out.println(Hej  + ditfornavn +   + ditefternavn + .); System.out.println(Du er  + dinalder +  aar gammel! Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 20. april, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af

Læs mere