Реализовать класс Date, который хранит информацию об определенной дате - C (СИ)
Формулировка задачи:
Класс Date хранит информацию об определенной дате (дд-мм-гг) для чего в нем предустмотрен поля day,mounth,year:
Метод Date::sethate() - должен в класс данные, а метод Date::ShowDate()-выводить на экран.
написать main() функцию в которой для демострации работы данного класса выполнить следующее
-Создать Date обьект
-Вывести неоторую дату и сохранить соответствующие данные (дд-мм-гг) в Date бьекте
-Вывести, используя метод Date::Showdate() хранящиеся в Date - обьекте данные на экран
Помогите пожалуйста. Есть небольшая просьба если можете пожалуйста прокомментируйте код.
Всем заранее спасибо..
Помогите
Помогите кто ни будь пожалуйста
Решение задачи: «Реализовать класс Date, который хранит информацию об определенной дате»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
/* Наш класс */
typedef struct {
int day;
int month;
int year;
void (*set)();
void (*show)();
} Date;
void setDate(Date *date_object_in,int day_in,int month_in,int year_in);
void showDate(Date *date_object_in);
/*
* Конструктор нашего класса.
* Конструктор класса - это функция, которая создает
* экземпляр класса (объект)
*/
void Constructor(Date *date_object_in);
/*
* Декструктор класса, это функция которая удаляет объект класса
* иными словами высвобождает пасять
*/
void Destructor(Date *date_object_in);
int main()
{
/* С помощью функции localtime(), в линуксе,
* мы можем получить текущую дату
*/
time_t t = time(NULL);
struct tm tm_instance = *localtime(&t);
/* После этого в tm_instance у нас лежит год, месяц, день*/
/* Создаем объект класса Date, с помощью конструктора */
Date *date_object = NULL;
Constructor(date_object);
/* Устанавливаем дату для объекта*/
(*date_object).set(date_object,tm_instance.tm_mday,tm_instance.tm_mon,tm_instance.tm_year);
/* Выводим данные объекта, то есть дату */
(*date_object).show(date_object);
Destructor(date_object);
//printf("now: %d-%d-%d\n", tm_instance.tm_year + 1900,tm_instance.tm_mon + 1,tm_instance.tm_mday);
return 0;
}
void Constructor(Date *date_object_in)
{
/* Выделяем память для нашего объекта */
date_object_in = malloc(sizeof(Date));
date_object_in->day = 0;
date_object_in->month = 0;
date_object_in->year = 0;
date_object_in->set = &setDate;
date_object_in->show = &showDate;
}
void Destructor(Date *date_object_in)
{
free(date_object_in->set);
free(date_object_in->show);
free(date_object_in);
}
void setDate(Date *date_object_in,int day_in,int month_in,int year_in)
{
date_object_in->day = day_in;
date_object_in->month = month_in;
date_object_in->year = year_in;
}
void showDate(Date *date_object_in)
{
printf("day = %d\n",date_object_in->day);
printf("month = %d\n",date_object_in->month);
printf("year = %d\n",date_object_in->year);
}
Объяснение кода листинга программы
- Объявление класса Date с полями day, month, year и функциями set и show.
- Функция setDate устанавливает значения полей объекта Date.
- Функция showDate выводит значения полей объекта Date.
- Функция Constructor создает экземпляр класса Date, инициализирует его поля нулевыми значениями и присваивает указателю date_object_in адрес выделенной памяти.
- Функция Destructor освобождает память, выделенную под объект класса Date.
- В функции main создается экземпляр класса Date, используется функция localtime() для получения текущей даты и устанавливается с помощью функции setDate.
- Затем с помощью функции showDate выводится текущая дата.
- В конце программы вызывается функция Destructor для освобождения памяти.
- Значения полей объекта Date при установке и выводе текущей даты не меняются.
- В функции main после вывода текущей даты вызывается функция Destructor для освобождения памяти.
- Значения полей объекта Date при установке и выводе текущей даты не меняются.
- В функции main после вывода текущей даты вызывается функция Destructor для освобождения памяти.
- Значения полей объекта Date при установке и выводе текущей даты не меняются.
- В функции main после вывода текущей даты вызывается функция Destructor для освобождения памяти.
- Значения полей объекта Date при установке и выводе текущей даты не меняются.
- В функции main после вывода текущей даты вызывается функция Destructor для освобождения памяти.
- Значения полей объекта Date при установке и выводе текущей даты не меняются.
- В функции main после вывода текущей даты вызывается функция Destructor для освобождения памяти.
- Значения полей объекта Date при установке и выводе текущей даты не меняются.
- В функции main после вывода текущей даты вызывается функция Destructor для освобождения памяти.