8 com.umlet.element.Class 312 16 104 40 Wetterstation -- com.umlet.element.Class 744 16 112 40 Alarmverzeichnis -- com.umlet.element.Relation 392 16 368 40 lt=<<<<- m1=1 m2=1 r2=alarmvz 24;24;352;24 com.umlet.element.Class 320 128 104 64 Sensor {abstract} -- wert : Real com.umlet.element.Relation 168 16 160 240 lt=<<<<- r2=wrsen m1=1 m2=1 144;24;24;24;24;224;64;224 com.umlet.element.Class 232 232 80 24 WrSensor com.umlet.element.Relation 248 168 136 80 lt=<<- 120;24;120;40;24;40;24;64 com.umlet.element.Class 424 224 104 64 MinMaxSensor {abstract} -- min : Real max : Real com.umlet.element.Relation 344 168 144 72 lt=<<- 24;24;24;40;128;40;128;56 com.umlet.element.Class 496 328 88 32 TrendSensor {abstract} com.umlet.element.Class 296 328 80 24 LdSensor com.umlet.element.Relation 312 264 168 80 lt=<<- 152;24;152;40;24;40;24;64 com.umlet.element.Relation 440 264 120 80 lt=<<- 24;24;24;40;104;40;104;64 com.umlet.element.Class 392 328 80 24 LfSensor com.umlet.element.Relation 392 264 88 80 lt=<<- 72;24;72;40;24;40;24;64 com.umlet.element.Class 448 408 80 24 WgSensor com.umlet.element.Class 560 408 80 24 TSensor com.umlet.element.Relation 520 336 104 88 lt=<<- 24;24;24;40;88;40;88;72 com.umlet.element.Relation 472 336 88 88 lt=<<- 72;24;72;40;24;40;24;72 com.umlet.element.Class 672 328 80 24 Historie com.umlet.element.Relation 560 304 128 56 lt=- m1=1 m2=1 hat r1=hist 112;40;24;40 com.umlet.element.Class 680 424 88 64 Messung -- wert : Real zeitpunkt : Date com.umlet.element.Relation 656 328 98 112 lt=<<<- enthält m1= 0..1 m2= * 56;24;56;96 com.umlet.element.Relation 744 32 98 112 lt=<<<- enthält m1= 0..1 m2= * 56;24;56;96 com.umlet.element.Class 744 128 104 64 Alarm {abstract} -- zeitpunkt : Date prognosewert : Real com.umlet.element.Class 696 240 80 24 Sturmwarnung com.umlet.element.Class 808 240 88 24 Glatteiswarnung com.umlet.element.Relation 768 168 104 88 lt=<<- 24;24;24;40;88;40;88;72 com.umlet.element.Relation 720 168 88 88 lt=<<- 72;24;72;40;24;40;24;72 com.umlet.element.Relation 168 16 160 336 lt=<<<<- m1=1 m2=1 r2=ldsen 144;24;24;24;24;320;128;320 com.umlet.element.Relation 168 16 272 376 lt=<<<<- m1=1 m2=1 r2=lfsen 144;24;24;24;24;360;256;360;256;336 com.umlet.element.Relation 168 16 336 448 lt=<<<<- r2=wgsen m1=1 m2=1 144;24;24;24;24;432;320;432;320;416 com.umlet.element.Relation 168 16 456 448 lt=<<<<- r2=tsen m1=1 m2=1 144;24;24;24;24;432;440;432;440;416 com.umlet.element.Class 320 608 168 64 Wetterstation -- -- starteWetterstation() : void messeAlles() : void com.umlet.element.Class 752 608 112 40 Alarmverzeichnis -- com.umlet.element.Relation 464 608 304 40 lt=<<<<- m1=1 m2=1 r2=alarmvz 24;24;288;24 com.umlet.element.Class 328 720 112 64 Sensor {abstract} -- wert : Real -- verbinde() : void com.umlet.element.Relation 176 608 160 240 lt=<<<<- r2=wrsen m1=1 m2=1 144;24;24;24;24;224;64;224 com.umlet.element.Class 240 824 80 24 WrSensor com.umlet.element.Relation 256 760 136 80 lt=<<- 120;24;120;40;24;40;24;64 com.umlet.element.Class 432 816 104 64 MinMaxSensor {abstract} -- min : Real max : Real com.umlet.element.Relation 352 760 144 72 lt=<<- 24;24;24;40;128;40;128;56 com.umlet.element.Class 504 920 88 32 TrendSensor {abstract} com.umlet.element.Class 304 920 80 24 LdSensor com.umlet.element.Relation 320 856 168 80 lt=<<- 152;24;152;40;24;40;24;64 com.umlet.element.Relation 448 856 120 80 lt=<<- 24;24;24;40;104;40;104;64 com.umlet.element.Class 400 920 80 24 LfSensor com.umlet.element.Relation 400 856 88 80 lt=<<- 72;24;72;40;24;40;24;64 com.umlet.element.Class 456 1000 80 24 WgSensor com.umlet.element.Class 568 1000 80 24 TSensor com.umlet.element.Relation 528 928 104 88 lt=<<- 24;24;24;40;88;40;88;72 com.umlet.element.Relation 480 928 88 88 lt=<<- 72;24;72;40;24;40;24;72 com.umlet.element.Class 680 920 80 24 Historie com.umlet.element.Relation 568 896 128 56 lt=- m1=1 m2=1 hat r1=hist 112;40;24;40 com.umlet.element.Class 688 1016 88 64 Messung -- wert : Real zeitpunkt : Date com.umlet.element.Relation 664 920 98 112 lt=<<<- enthält m1= 0..1 m2= * 56;24;56;96 com.umlet.element.Relation 752 624 98 112 lt=<<<- enthält m1= 0..1 m2= * 56;24;56;96 com.umlet.element.Class 752 720 104 64 Alarm {abstract} -- zeitpunkt : Date prognosewert : Real com.umlet.element.Class 704 832 80 24 Sturmwarnung com.umlet.element.Class 816 832 88 24 Glatteiswarnung com.umlet.element.Relation 776 760 104 88 lt=<<- 24;24;24;40;88;40;88;72 com.umlet.element.Relation 728 760 88 88 lt=<<- 72;24;72;40;24;40;24;72 com.umlet.element.Relation 176 608 160 336 lt=<<<<- m1=1 m2=1 r2=ldsen 144;24;24;24;24;320;128;320 com.umlet.element.Relation 176 608 272 376 lt=<<<<- m1=1 m2=1 r2=lfsen 144;24;24;24;24;360;256;360;256;336 com.umlet.element.Relation 176 608 336 448 lt=<<<<- r2=wgsen m1=1 m2=1 144;24;24;24;24;432;320;432;320;416 com.umlet.element.Relation 176 608 456 448 lt=<<<<- r2=tsen m1=1 m2=1 144;24;24;24;24;432;440;432;440;416 com.umlet.element.Class 320 1160 168 104 Wetterstation -- -- starteWetterstation() : void messeWr() : void zeigeWr(w:Real) : void com.umlet.element.Class 752 1208 112 40 Alarmverzeichnis -- com.umlet.element.Relation 464 1208 296 32 lt=<<<<- m1=1 m2=1 r2=alarmvz 24;24;288;24 com.umlet.element.Class 328 1320 112 64 Sensor {abstract} -- wert : Real -- verbinde() : Sensor com.umlet.element.Relation 176 1208 152 232 lt=<<<<- r2=wrsen m1=1 m2=1 144;24;24;24;24;224;64;224 com.umlet.element.Class 240 1408 96 80 WrSensor -- -- messe() : void holeWert() : Real getWert() : Real com.umlet.element.Relation 256 1360 128 56 lt=<<- 120;24;120;40;24;40;24;48 com.umlet.element.Class 432 1416 104 64 MinMaxSensor {abstract} -- min : Real max : Real com.umlet.element.Relation 352 1360 136 64 lt=<<- 24;24;24;40;128;40;128;56 com.umlet.element.Class 504 1520 88 32 TrendSensor {abstract} com.umlet.element.Class 304 1520 80 24 LdSensor com.umlet.element.Relation 320 1456 160 72 lt=<<- 152;24;152;40;24;40;24;64 com.umlet.element.Relation 448 1456 112 72 lt=<<- 24;24;24;40;104;40;104;64 com.umlet.element.Class 400 1520 80 24 LfSensor com.umlet.element.Relation 400 1456 80 72 lt=<<- 72;24;72;40;24;40;24;64 com.umlet.element.Class 456 1600 80 24 WgSensor com.umlet.element.Class 568 1600 80 24 TSensor com.umlet.element.Relation 528 1528 96 80 lt=<<- 24;24;24;40;88;40;88;72 com.umlet.element.Relation 480 1528 80 80 lt=<<- 72;24;72;40;24;40;24;72 com.umlet.element.Class 680 1520 80 24 Historie com.umlet.element.Relation 568 1496 120 56 lt=- m1=1 m2=1 hat r1=hist 112;40;24;40 com.umlet.element.Class 688 1616 88 64 Messung -- wert : Real zeitpunkt : Date com.umlet.element.Relation 672 1520 88 104 lt=<<<- enthält m1= 0..1 m2= * 48;24;48;96 com.umlet.element.Relation 760 1224 88 104 lt=<<<- enthält m1= 0..1 m2= * 48;24;48;96 com.umlet.element.Class 752 1320 104 64 Alarm {abstract} -- zeitpunkt : Date prognosewert : Real com.umlet.element.Class 704 1432 80 24 Sturmwarnung com.umlet.element.Class 816 1432 88 24 Glatteiswarnung com.umlet.element.Relation 776 1360 96 80 lt=<<- 24;24;24;40;88;40;88;72 com.umlet.element.Relation 728 1360 80 80 lt=<<- 72;24;72;40;24;40;24;72 com.umlet.element.Relation 176 1208 152 328 lt=<<<<- m1=1 m2=1 r2=ldsen 144;24;24;24;24;320;128;320 com.umlet.element.Relation 176 1208 264 368 lt=<<<<- m1=1 m2=1 r2=lfsen 144;24;24;24;24;360;256;360;256;336 com.umlet.element.Relation 176 1208 328 440 lt=<<<<- r2=wgsen m1=1 m2=1 144;24;24;24;24;432;320;432;320;416 com.umlet.element.Relation 176 1208 448 440 lt=<<<<- r2=tsen m1=1 m2=1 144;24;24;24;24;432;440;432;440;416 com.umlet.element.Class 304 1776 168 144 Wetterstation -- -- starteWetterstation() : void messeWr() : void zeigeWr(w:Real) : void messeLd() : void zeigeLd(w:Real) : void zeigeMinLd(w:Real) : void zeigeMaxLd(w:Real) : void com.umlet.element.Class 736 1864 112 40 Alarmverzeichnis -- com.umlet.element.Relation 448 1864 304 40 lt=<<<<- m1=1 m2=1 r2=alarmvz 24;24;288;24 com.umlet.element.Class 312 1928 112 112 Sensor {abstract} -- wert : Real -- verbinde() : Sensor messe() : void holeWert() : Real getWert() : Real com.umlet.element.Relation 160 1864 152 232 lt=<<<<- r2=wrsen m1=1 m2=1 144;24;24;24;24;224;64;224 com.umlet.element.Class 224 2072 88 32 WrSensor com.umlet.element.Relation 240 2016 128 64 lt=<<- 120;24;120;40;24;40;24;56 com.umlet.element.Class 416 2072 104 64 MinMaxSensor {abstract} -- min : Real max : Real com.umlet.element.Relation 336 2016 136 64 lt=<<- 24;24;24;40;128;40;128;56 com.umlet.element.Class 552 2224 88 32 TrendSensor {abstract} com.umlet.element.Class 288 2160 112 112 LdSensor -- -- messe() : void getMin() : Real getMax() : Real updateMin() : void updateMax() : void com.umlet.element.Relation 304 2112 160 56 lt=<<- 152;24;152;40;24;40;24;48 com.umlet.element.Relation 432 2112 176 120 lt=<<- 24;24;24;40;168;40;168;112 com.umlet.element.Class 448 2224 80 24 LfSensor com.umlet.element.Relation 432 2112 72 120 lt=<<- 24;24;24;40;64;40;64;112 com.umlet.element.Class 504 2304 80 24 WgSensor com.umlet.element.Class 616 2304 80 24 TSensor com.umlet.element.Relation 576 2232 96 80 lt=<<- 24;24;24;40;88;40;88;72 com.umlet.element.Relation 528 2232 80 80 lt=<<- 72;24;72;40;24;40;24;72 com.umlet.element.Class 736 2224 80 24 Historie com.umlet.element.Relation 616 2200 128 56 lt=- m1=1 m2=1 hat r1=hist 120;40;24;40 com.umlet.element.Class 736 2320 88 64 Messung -- wert : Real zeitpunkt : Date com.umlet.element.Relation 720 2224 88 104 lt=<<<- enthält m1= 0..1 m2= * 48;24;48;96 com.umlet.element.Relation 744 1880 88 104 lt=<<<- enthält m1= 0..1 m2= * 48;24;48;96 com.umlet.element.Class 736 1976 104 64 Alarm {abstract} -- zeitpunkt : Date prognosewert : Real com.umlet.element.Class 688 2088 80 24 Sturmwarnung com.umlet.element.Class 800 2088 88 24 Glatteiswarnung com.umlet.element.Relation 760 2016 96 80 lt=<<- 24;24;24;40;88;40;88;72 com.umlet.element.Relation 712 2016 80 80 lt=<<- 72;24;72;40;24;40;24;72 com.umlet.element.Relation 160 1864 152 328 lt=<<<<- m1=1 m2=1 r2=ldsen 144;24;24;24;24;320;128;320 com.umlet.element.Relation 160 1864 328 440 lt=<<<<- m1=1 m2=1 r2=lfsen 144;24;24;24;24;432;320;432;320;384 com.umlet.element.Relation 160 1864 400 520 lt=<<<<- r2=wgsen m1=1 m2=1 144;24;24;24;24;512;384;512;384;464 com.umlet.element.Relation 160 1864 512 520 lt=<<<<- r2=tsen m1=1 m2=1 144;24;24;24;24;512;504;512;504;464 com.umlet.element.Note 48 520 184 104 wrsen = new WrSensor(); ... andere Sensoren wrsen.verbinde(); ... andere Sensoren alarmvz = new Alarmverzeichnis(); (GRASP: Creator) fg=red bg=default com.umlet.element.Relation 208 560 152 96 lt=. bg=default fg=default 24;24;136;80 com.umlet.element.Note 104 1136 144 48 wrsen.messe(); Real w = wrsen.getWert(); zeigeWr(w); fg=red com.umlet.element.Relation 224 1136 104 88 lt=. 24;24;96;80 com.umlet.element.Note 56 1440 120 32 wert = holeWert(); fg=red com.umlet.element.Relation 152 1424 96 40 lt=. 24;32;88;24 com.umlet.element.Note 64 1512 120 32 return wert; fg=red com.umlet.element.Relation 160 1456 88 72 lt=. 24;64;80;24 com.umlet.element.Note 72 1752 152 112 ldsen.messe(); Real w = ldsen.getWert(); Real min = ldsen.getMin(); Real max = ldsen.getMax(); zeigeLd(w); zeigeMinLd(min); zeigeMaxLd(max); fg=red com.umlet.element.Relation 128 1976 192 48 lt=. 24;40;184;24 com.umlet.element.Note 0 1992 152 64 Gemeinsame Operationen in die Superklasse. (GRASP: High Cohesion) fg=red com.umlet.element.Relation 200 1768 112 96 lt=. 24;24;104;88 com.umlet.element.Note 0 2128 152 184 (überschreibt messe() aus Klasse Sensor) wert = holeWert(); if(wert < min) { updateMin(); } if(wert > max) { updateMax(); } Problem: 24h-Berechnung benötigt Historie. fg=red com.umlet.element.Relation 128 2176 168 32 lt=. 24;24;160;24 com.umlet.element.Class 312 2448 168 160 Wetterstation -- -- starteWetterstation() : void messeWr() : void zeigeWr(w:Real) : void messeLd() : void zeigeLd(w:Real) : void zeigeMinLd(w:Real) : void zeigeMaxLd(w:Real) : void (analog für LfSensor) com.umlet.element.Class 744 2552 112 40 Alarmverzeichnis -- com.umlet.element.Relation 456 2552 296 32 lt=<<<<- m1=1 m2=1 r2=alarmvz 24;24;288;24 com.umlet.element.Class 320 2616 112 112 Sensor {abstract} -- wert : Real -- verbinde() : Sensor messe() : void holeWert() : Real getWert() : Real com.umlet.element.Relation 168 2552 152 232 lt=<<<<- r2=wrsen m1=1 m2=1 144;24;24;24;24;224;64;224 com.umlet.element.Class 232 2760 88 32 WrSensor com.umlet.element.Relation 248 2704 128 64 lt=<<- 120;24;120;40;24;40;24;56 com.umlet.element.Class 424 2760 104 64 MinMaxSensor {abstract} -- min : Real max : Real com.umlet.element.Relation 344 2704 136 64 lt=<<- 24;24;24;40;128;40;128;56 com.umlet.element.Class 560 2912 88 32 TrendSensor {abstract} com.umlet.element.Class 296 2848 144 120 LdSensor -- -- LdSensor() messe() : void getMin() : Real getMax() : Real updateMin(w:Real) : void updateMax(w:Real) : void com.umlet.element.Relation 312 2800 160 56 lt=<<- 152;24;152;40;24;40;24;48 com.umlet.element.Relation 440 2800 176 120 lt=<<- 24;24;24;40;168;40;168;112 com.umlet.element.Class 456 2912 80 24 LfSensor com.umlet.element.Relation 440 2800 72 120 lt=<<- 24;24;24;40;64;40;64;112 com.umlet.element.Class 512 2992 80 24 WgSensor com.umlet.element.Class 624 2992 80 24 TSensor com.umlet.element.Relation 584 2920 96 80 lt=<<- 24;24;24;40;88;40;88;72 com.umlet.element.Relation 536 2920 80 80 lt=<<- 72;24;72;40;24;40;24;72 com.umlet.element.Class 712 2912 176 80 Historie -- -- updateHist(w:Wert,d:Date) : void computeMin() : Real; computeMax() : Real; com.umlet.element.Relation 504 2776 296 144 lt=- m1=1 m2=1 hat r1=hist fg=red bg=red 272;136;272;40;24;40 com.umlet.element.Class 728 3064 144 64 Messung -- wert : Real zeitpunkt : Date -- Messung(w:Real,d:Date) com.umlet.element.Relation 736 2968 88 104 lt=<<<- enthält m1= 0..1 m2= * r2=messungen 48;24;48;96 com.umlet.element.Relation 752 2568 88 104 lt=<<<- enthält m1= 0..1 m2= * 48;24;48;96 com.umlet.element.Class 744 2664 104 64 Alarm {abstract} -- zeitpunkt : Date prognosewert : Real com.umlet.element.Class 696 2776 80 24 Sturmwarnung com.umlet.element.Class 808 2776 88 24 Glatteiswarnung com.umlet.element.Relation 768 2704 96 80 lt=<<- 24;24;24;40;88;40;88;72 com.umlet.element.Relation 720 2704 80 80 lt=<<- 72;24;72;40;24;40;24;72 com.umlet.element.Relation 168 2552 152 328 lt=<<<<- m1=1 m2=1 r2=ldsen 144;24;24;24;24;320;128;320 com.umlet.element.Relation 168 2552 328 472 lt=<<<<- m1=1 m2=1 r2=lfsen 144;24;24;24;24;464;320;464;320;384 com.umlet.element.Relation 168 2552 400 520 lt=<<<<- r2=wgsen m1=1 m2=1 144;24;24;24;24;512;384;512;384;464 com.umlet.element.Relation 168 2552 512 520 lt=<<<<- r2=tsen m1=1 m2=1 144;24;24;24;24;512;504;512;504;464 com.umlet.element.Note 0 2896 176 80 wert = holeWert(); Date now = new Date(); hist.updateHist(wert,now); updateMin(); updateMax(); fg=red bg=default com.umlet.element.Relation 152 2880 152 64 lt=. 24;56;144;24 com.umlet.element.Note 808 2808 184 96 TrendSensor - Historie zu MinMaxSensor - Historie statt zusätzlicher Assoziation (GRASP: High Cohesion Low Coupling) fg=red com.umlet.element.Relation 752 2832 64 40 lt=. 24;32;56;24 com.umlet.element.Note 16 2824 152 32 hist = new Historie(); fg=red com.umlet.element.Relation 144 2816 160 80 lt=. 24;24;152;72 com.umlet.element.Note 920 2920 144 56 Messung m = new Messung(w,d); messungen.add(m); fg=red com.umlet.element.Relation 864 2920 64 40 lt=. 24;32;56;24 com.umlet.element.Note 544 3096 144 40 wert = w; zeitpunkt = d; fg=red com.umlet.element.Relation 664 3096 72 32 lt=. 64;24;24;24 com.umlet.element.Note 920 3000 144 56 Historienberechnungen in Klasse Historie, GRASP: Information Expert fg=red com.umlet.element.Relation 808 2952 120 80 lt=. 24;24;112;72 com.umlet.element.Class 336 3280 168 160 Wetterstation -- -- starteWetterstation() : void messeWr() : void zeigeWr(w:Real) : void messeLd() : void zeigeLd(w:Real) : void zeigeMinLd(w:Real) : void zeigeMaxLd(w:Real) : void (analog für LfSensor) com.umlet.element.Class 768 3384 112 40 Alarmverzeichnis -- com.umlet.element.Relation 480 3384 296 32 lt=<<<<- m1=1 m2=1 r2=alarmvz 24;24;288;24 com.umlet.element.Class 344 3448 112 112 Sensor {abstract} -- wert : Real -- verbinde() : Sensor messe() : void holeWert() : Real getWert() : Real com.umlet.element.Relation 192 3384 160 240 lt=<<<<- r2=wrsen m1=1 m2=1 144;24;24;24;24;224;64;224 com.umlet.element.Class 256 3592 88 32 WrSensor com.umlet.element.Relation 272 3536 128 64 lt=<<- 120;24;120;40;24;40;24;56 com.umlet.element.Class 448 3592 168 136 MinMaxSensor {abstract} -- min : Real max : Real -- messe() : void getMin() : Real getMax() : Real updateMin(w:Real) : void updateMax(w:Real) : void com.umlet.element.Relation 368 3536 136 64 lt=<<- 24;24;24;40;128;40;128;56 com.umlet.element.Class 576 3784 88 32 TrendSensor {abstract} com.umlet.element.Class 360 3784 96 48 LdSensor -- -- LdSensor() com.umlet.element.Relation 392 3704 112 96 lt=<<- 96;24;96;56;24;56;24;80 com.umlet.element.Relation 464 3704 176 96 lt=<<- 24;24;24;56;160;56;160;80 com.umlet.element.Class 472 3784 80 24 LfSensor com.umlet.element.Relation 464 3704 72 96 lt=<<- 24;24;24;56;56;56;56;80 com.umlet.element.Class 440 3864 192 88 WgSensor -- -- messe() : void prognostiziere() : Real bearbeiteWarnung(pwert:Real) : void com.umlet.element.Class 640 3864 80 24 TSensor com.umlet.element.Relation 600 3792 104 88 lt=<<- 24;24;24;40;88;40;88;72 com.umlet.element.Relation 544 3792 96 88 lt=<<- 80;24;80;40;24;40;24;72 com.umlet.element.Class 736 3744 176 80 Historie -- -- updateHist(w:Wert,d:Date) : void computeMin() : Real; computeMax() : Real; com.umlet.element.Relation 592 3632 240 128 lt=- m1=1 m2=1 hat r1=hist fg=black 216;112;216;40;24;40 com.umlet.element.Class 752 3896 144 64 Messung -- wert : Real zeitpunkt : Date -- Messung(w:Real,d:Date) com.umlet.element.Relation 760 3800 88 112 lt=<<<- enthält m1= 0..1 m2= * r2=messungen 48;24;48;96 com.umlet.element.Relation 776 3400 88 104 lt=<<<- enthält m1= 0..1 m2= * 48;24;48;96 com.umlet.element.Class 768 3496 104 64 Alarm {abstract} -- zeitpunkt : Date prognosewert : Real com.umlet.element.Class 720 3608 80 24 Sturmwarnung com.umlet.element.Class 832 3608 88 24 Glatteiswarnung com.umlet.element.Relation 792 3536 104 88 lt=<<- 24;24;24;40;88;40;88;72 com.umlet.element.Relation 744 3536 88 88 lt=<<- 72;24;72;40;24;40;24;72 com.umlet.element.Relation 192 3384 184 440 lt=<<<<- m1=1 m2=1 r2=ldsen 144;24;24;24;24;424;168;424 com.umlet.element.Relation 192 3384 328 480 lt=<<<<- m1=1 m2=1 r2=lfsen 144;24;24;24;24;464;312;464;312;424 com.umlet.element.Relation 192 3384 392 640 lt=<<<<- r2=wgsen m1=1 m2=1 144;24;24;24;24;624;376;624;376;568 com.umlet.element.Relation 192 3384 512 640 lt=<<<<- r2=tsen m1=1 m2=1 144;24;24;24;24;624;496;624;496;504 com.umlet.element.Note 232 3688 160 64 Gemeinsame Operationen in die Superklasse. (GRASP: High Cohesion) fg=red com.umlet.element.Relation 128 2000 296 96 lt=. 24;24;288;88 com.umlet.element.Relation 368 3656 96 88 lt=. 80;24;24;72 com.umlet.element.Relation 368 3704 136 96 lt=. 120;80;24;24 com.umlet.element.Relation 368 3704 240 96 lt=. 224;80;24;24 com.umlet.element.Relation 368 3704 56 96 lt=. 40;80;24;24 com.umlet.element.Relation 128 2008 104 72 lt=. 24;24;96;64 com.umlet.element.Note 224 3880 192 72 wie MixMaxSensor.messe(), plus: Real pwert = prognostiziere(); if(pwert > 70) { bearbeiteWarnung(pwert); } fg=red com.umlet.element.Relation 392 3880 64 40 lt=. 48;24;24;24 com.umlet.element.Note 384 4032 192 168 ldsen.messe(); Real ldw = ldsen.getWert(); Real ldMax = ldsen.getMax(); if(ldMax - ldw > 15) { Date now = new Date(); Sturmwarnung stw = new Sturmwarnung(pwert, now); alarmvz.eintragen(stw); wst.meldeStw(); } viele neue Referenzen! fg=red com.umlet.element.Relation 448 3912 72 136 lt=. 56;24;24;120 com.umlet.element.Class 304 4240 168 176 Wetterstation -- -- starteWetterstation() : void messeWr() : void zeigeWr(w:Real) : void messeLd() : void zeigeLd(w:Real) : void zeigeMinLd(w:Real) : void zeigeMaxLd(w:Real) : void ... meldeStw() : void zeigeStw() : void com.umlet.element.Class 736 4360 152 56 Alarmverzeichnis -- -- eintragen(w:Warnung) : void com.umlet.element.Relation 448 4360 304 40 lt=<<<<- m1=1 m2=1 r2=alarmvz 24;24;288;24 com.umlet.element.Class 312 4424 112 112 Sensor {abstract} -- wert : Real -- verbinde() : Sensor messe() : void holeWert() : Real getWert() : Real com.umlet.element.Relation 160 4360 152 232 lt=<<<<- r2=wrsen m1=1 m2=1 144;24;24;24;24;224;64;224 com.umlet.element.Class 224 4568 88 32 WrSensor com.umlet.element.Relation 240 4512 136 72 lt=<<- 120;24;120;40;24;40;24;56 com.umlet.element.Class 416 4568 168 136 MinMaxSensor {abstract} -- min : Real max : Real -- messe() : void getMin() : Real getMax() : Real updateMin(w:Real) : void updateMax(w:Real) : void com.umlet.element.Relation 336 4512 144 72 lt=<<- 24;24;24;40;128;40;128;56 com.umlet.element.Class 544 4760 88 32 TrendSensor {abstract} com.umlet.element.Class 328 4752 96 48 LdSensor -- -- LdSensor() com.umlet.element.Relation 360 4680 112 88 lt=<<- 96;24;96;56;24;56;24;72 com.umlet.element.Relation 432 4680 176 96 lt=<<- 24;24;24;56;160;56;160;80 com.umlet.element.Class 440 4760 80 24 LfSensor com.umlet.element.Relation 432 4680 72 96 lt=<<- 24;24;24;56;56;56;56;80 com.umlet.element.Class 408 4840 192 120 WgSensor -- -- WgSensor(ldsen:LdSensor, alarmvz:Alarmverzeichnis, wst:Wetterstation) messe() : void prognostiziere() : Real bearbeiteWarnung(pwert:Real) : void com.umlet.element.Class 608 4840 80 24 TSensor com.umlet.element.Relation 568 4768 104 88 lt=<<- 24;24;24;40;88;40;88;72 com.umlet.element.Relation 512 4768 96 88 lt=<<- 80;24;80;40;24;40;24;72 com.umlet.element.Class 704 4720 176 80 Historie -- -- updateHist(w:Wert,d:Date) : void computeMin() : Real; computeMax() : Real; com.umlet.element.Relation 560 4608 240 128 lt=- m1=1 m2=1 hat r1=hist fg=black 216;112;216;40;24;40 com.umlet.element.Class 720 4872 144 64 Messung -- wert : Real zeitpunkt : Date -- Messung(w:Real,d:Date) com.umlet.element.Relation 728 4776 88 112 lt=<<<- enthält m1= 0..1 m2= * r2=messungen 48;24;48;96 com.umlet.element.Relation 744 4392 88 96 lt=<<<- enthält m1= 0..1 m2= * r2=warnungen 48;24;48;80 com.umlet.element.Class 736 4472 104 64 Alarm {abstract} -- zeitpunkt : Date prognosewert : Real com.umlet.element.Class 624 4584 160 40 Sturmwarnung -- -- Sturmwarnung(w:Real,d:Date) com.umlet.element.Class 800 4584 88 24 Glatteiswarnung com.umlet.element.Relation 760 4512 96 80 lt=<<- 24;24;24;40;88;40;88;72 com.umlet.element.Relation 712 4512 80 80 lt=<<- 72;24;72;40;24;40;24;72 com.umlet.element.Relation 160 4360 184 432 lt=<<<<- m1=1 m2=1 r2=ldsen 144;24;24;24;24;416;168;416 com.umlet.element.Relation 160 4360 328 480 lt=<<<<- m1=1 m2=1 r2=lfsen 144;24;24;24;24;464;312;464;312;424 com.umlet.element.Relation 160 4360 392 640 lt=<<<<- r2=wgsen m1=1 m2=1 144;24;24;24;24;624;376;624;376;600 com.umlet.element.Relation 160 4360 512 640 lt=<<<<- r2=tsen m1=1 m2=1 144;24;24;24;24;624;496;624;496;504 com.umlet.element.Relation 128 4376 296 536 lt=<- r1=wst m1=1 fg=red bg=red 176;24;24;24;24;520;280;520 com.umlet.element.Relation 344 4776 80 128 lt=<- r1=ldsen m1=1 fg=red bg=red 24;24;24;112;64;112 com.umlet.element.Note 208 4992 192 104 this.ldsen = ldsen this.alarmvz = alarmvz this.wst = wst (Code für starteWetterstation in Klasse Wetterstation muss angepasst werden!) fg=red com.umlet.element.Relation 312 4864 136 144 lt=. 120;24;24;128 com.umlet.element.Relation 104 4208 720 712 lt=<- r1=alarmvz m1=1 fg=red bg=red 696;152;696;24;24;24;24;696;304;696 com.umlet.element.Note 568 4424 112 24 warnungen.add(w); fg=red com.umlet.element.Relation 656 4384 96 72 lt=. 80;24;24;56 com.umlet.element.Note 568 4480 112 32 zeitpunkt = d; prognosewert = w; fg=red com.umlet.element.Relation 640 4488 56 104 lt=. 48;96;24;24 com.umlet.element.Note 504 4336 112 24 zeigeStw(); fg=red com.umlet.element.Relation 376 4328 144 72 lt=. 24;56;128;24 com.umlet.element.Note 16 3000 152 24 min = hist.computeMin(); fg=red bg=default com.umlet.element.Relation 144 2920 160 96 lt=. 24;88;152;24 com.umlet.element.Class 280 5152 168 176 Wetterstation -- -- starteWetterstation() : void messeWr() : void zeigeWr(w:Real) : void messeLd() : void zeigeLd(w:Real) : void zeigeMinLd(w:Real) : void zeigeMaxLd(w:Real) : void ... meldeStw() : void zeigeStw() : void com.umlet.element.Class 712 5272 160 56 Alarmverzeichnis -- -- eintragen(w:Warnung) : void com.umlet.element.Relation 424 5272 304 40 lt=<<<<- m1=1 m2=1 r2=alarmvz 24;24;288;24 com.umlet.element.Class 288 5336 112 112 Sensor {abstract} -- wert : Real -- verbinde() : Sensor messe() : void holeWert() : Real getWert() : Real com.umlet.element.Relation 136 5272 160 240 lt=<<<<- r2=wrsen m1=1 m2=1 144;24;24;24;24;224;64;224 com.umlet.element.Class 200 5480 88 32 WrSensor com.umlet.element.Relation 216 5424 136 72 lt=<<- 120;24;120;40;24;40;24;56 com.umlet.element.Class 392 5480 168 136 MinMaxSensor {abstract} -- min : Real max : Real -- messe() : void getMin() : Real getMax() : Real updateMin(w:Real) : void updateMax(w:Real) : void com.umlet.element.Relation 312 5424 144 72 lt=<<- 24;24;24;40;128;40;128;56 com.umlet.element.Class 520 5672 192 104 TrendSensor {abstract} -- -- messe() : void prognostiziere() : Real bearbeiteWarnung(pwert:Real) : void com.umlet.element.Class 304 5664 96 48 LdSensor -- -- LdSensor() com.umlet.element.Relation 336 5592 112 88 lt=<<- 96;24;96;56;24;56;24;72 com.umlet.element.Relation 408 5592 176 96 lt=<<- 24;24;24;56;160;56;160;80 com.umlet.element.Class 416 5672 80 24 LfSensor com.umlet.element.Relation 408 5592 72 96 lt=<<- 24;24;24;56;56;56;56;80 com.umlet.element.Class 384 5872 192 120 WgSensor -- -- WgSensor(ldsen:LdSensor, alarmvz:Alarmverzeichnis, wst:Wetterstation) messe() : void prognostiziere() : Real bearbeiteWarnung(pwert:Real) : void com.umlet.element.Class 584 5872 120 56 TSensor -- -- analog WGSensor com.umlet.element.Relation 544 5752 104 136 lt=<<- 24;24;24;80;88;80;88;120 com.umlet.element.Relation 488 5752 96 136 lt=<<- 80;24;80;80;24;80;24;120 com.umlet.element.Class 736 5632 176 80 Historie -- -- updateHist(w:Wert,d:Date) : void computeMin() : Real; computeMax() : Real; com.umlet.element.Relation 536 5520 296 128 lt=- m1=1 m2=1 hat r1=hist fg=black 272;112;272;40;24;40 com.umlet.element.Class 752 5784 144 64 Messung -- wert : Real zeitpunkt : Date -- Messung(w:Real,d:Date) com.umlet.element.Relation 760 5688 88 112 lt=<<<- enthält m1= 0..1 m2= * r2=messungen 48;24;48;96 com.umlet.element.Relation 720 5304 88 88 lt=<<<- enthält m1= 0..1 m2= * r2=warnungen 48;24;48;80 com.umlet.element.Class 712 5384 120 64 Alarm {abstract} -- zeitpunkt : Date prognosewert : Real com.umlet.element.Class 600 5496 160 40 Sturmwarnung -- -- Sturmwarnung(w:Real,d:Date) com.umlet.element.Class 776 5496 88 24 Glatteiswarnung com.umlet.element.Relation 736 5424 104 88 lt=<<- 24;24;24;40;88;40;88;72 com.umlet.element.Relation 688 5424 88 88 lt=<<- 72;24;72;40;24;40;24;72 com.umlet.element.Relation 136 5272 184 432 lt=<<<<- m1=1 m2=1 r2=ldsen 144;24;24;24;24;416;168;416 com.umlet.element.Relation 136 5272 328 480 lt=<<<<- m1=1 m2=1 r2=lfsen 144;24;24;24;24;464;312;464;312;424 com.umlet.element.Relation 136 5272 392 768 lt=<<<<- r2=wgsen m1=1 m2=1 144;24;24;24;24;752;376;752;376;720 com.umlet.element.Relation 136 5272 512 768 lt=<<<<- r2=tsen m1=1 m2=1 144;24;24;24;24;752;496;752;496;656 com.umlet.element.Relation 104 5288 432 488 lt=<- r1=wst m1=1 fg=red bg=red 176;24;24;24;24;472;416;472 com.umlet.element.Relation 320 5688 80 216 lt=<- r1=ldsen m1=1 fg=black 24;24;24;200;64;200 com.umlet.element.Relation 80 5120 720 664 lt=<- r1=alarmvz m1=1 fg=red bg=red 696;152;696;24;24;24;24;648;440;648 com.umlet.element.Relation 448 5672 232 216 lt=<- r1=lfsen m1=1 fg=red bg=red 24;24;24;136;216;136;216;200 com.umlet.element.Note 168 5808 168 72 Gemeinsame Operationen und Assoziationen von WgSensor und TSensor in Superklasse. GRASP: High Cohesion fg=red com.umlet.element.Relation 232 5744 112 80 lt=. 96;24;24;64 com.umlet.element.Relation 224 5736 64 88 lt=. 48;24;24;72 com.umlet.element.Relation 248 5712 288 112 lt=. 272;24;24;96 com.umlet.element.Note 184 5928 144 40 Überschriebene bzw. implementierte Methoden. fg=red com.umlet.element.Relation 304 5928 96 48 lt=. 80;32;24;24 com.umlet.element.Class 296 6064 208 216 Wetterstation -- -- +starteWetterstation() : void +messeWr() : void -zeigeWr(w:Real) : void +messeLd() : void -zeigeLd(w:Real) : void -zeigeMinLd(w:Real) : void -zeigeMaxLd(w:Real) : void ... +meldeStw(stw:Sturmwarnung) : void -zeigeStw() : void +pruefeStw() : void com.umlet.element.Class 752 6224 168 56 Alarmverzeichnis -- -- +eintragen(w:Warnung) : void com.umlet.element.Relation 480 6224 288 40 lt=<<<<-> m1=1 m2=1 r2=+alarmvz 24;24;272;24 com.umlet.element.Class 328 6288 112 112 Sensor {abstract} -- #wert : Real -- +verbinde() : Sensor +messe() : void -holeWert() : Real -getWert() : Real com.umlet.element.Relation 168 6224 144 240 lt=<<<<-> r2=-wrsen m1=1 m2=1 128;24;32;24;32;224;72;224 com.umlet.element.Class 240 6432 104 56 WrSensor -- -- +WrSensor() com.umlet.element.Relation 256 6376 136 72 lt=<<- 120;24;120;40;24;40;24;56 com.umlet.element.Class 432 6432 168 136 MinMaxSensor {abstract} -- -min : Real -max : Real -- +messe() : void +getMin() : Real +getMax() : Real -updateMin(w:Real) : void -updateMax(w:Real) : void com.umlet.element.Relation 352 6376 144 72 lt=<<- 24;24;24;40;128;40;128;56 com.umlet.element.Class 560 6624 200 104 TrendSensor {abstract} -- -- +messe() : Real #prognostiziere() : Real #bearbeiteWarnung(pwert:Real) : void com.umlet.element.Class 344 6616 96 48 LdSensor -- -- +LdSensor() com.umlet.element.Relation 376 6544 112 88 lt=<<- 96;24;96;56;24;56;24;72 com.umlet.element.Relation 448 6544 176 96 lt=<<- 24;24;24;56;160;56;160;80 com.umlet.element.Class 456 6616 80 48 LfSensor -- -- +LfSensor() com.umlet.element.Relation 448 6544 72 88 lt=<<- 24;24;24;56;56;56;56;72 com.umlet.element.Class 408 6824 208 120 WgSensor -- -- +WgSensor(alarmvz:Alarmverzeichnis, wst:Wetterstation) +messe() : void #prognostiziere() : Real #bearbeiteWarnung(pwert:Real) : void com.umlet.element.Class 624 6824 120 56 TSensor -- -- analog WGSensor com.umlet.element.Relation 584 6704 104 136 lt=<<- 24;24;24;80;88;80;88;120 com.umlet.element.Relation 528 6704 96 136 lt=<<- 80;24;80;80;24;80;24;120 com.umlet.element.Class 776 6584 176 80 Historie -- -- +updateHist(w:Wert,d:Date) : void +computeMin() : Real; +computeMax() : Real; com.umlet.element.Relation 576 6496 296 104 lt=<- m1=1 m2=1 hat r1=-hist fg=black 272;88;272;40;24;40 com.umlet.element.Class 792 6736 144 96 Messung -- -wert : Real -zeitpunkt : Date -- +Messung(w:Real,d:Date) +getWert() : Wert +getDate() : Date com.umlet.element.Relation 800 6640 88 112 lt=<<<-> enthält m1= 0..1 m2= * r2=-messungen 48;24;48;96 com.umlet.element.Relation 760 6256 88 96 lt=<<<- enthält m1= 0..1 m2= * r2=warnungen 48;24;48;80 com.umlet.element.Class 752 6336 128 64 Alarm {abstract} -- #zeitpunkt : Date #prognosewert : Real com.umlet.element.Class 640 6448 176 56 Sturmwarnung -- -- +Sturmwarnung(w:Real,d:Date) com.umlet.element.Class 832 6448 184 56 Glatteiswarnung -- -- +Glatteiswarnung(w:Real,d:Date) com.umlet.element.Relation 776 6376 120 88 lt=<<- 24;24;24;40;104;40;104;72 com.umlet.element.Relation 728 6376 88 88 lt=<<- 72;24;72;40;24;40;24;72 com.umlet.element.Relation 176 6224 184 432 lt=<<<<-> m1=1 m2=1 r2=+ldsen 120;24;24;24;24;416;168;416 com.umlet.element.Relation 176 6224 328 480 lt=<<<<-> m1=1 m2=1 r2=+lfsen 120;24;24;24;24;464;312;464;312;440 com.umlet.element.Relation 176 6224 392 768 lt=<<<<-> r2=-wgsen m1=1 m2=1 120;24;24;24;24;752;376;752;376;720 com.umlet.element.Relation 176 6224 512 768 lt=<<<<-> r2=-tsen m1=1 m2=1 120;24;24;24;24;752;496;752;496;656 com.umlet.element.Note 240 6992 192 168 wst.ldsen.messe(); Real ldw = wst.ldsen.getWert(); Real ldMax = wst.ldsen.getMax(); if(ldMax - ldw > 15) { Date now = new Date(); Sturmwarnung stw = new Sturmwarnung(pwert, now); wst.alarmvz.eintragen(stw); wst.meldeStw(stw); } (GRASP: Low Coupling) fg=red com.umlet.element.Relation 144 6240 432 488 lt=<- r1=wst m1=1 bg=black fg=black 152;24;24;24;24;472;416;472 com.umlet.element.Relation 312 6864 104 136 lt=. 96;24;24;128 com.umlet.element.Note 560 6176 136 40 alarmvz.eintragen(stw); zeigeStw(); bg=default fg=red com.umlet.element.Relation 472 6176 104 48 lt=. 88;24;24;32 com.umlet.element.Note 96 6120 136 40 Wetterstation verletzt High Cohesion bg=default fg=red com.umlet.element.Relation 208 6120 104 40 lt=. 24;24;88;24