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.

 

Wróć Idź do zadań