Thomas P. Ruhroth
Lehrstuhl 14 - Software Engineering Fakult¨ at f¨ ur Informatik
LSys – 24.06.2015
Deadline: 8.7.2015 (11:45)
Softwareengineering f¨ ur langlebige Systeme – Ubung 6 ¨
AUFGABE 1 (Executive Summary) (15LP):
Erstellen Sie bitte eine Executive Summary f¨ ur die Einleitung (bis Seite 18) des Buches
“Entwurfsmuster f¨ ur effektive Software-Entwicklung” (Link auf der LSys-Webseite).
AUFGABE 2 (Codeverbesserungen) (15LP):
Ist die Klasse C1 gut programmiert? Sammeln Sie die Kritikpunkte und verbessern Sie das Programm.
Bemerkung: Die nichtssagenden Klassen-, Variablen- und Methoden-Namen sind schlech- ter Programmierstil, den Sie sich nicht aneignen sollen. Wir haben ihn hier dennoch ge- nutzt, um ihnen keine Hilfe f¨ ur die Aufgabenl¨ osung zu geben.
Softwareengineering f¨ ur langlebige Systeme – ¨ Ubung 6 1
Thomas P. Ruhroth
Lehrstuhl 14 - Software Engineering Fakult¨ at f¨ ur Informatik
LSys – 24.06.2015
Deadline: 8.7.2015 (11:45)
1 p u b l i c c l a s s C1 {
2
3 p u b l i c s t a t i c v o i d m a i n ( S t r i n g [] a r g s ) {
4 S y s t e m . out . p r i n t l n ( C1 . f1 (0.4 , 1 , 2 ) ) ;
5 // . . . .
6 // M e h r f a c h e N u t z u n g v o n f1 m i t v e r s c h i e d e n e n W e r t e n . . . .
7 }
8
9 s t a t i c p u b l i c d o u b l e f1 ( d o u b l e p , int n , int k ) {
10
11 if ( p >= 0 && p <= 1) {
12 d o u b l e r e s u l t = 0;
13 r e s u l t = f2 ( n , k );
14 int i = 0;
15 d o u b l e p2 = 3;
16 w h i l e ( i < k ) { // I N V = { r e s u l t = ( n u e b e r k ) * p o w e r ( p , i )}
17 r e s u l t *= p ;
18 i ++;
19 }
20 p2 = 1 - p ;
21 w h i l e ( i < n ) { // I N V = { r e s u l t = ( n u e b e r k ) * p o w e r ( p , k ) * p o w e r (1 - p , i )}
22 r e s u l t *= p2 ;
23 p2 = 1 - p ;
24 i ++;
25 }
26 r e t u r n r e s u l t ;
27 } e l s e if ( p < 0 && p > 1) {
28 r e t u r n 0;
29 }
30 r e t u r n 0;
31 }
32
33 p r i v a t e s t a t i c int f2 ( int n , int k ) {
34 int r e s u l t = 0;
35 if ( k <= n ) {
36 r e s u l t = f3 ( n ) / ( f4 ( k ) * f5 ( n - k ));
37 }
38 r e t u r n r e s u l t ;
39 }
40
41 p r i v a t e s t a t i c int f3 ( int i ) {
42 int r e s u l t = 1;
43 for ( int k = 1; k <= i ; k ++)
44 r e s u l t *= k ;
45 r e t u r n r e s u l t ;
46 }
47
48 p r i v a t e s t a t i c int f4 ( int i ) {
49 if ( i <= 0)
50 r e t u r n 1;
51 e l s e
52 r e t u r n i * f4 ( i - 1);
53 }
54
55 p r i v a t e s t a t i c int f5 ( int i ) {
56 if ( i > 0) {
57 r e t u r n i * f5 ( i - 1);
58 } e l s e {
59 r e t u r n 1;
60 }
61 }
62 }