В програмирането говорим за абстракция, когато скриваме подробностите от описанието на дадена конструкция с цел да боравим с нея на по-високо ниво. В езика C имаме възможност да реализираме абстракция, като използваме идентификатори за имена на променливи (абстракция на място в паметта) и функции (абстракция на част от изпълним код). Освен това имаме възможност да даваме имена и на типове.
Синтаксис на typedef:
typedef <декларация на променлива>,
като името на променливата става име на типа. Например
typedef double data;
дава име data на типа double, а
typedef double (*operation)(double,double);
дава име operation на типа "указател към функция double (double,double)".

Задача. На идейно ниво функцията от по-висок ред accummulate борави с два типа: индекси (номера, по които се акумулира) и данни (числа, които се акумулират).
Абстрахирайте дефиницията на accummulate, като използвате например
typedef int index;
typedef double data;
и съответните подходящи дефиниции за типове указатели към функции, които се използват.

Синтактичната конструкция struct ни дава възможност да "залепим" данни от няколко различни типа в едно. Така се абстрахираме от това, че работим с няколко данни и си мислим, че работим с една данна от сложен (структурен) тип.

Абстракцията със struct е преход към принципа на обектно-ориентирано програмиране. Обектът представлява едновременна абстракция на данните и функциите (операциите), които могат да се изпълняват над тях.
Последно модифициране: събота, 12 ноември 2011, 17:38