Denne opgave kan dels give basale programmeringstræning hvor der laves en simpel domain-model klasse (Termometer) og en Brugergrænseflade til denne (ny temperatur tildeltes fra skærm) uden ekstra tråde, dels med udvidelse af en tråd der genererer temperatur (simuler signal udefra – fysisk sensor) med heraf følgende tråd-problemer og endelig fuldt udvidet med event/delegater for besked til brugergrænseflade problemstillinger med problemstilling at det sker i anden tråd.
Opgaverne:
·
Opgave 9 - termometer med alarm-event som PDF
·
Diskuter
og sammenlign, samt hjælp hinanden, men sørg for også selv at kode individuelt.
·
Du
kan evt. se her hvordan man takler problemer med tråde og access til GUI
elementer.
ObserverPattern_Tråde_og_Gui_Winform_og_WPF (Ny erstatning)
Tråde-og-GUI (Det centrale - tricket i ovenstående)
·
Du
kan få hjælp ved at se på løsningen hvis du går helt i stå, men brug denne
mulighed med omtanke og prøv selv at løse opgaven først og hvis du ser
løsningen, så prøv bagefter på egen hånd forfra.
Løsning af Opgave 9 - termometer med alarm-event (Monitor og
observer pattern med delegater)
·
Brug
den designmæssige gode løsning:
Trådeksempel10_TrådOgResourceMonitor - med tråd klasse og resource-monitor - det gode
design
·
Til opgaveløsningen
kan du evt. også få glæde af at se på:
C# to the point (***) kap 11.1 om
delegater (fotokopi – se fronter)
C#(*) kap 3.7 (Delegater)
Delegater eksempler
ObserverPattern
ObserverPattern_CascadeEvent
Ekstra læsestof fra wikipedia (publish/subscribe):
http://en.wikipedia.org/wiki/Publish/subscribe
(*) Core C# and .NET, Stephen C. Perry - se
Fronter
(**) .Net Application Development with C#...,
Hanspeter Mössenböck - se Fronter
(***) C# To the point -.., Hanspeter Mössenböck
- - se Fronter
· Du
kan få hjælp ved at se på en løsning, hvis du går helt i stå, men brug denne
mulighed med omtanke og prøv selv at løse opgaven først og hvis du ser
løsningen, så prøv bagefter på egen hånd forfra.
Løsning af Opgave 9 - termometer med alarm-event
(Monitor og observer pattern med delegater)