|
0 / 0 / 0
Регистрация: 04.03.2015
Сообщений: 37
|
|
Описать класс Время20.05.2015, 23:58. Показов 6953. Ответов 36
Метки нет (Все метки)
Помогите пожалуйста
![]() Построить программу для работы с классом Время. Программа должна обеспечивать простейшие функции для работы с данными структурами: увеличение/уменьшение на 1 час, минуту, секунду, ввод значений, вывод значений Добавлено через 3 часа 55 минут Подскажите хотя бы как записать увеличение/уменьшение на 1 час, минуту, секунду?
0
|
|
| 20.05.2015, 23:58 | |
|
Ответы с готовыми решениями:
36
Описать класс "Поездка". Поля: номер поезда, пункт назначения, дни следования, время прибытия, время стоянки
|
| 04.06.2015, 12:44 | |
|
0
|
|
|
328 / 312 / 68
Регистрация: 05.11.2009
Сообщений: 712
|
||||||
| 04.06.2015, 12:50 | ||||||
|
Могу только посоветовать реализовать методы
1
|
||||||
|
|
|||
| 04.06.2015, 12:58 | |||
|
1) Почему у вас поля статические? Они не должны быть статическими. Допустим у меня программа - напоминалка. К каждому напоминанию я прикрепляю время, когда напоминание должно сработать. Но в вашем классе все экземпляры Time будут показывать одно и то же время. Облом. 2) Как вам уже писали, нет смысла хранить часы, минуты и секунды - в отдельных полях. Это во-первых увеличивает объем памяти, во-вторых усложняет код, и в-третьих приводит к ошибкам, которые рассмотрим ниже. Храните время просто в секундах (или миллисекундах, зависит от необходимой точности. DateTime вообще хранит время в тиках). А минуты и часы - сделайте свойствами, которые будут вычислять минуты и часы из секунд (делением по модулю). Это автоматически устранит проблемы с увеличением времени и переходом секунд в минуты, минут в часы и т.д. 3) Нет смысла в увеличении часов, минут и секунд по-отдельности. 4) Логика увеличения минут и часов, которая у вас почему-то описана в методе input - на самом деле должна быть внутри класса Time. 5) У вас явные ошибки в логике в методе input. Например, если ввести время 1:59:60, ваш код создаст объект с верменем 1:60:00, вместо 2:00:00. Эти ошибки уйдут автоматически, если будет выполнен пункт 2. Добавлено через 7 минут
3) Нет смысла в одновременном увеличении часов, минут и секунд (всех сразу).
1
|
|||
| 04.06.2015, 15:14 | ||||||
|
Не по теме: Спасибо, постараюсь исправить все недочеты ;) Добавлено через 2 часа 14 минут Исправил Кликните здесь для просмотра всего текста
Добавлено через 1 минуту Не по теме: Надеюсь без косяков ;)
0
|
||||||
|
|
||||||
| 04.06.2015, 15:27 | ||||||
|
Serx, Нет... Вы же по прежнему храните и часы и минуты...
А должно быть только одно(!) поле
Например, если время 1:32:40, то TotalSeconds должно содержать число 40 + 32 * 60 + 1 * 3600 = 5560 Секунды, минуты и часы - должны быть свойствами и возвращать остатки от деления TotalSeconds на коэфф.
1
|
||||||
| 05.06.2015, 10:15 | ||||||
|
Не по теме: Storm23, Понял, как еще свободное время выдастся подумаю еще. Спасибо :good: Добавлено через 18 часов 45 минут Примерно вот, что получилось. Кликните здесь для просмотра всего текста
Если Вы видите, где еще можно "Улучшить" код, то подскажите пожалуйста. И на ошибки укажите За ранние, большое спасибо.
0
|
||||||
|
.NET C#,ASP.NET MVC
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
|
||||||
| 05.06.2015, 10:20 | ||||||
1
|
||||||
| 05.06.2015, 10:26 | ||||||
|
Вот так?) А то мало ли я не правильно понял
0
|
||||||
|
.NET C#,ASP.NET MVC
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
|
|
| 05.06.2015, 10:34 | |
|
Да, именно так)
0
|
|
|
|
|
| 05.06.2015, 11:08 | |
|
Serx, Эхх, опять все не то...
![]() Главное что у вас неправильно - вы совершенно не отделаете данные от интерфейса. Поймите, любая программа состоит как минимум из двух блоков: модель данных и интерфейс. При этом самое главное условие хорошей архитектуры состоит в том, что эти два блока нужно тщательно изолировать друг от друга. Модель данных вообще ничего не должна знать об интерфейсе. А интерфейс не должен лезть в логику данных. Что же мы видим у вас? В свойстве TSecond доменный объект ВНЕЗАПНО вызывает метод класса Console. Ну какое отношение консоль имеет к времени? Доменный объект должен содержать только то, что относится к его модели данных. Для существования времени консоль не нужна. Я уж не говорю, что методы консоли - очень медленные. Далее посмотрим на интерфейс. Он пытается выполнять действия специфичные для модели данных. Этого быть не должно. Интерфейс должен знать минимум о внутреннем строении данных. Вот например смотрим строку time.TSecond += int.Parse(Console.ReadLine()) * 3600; Что такое 3600, Карл?? Что это за магическая константа? Что оно делает в интерфейсе? Как пользовательский интерфейс зависит от числа 3600? Интерфейс должен заниматься своими делами. Он может измерять ширину контролов или окон, отслеживать нажатия кнопок, выдавать сообщения и т.д. Что такое 3600? Это ширина окна? Так быть не должно. Вот представьте себе, что вы написали программу-календарь на 10000 строк кода. И вот тут оказалось, что точности секунд недостаточно, и вы решили изменить внутреннее представление времени с секунд на миллисекунды. Если у вас логика полностью инкапсулирована в классе Time, вы легко можете изменить этот класс, и больше ничего в программе не менять, поскольку интерфейс ничего не знает о внутреннем устройстве Time. А что у вас? Если, вдруг, вы решите поменять логику времени вам придется изменить кучу констант, раскиданных по всему коду интерфейса. А потом полезут ошибки. Фактически вам придется перелопатить весь код. А все почему? Потому что логика данных размазана по всей программе, вместо того, что бы быть исключительно внутри Time. Теперь по пунктам: 1) Где свойства Hours Minutes и Seconds? Как мне узнать сколько часов в данном Time ? 2) Где методы, изменяющие время? 3) 3600, 60 и т.п. - в интерфейсе быть не должно. 4) Console - в доменном объекте быть не должно. 5) Show() -> override ToString()
2
|
|
| 05.06.2015, 11:15 | |
|
Не по теме: Storm23, Понял, учту. Очередной раз спасибо. Исправлю и закину сюда
0
|
|
|
351 / 344 / 279
Регистрация: 21.05.2013
Сообщений: 1,312
|
|||||||||||
| 05.06.2015, 13:00 | |||||||||||
|
Интересно. И мне захотелось сделать задание
вот мой вариант Кликните здесь для просмотра всего текста
Класс Time
Кликните здесь для просмотра всего текста
Програмка Кликните здесь для просмотра всего текста
0
|
|||||||||||
| 06.06.2015, 14:18 | ||||||
|
Не по теме: newyork7776, :good: Кликните здесь для просмотра всего текста
Добавлено через 2 минуты Добавлять конструкторы как newyork7776 не стал, но идея хорошая .Если есть еще замечания, то подскажите, где и что не так, что подправить, конечно, если хотите.
0
|
||||||
|
351 / 344 / 279
Регистрация: 21.05.2013
Сообщений: 1,312
|
|
| 06.06.2015, 19:55 | |
|
69-90 строки
мне немного не понятно - зачем нам создавать сколько всего? Добавлено через 1 минуту 9-12 строки - +
1
|
|
| 06.06.2015, 20:29 | ||||||||||||||
![]()
0
|
||||||||||||||
|
|
||||||
| 06.06.2015, 20:47 | ||||||
|
Serx,
1) Смущает строка
Я бы вообще убрал свойство TSecond. Зачем оно? Если вы хотите, что бы totalSeconds всегда было положительным, просто объявите его uint, вместо int. 2) Зачем методы SubHours и т.п., если можно просто вызвать AddHours(-1) ? Ну то есть их можно и оставить, но это переусложнение кода, как на мой взгляд. 3) В методе ToString вы снова размазываете логику (только теперь уже внутри класса Time). Зачем вам опять делить/умножать, если у вас уже есть готовые свойства Hours, Minutes, Seconds? Специфические вещи (в данном случае алгоритмы пересчета часы-минуты-секунды) нужно делать в одном месте. Что бы это было легко поменять.
1
|
||||||
| 06.06.2015, 21:13 | |
|
Storm23, Немножко намудрил
А так спасибо.
0
|
|
| 06.06.2015, 21:13 | |
|
Описать базовый класс колоды карт и производный класс пасьянс Описать класс Car и его наследника, класс Avto Описать класс Car и его наследника, класс Sedan Описать класс «Расписание занятий». Каждая запись содержит день недели, время, название учебной дисциплины, а Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|