|
0 / 0 / 0
Регистрация: 04.03.2015
Сообщений: 37
|
|
Описать класс Время20.05.2015, 23:58. Показов 6904. Ответов 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 Описать класс «Расписание занятий». Каждая запись содержит день недели, время, название учебной дисциплины, а Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время?
Никакой пенсии. Никакого нового. . .
|
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю
Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы
Кратко. . .
|
|
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем
**Полевые заметки о двухнедельной совместной работе**. . .
|
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|