1.6 Приложение |
Предыдущая Содержание Следующая |
Собрав вместе файлы заголовков, то есть определения абстрактных типов данных, можно написать приложение main.c:
#include <stdio.h>
#include "new.h" #include "Object.h" #include "Set.h"
int main () { void * s = new(Set); void * a = add(s, new(Object)); void * b = add(s, new(Object)); void * c = new(Object);
if (contains(s, a) && contains(s, b)) puts("ok");
if (contains(s, c)) puts("contains?");
if (differ(a, add(s, a))) puts("differ?");
if (contains(s, drop(s, a))) puts("drop?");
delete(drop(s, b)); delete(drop(s, c));
return 0; }
Создаётся набор и к нему добавляются два новых объекта. Если всё хорошо, мы находим эти объекты в наборе и мы не должны найти другой новый объект. Программа должна просто напечатать ok. Вызов differ() иллюстрирует смысловой момент: математический набор может содержать только одну копию объекта a; попытка добавить его снова должна вернуть исходный объект и differ() должна вернуть ложь. Точно так же после удаления объекта он больше не должен быть в наборе. Удаление элемента, которого нет в наборе, приведёт к тому, что в delete() передаётся пустой указатель. На данный момент мы придерживаемся семантики free() и требуем, чтобы это было приемлемо. |
Предыдущая Содержание Следующая |