004
20.06.2003, 19:50 Uhr
~0xdeadbeef
Gast
|
Was die Sternchen-Geschichte angeht:
C++: |
#include <stdio.h>
/* Deklaration. * Ab hier weiß der Compiler, dass es die Funktion gibt, * aber noch nicht, was sie macht. */ void print_sternchen(int); int lies_zahl();
/* Implementierung * Hier wird festgelegt, was die Funktion macht */ void print_sternchen(int n) { int i,j; for(i = -n+1; i < n; ++i) { for(j=1; j <= 2*(n-abs(i))-1; ++j) printf("*"); printf("\n"); } }
int lies_zahl() { int n; printf("Zahl eingeben: "); scanf("%d", &n); /* Hierher weißt du, wieviele Zeilen es sind. */ return n; }
int main(int argc, char *argv[]) { print_sternchen(lies_zahl());
return 0; }
|
Was die Kapselung angeht - wenn du dieselbe Funktionalität immer wieder brauchst, macht es keinen Sinn, dasselbe jedesmal wieder von Hand hinzuschreiben - dadurch wird der Code unübersichtlich. Stell dir zum Beispiel vor, du verwendest an hundert Stellen in deinem Programm dieselbe Funktionalität, und hast jedesmal wieder die 20 Zeilen Code dastehen. Jetzt ändern sich die Anforderungen, und du musst den Code ändern - du darfst an hundert Stellen hingehen und den Code von Hand umschreiben. Das ist zum einen ziemlich nervig, und zum anderen kann es leicht passieren, dass du eine Stelle vergißt und das Programm sich richtig merkwürdig verhält.
Um das zu umgehen, kapselst du die Funktionalität in eine Funktion, und schreibst an den Stellen, an denen sie gebraucht wird, nur noch hin, wo das Programm den Code findet, den es braucht. Wenn sich dann an der Funktion was ändert, musst du den Code nur einmal in der Funktion ändern. |