Объективное программирование — страница 2

  • Просмотров 9325
  • Скачиваний 351
  • Размер файла 45
    Кб

языков программирования. Рассмотрим пример определения объектов типа "дата" на классическом Си. //------ структура dat - аналог класса объектов "дата" --------typedef struct dat { unsigned day; unsigned month; unsigned year; } DAT; //----- набор функций для класса объектов "дата" --------------static int mm[] = {31,28,31,30,31,30,31,31,30,31,30,31}; //----- Проверка на корректность -----------------------------int TestData(p) DAT *p; { if (p->month ==2 && p->day==29 && p->year %4 ==0) return(1); if (p->month ==0 || p->month >12 || p->day ==0 ||

p->day >mm[p->month]) return(0); return(1); } //------ Следующая дата ----------------------------------------void NextData(p) DAT *p; { p->day++; if (p->day <= mm[p->month]) return; if (p->month ==2 && p->day==29 && p->year %4 ==0) return; p->day=1; p->month++; if (p->month !=13) return; p->month=1; p->year++; } //------- Следующая дата через n дней --------------------------void PlusData(p,n) DAT *p; int n; { while (n-- !=0) NextData(p); } //------- Основная программа --------------------------------- void main() { DAT a; do { scanf("%d%d%d", &a.day, &a.month, &a.year); } while(TestData(&a) ==0); PlusData(&a, 17); }

//-------------------------------------------------------- Фактически определение класса объектов как типа данных и известного набора функций для выполнения операций над переменными этого типа эквивалентно понятию базового типа данных (БТД) языка программирования. Единственное отличие класса от БТД заключается в том, что первый определяется программистом, а второй встроен в определение языка программирования. Язык программирования Си++ представляет

собой расширение языка Си для программирования объектов и их классов. При этом использование классов эквивалентно вплоть до синтаксиса использованию базовых типов данных: Понятия классического Си Понятия Си++ ------------------------- ----------- БТД: Класс: элемент данных языка, для определяемая пользователем которого известно множество структура, элементы которой значений, форма представления, являются ранее определен набор операций. ными

типами данных и классами, и множества функций,оперирующих с ним. --------------------------------------------------------- Переменная: Объект: область памяти, содержащая переменная, содержащая структуру данных определенного структуру данных, определенную типа. как класс. --------------------------------------------------------- Операция: Переопределение операторов: операция над переменной интер- функция, определенная для объек претируется по отношению к тому тов указанного

класса может быть БТД, к которому относится пере- вызвана в виде одной из стандарт менная (так операция '+' ных операций языка Си, которая по-разному интерпретируется для переопределяется, если операндом переменных типа int и double). ее является объект класса, а не переменная БТД. Лекция 2. Дополнительные возможности языка Си++ ----------------------------------------------- Ниже рассмотрим средства, расширяющие классический Си. Хотя они и не относятся