Αφηρημένοι τύποι δεδομένων
-
Οι αφηρημένοι τύποι δεδομένων (abstract data types)
(ΑΤΔ (ADT))
μας επιτρέπουν να διαχωρίσουμε τον τύπο των δεδομένων από την
υλοποίησή του.
- Σε έναν αφηρημένο τύπο δεδομένων καθορίζονται τα παρακάτω:
- o τρόπος φύλαξης των δεδομένων,
- ο ορατός τύπος,
- μέθοδοι δημιουργίας,
- μέθοδοι πρόσβασης,
- μέθοδοι μεταβολής,
- άλλες μέθοδοι σχετικές με τον τύπο,
- μέθοδοι απαλειφής.
- Η υλοποίηση αφηρημένων τύπων δεδομένων επιτρέπει την
αλλαγή του τρόπου αποθήκευσης ή του αλγορίθμου υλοποίησης
χωρίς την αλλαγή του προγράμματος
που χρησιμοποιεί τα δεδομένα.
- Στη C η υλοποίηση ενός ΑΤΔ γίνεται τυπικά με τον ορισμό των
μεθόδων και του τρόπου φύλαξης στο αρχείο επικεφαλίδας και
τον καθορισμό της υλοποίησης σε ξεχωριστό αρχείο C.
Παράδειγμα
Το παρακάτω παράδειγμα ορίζει έναν ΑΤΔ για σημεία σε δύο διαστάσεις.
Ο τελεστής -> στη χρήση structure_pointer->member είναι
συντομογραφία του (*structure_pointer).member.
Δηλώσεις: point.h
/*
* Abstract Data Type Definition file point.h
*/
typedef struct s_point *point;
point new_point(void);
int get_x_point(point p);
int get_y_point(point p);
void set_point(point p, int x, int y);
void delete_point(point p);
Ορισμοί: point.c
/*
* Abstract Data Type Implementation file point.c
*/
#include <stdlib.h>
#include "point.h"
struct s_point {
int x, y; /* Point coordinates */
};
point
new_point(void)
{
return (point)malloc(sizeof(struct s_point));
}
int
get_x_point(point p)
{
return (p->x);
}
int
get_y_point(point p);
{
return (p->y);
}
void
set_point(point p, int x, int y)
{
p->x = x;
p->y = y;
}
void
delete_point(point p)
{
free(p);
}
Σημείωση: στη γλώσσα C++ οι μέθοδοι new και delete παρέχονται από τη
γλώσσα, ενώ στις υπόλοιπες συναρτήσεις ο δείκτης p μεταφέρεται αυτόματα