Wykład nr 3
Programowanie obiektowe
Paradygmaty programowania
Około 2/3 – 3/4 kosztów posiadania oprogramowania związanych jest z jego utrzymaniem:
- dodawanie nowych funkcjonalności (zachowanie przewagi konkurencyjnej)
- dostosowanie do zmieniających się warunków zewnętrznych (np. regulacje prawne, nowe platformy użytkowe, etc.)
- usuwanie błędów
- poprawa wydajności
Im bardziej złożony kod zródłowy, tym większe koszty jego utrzymania.
- programowanie proceduralne
- programowanie modularne
- programowanie abstrakcyjnych typów danych
- programowanie obiektowe
Any fool can write code that a computer can understand. Good
programmers write code that humans can understand.
- Martin Fowler
funckcja/procedura – jednostka abstrakcji algorytmów
Zdecyduj, jakie chcesz mieć procedury; stosuj najlepsze algorytmy
jakie możesz znaleźć. – B. Stroustrup
void sort(int * table, int size){
int i,j,temp;
for(i=0;i for(j=i+1;j if(table[i] > table[j]){
temp = table[i];
table[i] = table[j];
table[j] = temp;
}
}
}
}
moduł – jednoska organizacji kodu
Zdecyduj jakie chcesz mieć moduły; podziel program w taki sposób aby ukryc dane w modułach. – B. Stroustrup
interfejs modułu – stack.h
char pop();
const int size = 100;
implementacja modułu – stack.c
# include "stack.h"
static char stack[size];
static char * pointer;
void push(char c){
//implementacja z użyciem 'pointer'
}
char pop(){
//implementacja z użyciem 'pointer'
}
użycie modułu – program.c
# include
# include "stack.h"
int main(){
push('c');
char character = pop();
if(character != 'c'){
pritnf("Cos nie tak!\n");
} else {
pritnf("Wszystko ok.\n");
}
}
Wykład w trakcie aktualizacji.