|
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 10
|
||||||||||||||||||||||||||
Мнение программистов13.02.2016, 04:17. Показов 1118. Ответов 8
Метки нет (Все метки)
Здравствуйте)
Я начинающий программист и у меня не большой опыт программирования.Но хотелось услышать мнения по поводу моего выполненного задания про объектно-ориентированный подход и в общем про реализацию)Буду очень рад услышать ваши мнения) Условия задания
Построить иерархию классов для калькуляторов с разной функциональностью.
1.Простой калькулятор – выполняет 4 арифметические операции: сложение, вычитание, умножение, деление. 2.Простой калькулятор с памятью – имеет также одну ячейку памяти и выполняет с данной ячейкой 4 операции: очистить ячейку памяти, записать в ячейку памяти текущее значение, увеличить или уменьшить значение в ячейке памяти на текущее значение. 3.Инженерный калькулятор – выполняет 4 арифметические операции и вычисляет значения 3 функций: синус, экспонента, квадратный корень. 4.Инженерный калькулятор с памятью – комбинация пунктов 2 и 3. Создать консольное приложение с единственным аргументом командной строки – имя входного файла. Структура входного файла: строка 1 - тип калькулятора, остальные строки - числа и операции для вычисления выражения, при этом каждое данное находится в одной строке. Например, содержимое файла для выражения sin(2*10+5)-1, которое необходимо вычислить инженерным калькулятором, может иметь вид: 3 2 * 10 + 5 sin - 1 Все исходные данные корректные. Если в исходных данных есть ошибка, то результат работы программы может быть любым, в том числе программа может завершиться аварийно. В приложении создать экземпляр калькулятора заданного типа и с его помощью вычислить значение выражения, определяемого содержимым файла.
0
|
||||||||||||||||||||||||||
| 13.02.2016, 04:17 | |
|
Ответы с готовыми решениями:
8
Перестановка букв в слове. Ваше мнение. Нужно ваше мнение об этом форуме Решение задачи. Требуется мнение гуру |
|
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
|
||||||
| 13.02.2016, 06:13 | ||||||
|
Много повторяющегося кода. Так быть не должно.
switch 1,2,3,4; одно и то же с минимальными различиями. В каждом case тоже повторения для каждой операции. циклы одинаковые. В классе Calc: методы: multiplication, division, addition, subtraction - методы отличаются одним символом, остальное всё повторение. Это ненормально. В классах наследниках куча переопределённых методов которые ничего не делают:
Если метод не меняет своего поведения - не надо его переопределять. Метод предка и так будет вызываться. Программу можно сократить в разы. Имена: Calc b = new Calc(); плохое имя, надо что-то имеющее смысл. Я бы сделал одинаковый интерфейс у всех калькуляторов. Они должны принимать только строки. Не нужно парсить строки в main(), пусть калькулятор сам этим занимается. В main() можно прочитать первую строку и создать калькулятор нужного типа. Тип ссылочной переменной Calc на любой калькулятор. А далее работать со всеми калькуляторами через единый интерфейс - скармливать им строки.
1
|
||||||
|
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
|
|||||||
| 13.02.2016, 10:45 | |||||||
|
Далее... Вот представьте я решил воспользоваться вашим классом калькулятора в своей программе. Мне понадобилось умножить 2 числа. Я беру ваш класс Calc и смотрю на метод.
1
|
|||||||
|
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 10
|
||||||
| 13.02.2016, 11:19 [ТС] | ||||||
|
так может сделать в классе Calc в методах вот так?? тогда в mail перебор уберется)
0
|
||||||
|
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
|
|
| 13.02.2016, 13:39 | |
|
eti666, разбейте задачу на более простые действия (чем проще тем лучше). Начните делать самые простые действия. Постепенно расширяйте возможности своей программы. Старайтесь что бы при расширении возможностей не было необходимости исправлять то, что уже написано.
1
|
|
|
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
|
||||||||||||||||||||||||||
| 13.02.2016, 18:43 | ||||||||||||||||||||||||||
|
Вот скажем ещё кусок:
Цикл поиска "exp", потом "sqrt" и т.д. Можно ведь в одном цикле проверять соответствие строки каждой из поддерживаемых операций. Можно switch со строками использовать. Далее. А нужен ли вообще цикл? Ведь структура файла такова что после строкой с числом всегда следует строка с операцией. Т.е достаточно проверять только строку при i = 1; Модификация списка строк - удаление обработанных операций и запись туда результата выглядит сомнительно (особенно преобразование числа в строку только для того чтобы потом преобразовть обратно в число). Возможно стоит просто хранить индекс текущей строки и текущий результат вычислений. UPD: Поэкспериментировал с enum'ами на примере этой задачи: здесь реализованы п.п. 1-3. 4-ю из этого так просто не реализовать (или придётся код дублировать). Есть недоработки: после операции с памятью должна быть возможность число ввести по идее. Но здесь только следующую команду. Зато добавил команду "извлечь из памяти" хотя в задании такой нет. Но без неё смысл работы с памятью теряется.
1
|
||||||||||||||||||||||||||
|
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,764
|
||
| 13.02.2016, 21:38 | ||
|
1
|
||
|
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 10
|
||
| 14.02.2016, 14:23 [ТС] | ||
|
Ну мне так кажется более разумным. Может я и ошибаюсь
![]() Добавлено через 2 часа 5 минут
0
|
||
|
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
|
|
| 14.02.2016, 16:14 | |
|
Ну в задании сказано построить иерархию классов калькуляторов.
А если от этого отойти... Можно сделать класс-контейнер калькулятор. И сделать интерфейс "вычислительный блок". И реализовать с этим интерфейсом "блок основных-операций", "блок инженерных вычислений", "блок операций с памятью". А потом лепить свои экземпляры класса-калькулятора запихивая в класс-контейнер произвольный набор вычислительных блоков. Но это не наследование, а композиция. Набор блоков можно даже в run-time менять, "собирая" из вычислительных блоков разные калькуляторы без перекомпиляции.
0
|
|
| 14.02.2016, 16:14 | |
|
Помогаю со студенческими работами здесь
9
Интересно мнение программистов с опытом Хочу услышать мнение опытных программистов Интересует мнение программистов, использующих в своей работе WPF c C# Влияние образования на дальнейшую карьеру, интересует мнение именно программистов C#, так как это моя основная специализация Ищу программистов Cocos2d-x для разработки игр, Ищу программистов C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во
всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
|