Форум программистов, компьютерный форум CyberForum.ru

Структура класса - C++

Восстановить пароль Регистрация
 
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
22.02.2013, 23:49     Структура класса #1
Всем привет. Только начал изучать ООП. Вообщем есть задание:
Создать класс - дата с полями в закрытой части: день (1-31), месяц (1-12), год (целое число). Определить конструктор, деструктор, функции смены дня, месяца и года, получения значений дня, месяца и года, функции вывода по образцам: "15 января 2012 г." и "15.01.2012". Функции изменения значений полей класса должны проверять корректность задаваемых параметров.

Помогите пожалуйста создать функцию смены дня, месяца и года и "Функции изменения значений полей класса должны проверять корректность параметров, задаваемых."
И подскажите, все ли я сделал правильно в программе.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
using namespace std;
 
class Date
{
private:
    int day;
    int month;
    int year;
public:
    
    Date() {day=month=year=0;}
    Date(int a, int b, int c) {day=a;month=b; year=c;}
    ~Date(){};
 
 void print(void);
 };
 
void Date::print(void)
  {
      cout << day<<'.'<< month <<'.'<< year<<endl;
      char *mas[]={"january","february","march","april","may","june","july","august","september","october","november","december"};
      cout << day<<' '<< mas[month-1] <<' '<< year<<endl;
  }
 
void main()
{
    Date obj1(1,3,1997);
    obj1.print();
    getchar();getchar();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
23.02.2013, 00:02     Структура класса #2
C++
1
2
3
4
5
6
7
8
int Date::setMonth(int value){
  if (value>0 && value<13) {
    month=value;
    return 0;
  }
  else 
    return 1;
}
Простейший пример. При присвоении дня следует более тщательно проверять значения

Добавлено через 2 минуты
Цитата Сообщение от ovner Посмотреть сообщение
функции вывода по образцам: "15 января 2012 г." и "15.01.2012"
Я бы попросил объяснить твоего учителя, он что, считает, что каждый класс обязан уметь производить вывод на экран? Весьма сомнительно. Похоже учитель сам не особо понимает, зачем нужно ООП.
Develops
 Аватар для Develops
15 / 15 / 1
Регистрация: 19.02.2013
Сообщений: 38
23.02.2013, 00:03     Структура класса #3
Ну вот так, например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Date
{
// Строки кода
 
public void setDay(int d);
public void setMonth(int m);
public void setYear(int y);
 
// Строки кода
};
 
void Date::setDay(int d)
{
    if((d < 0) || (d > 31))
    {
        cout << "Передан неправильный номер дня!" << endl;
        return;
    }
    day = d;
}
// Остальные методы реализуй по аналогии с этим.
В целом всё у тебя в коде хорошо, правда поля инициализируют, как правило, вот так:
C++
1
public Date(int a, int b, int c) : day(a), month(b), year(c) { }
Хотя это лишь дело вкуса
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,722
Записей в блоге: 3
23.02.2013, 00:23     Структура класса #4
ovner, тут возможно, имеется ввиду, что данные класса подчинены какой-то логике. То есть не любой месяц может иметь 31 день и не любой 30, а для февраля, ещё и нужна проверка года и его ограничение зависит от того, обычный год или високосный. Напишите метод проверки года. Потом метод проверки месяца, в котором по значению поля, скажем bool visokosniy, логика ограничения допустимых чисел для февраля ветвится. Соответственно и в конструкторе и методах установки значений, последовательность вызовов: год, месяц, число.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.02.2013, 01:08     Структура класса #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Я бы попросил объяснить твоего учителя, он что, считает, что каждый класс обязан уметь производить вывод на экран? Весьма сомнительно. Похоже учитель сам не особо понимает, зачем нужно ООП.
Насчёт вывода на экран спорить не буду, но выдать дату, как строку заданного формата, классу Date не помешает.
Yandex
Объявления
23.02.2013, 01:08     Структура класса
Ответ Создать тему
Опции темы

Текущее время: 02:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru