|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.10.2014, 11:27 | #61 | |
Форумчанин
Регистрация: 26.09.2014
Сообщений: 176
|
Действительно, очень интересно) Сейчас доработаю и выложу
Плюс у меня еще 1 вопрос напрашивается: Цитата:
Код:
Последний раз редактировалось Stilet; 18.10.2014 в 11:26. |
|
14.10.2014, 13:54 | #62 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Eсли доступ к внутренним закрытым переменным при печати необходим, то надо делать оператор дружественным, чтобы не плодить лишние методы доступа. Но если есть возможность этого не делать, что нужно следовать правилу. И автор объясняет почему нарушение инкапсуляции это плохо, и почему надо к ней стремиться. Но в классе Time есть в открытом интерфейсе метод для доступа к закрытой переменной "m_sec" и поэтому есть возможность соблюдать правило выше и не нарушать инкапсуляцию (внутренний мир объекта, как я её понимаю)
Последний раз редактировалось 8Observer8; 14.10.2014 в 14:47. |
14.10.2014, 17:38 | #63 |
Форумчанин
Регистрация: 26.09.2014
Сообщений: 176
|
Ну вот, что у меня вышло:
Код:
Код:
Код:
Последний раз редактировалось igoreshka3333; 14.10.2014 в 17:44. |
15.10.2014, 10:03 | #64 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
--------------------------
Когда делаете отдельный файл, то никогда в нём не пишить "использовать std, как глобальное пространство имён": Код:
Приучите себя сразу писать std::cout. Так делают все среднички (вроде меня и вас) и профи. В очень простых демо-примера можно написать "using namespace std;". Но я даже в демо-примерах пришу std:: Упражнение. Уберите строку "using namespace std;" -------------------------- Никогда не встречал таких имён функций: Код:
Код:
Код:
-------------------------- В конце функции не нужно ставить точку с запятой: Код:
-------------------------- Защищённые переменные необходимо снабжать отличительным признаком. Есть множество вариантов, вот несколько из них: Код:
Код:
Код:
-------------------------- Упражнение. Добавьте в класс конструктор, чтобы пользователь вашего класса мог использовать его так: Код:
Последний раз редактировалось 8Observer8; 15.10.2014 в 10:07. |
15.10.2014, 12:15 | #65 |
Форумчанин
Регистрация: 26.09.2014
Сообщений: 176
|
Спасибо за советы)
Time.h Код:
Код:
Код:
|
15.10.2014, 13:07 | #66 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Хорошо! Оставлю тут памятку: конструкторы, сеттеры. Позже к ним вернёмся
Теперь выполните такое упражнение (перед выполнением упражнения прочитайте параграф об операторных функциях ниже). Пусть пользователь вашего класса имеет возможность использовать не только префиксный декремент, но и постфиксный: Код:
|
15.10.2014, 13:08 | #67 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
|
16.10.2014, 01:23 | #68 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Рекомендую вместо Builder
Установка Qt на Windows Переходим по ссылке: http://qt-project.org/downloads Нажимаем кнопку “Show downloads” Выбираем “Qt 5.3.2 for Windows 32-bit (MinGW 4.8.2, OpenGL, 737 MB)” Запускаем скаченный файл и следуем инструкции установки Запуск консольного приложения Запускаем Qt Creator Если у вас Qt Creator на русском, то переключите его на английский по этой инструкции: Переключение Qt на английский В меню выбираем: “Инструменты” -> “Параметры…” В окне “Параметры” слева выбираем “Среда” -> открываем вкладку “Основные” -> выбираем в выпадающем списке “English” -> нажимаем кнопку “OK” -> перезапускаем Qt Creator Запуск консольного приложения (продолжение) Создадим новый проект. Для этого в меню Qt Creator’а выбираем “File” -> “New File or Project…” В разделе “Projects” выбираем “Other Project” -> во второй колонке выбираем “Empty Qt Project” -> нажимаем кнопку “Choose…” В поле “Name” пишем: HelloWorld -> нажимаем кнопку “Browse…” и указываем путь, где будет создан наш проект -> нажимаем два раза “Next” -> нажимаем кнопку “Finish” Нажимаем правой кнопкой мыши по названию проекта (на панели слева) -> выбираем “Add New…” -> в первом разделе выбираем “C++” -> во втором разделе выбираем “C++ Source File” -> нажимаем кнопку “Choose…” -> водим имя: main -> нажимаем кнопку “Next” -> нажимаем кнопку “Finish” Отрываем файл HelloWorld.pro и добавляем в него строку: CONFIG += console Теперь файл HelloWorld.pro выглядит так: HelloWorld.pro Код:
main.cpp Код:
Примечание. Чтобы программа запустилась в отдельном терминальном окне необходимо на панели слева нажать кнопку “Projects” -> в открывшемся окне, нажать кнопку “Run” -> найти и поставить галочку “Run in terminal” -> нажать кнопку “Edit” (чтобы вернуться к файлам проекта) Есть ещё замечания к классу Time, но сначала покажите операторную функцию для постфикного декремента Последний раз редактировалось Stilet; 18.10.2014 в 11:28. |
16.10.2014, 11:25 | #69 | |
Форумчанин
Регистрация: 26.09.2014
Сообщений: 176
|
Цитата:
Насчет постфиксной декрементации усек! Вот, собственно: Time.h Код:
Код:
Код:
Код:
Последний раз редактировалось Stilet; 18.10.2014 в 11:28. |
|
16.10.2014, 11:51 | #70 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Эти два конструктора можно объединить в один, тогда число строк кода уменьшится:
Код:
Код:
Ошибку в коде правила заметил такую: двоеточие ставится перед каждой переменной, а нужно написать его один раз, как в примере: Код:
В вашем коде есть недостаток. Вот допустим пользователь вашего класса создал объект класса Time с помощью конструктора. А в процессе работы захотел изменить время. Короче говоря, чаще всего, там где есть геттеры - есть и сеттеры. Геттеры у вас есть, теперь напишите сеттеры. Если непонятно, то я уточню После исправлений скопируйте весь код. Ещё подумаем, что можно улучшить Последний раз редактировалось 8Observer8; 16.10.2014 в 12:35. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
описать класс в с# | volkodinocka | Помощь студентам | 0 | 09.11.2013 22:05 |
Описать класс С# | NeoX_2011 | Помощь студентам | 1 | 19.03.2012 00:10 |
C# исправление ошибки. Описать класс, реализующий шестнадцатеричный счетчик | PROkaZZZniK | Помощь студентам | 7 | 09.02.2012 16:29 |
Описать класс-родитель и класс-потомок. Delphi 7 | Andrew_M | Помощь студентам | 0 | 15.01.2011 14:42 |
Описать класс. | Telec | Общие вопросы C/C++ | 1 | 30.04.2010 18:43 |