jeg forstår ikke rigtig classes...
jeg kan godt forstå hvordan man laver dem osv. men jeg kan ikke forstå hvordan de fungere, og hvad nytte de gør!
kan nogen forklare det for mig, eller give mig et exempel hvor det er nyttigt?
hehe...den objekt orienterede tankegang er en svær en at lære, så det kan meget godt være, at der går laaang tid, før du ser lyset.
Klasser bruges til at koble funktioner sammen med de data, som funktionen opererer på. I C ville du måske have følgende sæt af funktioner til at operere på lister:
List * list_create();
void list_free(List * list);
size_t list_size(List * list);
void list_add_element(List * list, void * data);
void * list_get_element(List * list, size_t index);
void list_remove_element(List * list, size_t index);
void list_foreach(List * list, void(*callback)(void * element));
Alle funktionerne tager, som første parameter, en pointer til den liste, som funktionen skal operere på. C++ måden at gøre det samme på ville være noget i denne stil:
class List {
public:
List();
virtual ~List();
size_t size();
void add(void * data);
void * get(size_t index);
void remove(size_t index);
void foreach(void(*callback)(void * element));
};
Og det er så heller ikke helt rigtigt, for man ville nok også bruge operator overloading og templates. Og så ville man nok bruge en iterator istedet for min foreach metode.
Men funktionerne på klassen defineres SAMMEN med klassen, så hvis du vil vide, hvad du kan bruge List klassen til, så kigger du bare i definitionen af klassen. Det er ikke helt så nemt med mine C funktioner. De kan være spredt ud over et større antal filer og hedde mærkelige ting, så det ikke er helt åbenlyst, at de arbejder med lister.
Arv og polymorfi er andre fordele ved klasser, men som sagt, så kan det være svært at finde ud af, hvorfor klasser er smarte, så prøv bare at bruge dem over det hele, så bliver du klogere hen ad vejen :-)
Indlæg senest redigeret d. 19.05.2008 08:58 af Bruger #2695