Skip to content

! Warning: This repository contains russian comments and README !

License

Notifications You must be signed in to change notification settings

Rinkton/ultrasound-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ultrasound-project

! Warning: This repository contains russian comments and README !

Первое, что необходимо объяснить - это...

Что за проект?

Данный проект является консольным приложением на C#.

Вдохновление на него у меня появилось от механизма ультразвукого зрения, которое заключается в том, что выпуская ультразвук мы запускаем таймер и когда данный звук вернётся обратно мы, используя знание о скорости данного звука (хотя, в действительности у меня там получилось слегка не так) и о том, за какой промежуток времени этот звук (в дальнейшем я буду называть его лазером) к нам вернулся с помощью формулы расчитываем расстояние от источника звука (отправителя) до какого - нибудь объекта.

По итогам был создан некий мир с одним вектором, где может быть два вида объектов: отправители и коробки. Отправитель может пустить лазер. Луч будет лететь в указанную отправителем сторону. С каждой пройдённой лучом координатой X будет прибавляться счётчик времени и проверяться не столкнулся ли луч с чем - нибудь. Если столкнулся, то является ли это отправившим его отправителем? Если да - то возвращаем ему проведённое в пространстве время. Если нет - то луч летит в противоположную сторону (на встречу отправившему его отправителю, соответственно). Когда вернули значение, с помощью полученного времени мы с помощью спец. формулы рассчитываем дистанцию, после, выводим её в консоль.

Как вы видите, программа очень проста, но какова же цель её создания?

Цель создания

Прежде всего это практика. Также должна быть ООП структура. Программа должна была быть простой в создании из - за моего низкого опыта в создании програм с ООП. Также необходимо было создать UML диаграмму по которой вплоть до методов и полей, комментариев к классам я должен был написать уже саму программу, без изменений в чём бы то ни было (но всё же по итогам ошибки были как в проектировании, так и в реализации).

Так каковы же ошибки в проектировании?

Ошибки в проектировании

Здесь я буду разделять три вида ошибок:

  1. Недочёт - то, что программа компилировать не будет и влиять на её работу соответственно тоже. Это всякие ошибки в комментариях к классам или просто недописал в диаграмму что - нибудь.
  2. НЕзначительно - в принципе с ними программа может вполне исправно работать, но лучше было бы с точки зрения проектирования сделать по - другому.
  3. Значительно - с этими ошибками программа не сможет работать исправно и возможно даже скомпилироваться.

Сами ошибки:

  1. В Laser-е поле SenderPosX следовало бы сделать readonly, так как это значение никаким образом не сможет измениться. НЕзначительно
  2. Конструктор Laser-а в котором сразу планировалось запустить метод Main() не сможет вернуть время (как я по какой - то непонятной причине думал, что можно), потому этот самый метод Main() следует сделать публичным, чтобы запустить его из Sender-а. Значительно
  3. Для реализации Singleton-а нужно ещё одно поле, которое не было добавлено в диаграмму. Недочёт
  4. Правильней было бы расписать комментарий к классу Program - "Создаёт первоначальные препятствия и первоначально управляет ими.". Недочёт
  5. В описании класса Obstacle не "предметы", а "препятствия". Недочёт

И того 3 недочёта, 1 НЕзначительный, 1 значительный.

По пути ultrasound-project\Diagrams\png вы сможете найти Before и After диаграммы (ну, и ещё Further, но об этом потом). Before - это диаграмма до реализации, After - исправления после реализации ("добавлено" помечено красным шрифтом, "убрано" помечено зачёркиванием).

Однако, несмотря на ошибки проект был выполнен. Так что подведу итог:

Итог

Проект не имел для меня ошеломляющего успеха, но вполне удался. Все цели были выполнены.

Планируется ли дальше развивать его?

Возможно, у меня есть несколько идей:

  1. В 1 пункте README говорилось, что скорость лазера и продвижение времени слишком условно и не реалистично. Потому я думаю это надо исправить и дополнительно добавить возможность отправителю отправлять лазер с разной скоростью.
  2. Программа, если запускать её просто через exe-шник не будет интересна пользователю, так как будет просто выдаваться результат, который был найден благодаря настройкам в самом коде. Потому я хочу, чтобы при входе в программу пользователю можно было самому расставлять препятствия, управлять отправителями и прочее.

Могу ли я развивать проект?

Я очень рад, если у вас появилась эта мысль. Вы можете развивать проект, отправляя pull request-ы. Если нет идей можете взять их из пункта "Планируется ли дальше развивать его?". Очень желательно соблюдение поставленной в проекте стилистики и во время развития кода развивать ещё и диаграмму (для этого я специально создал новую копию диаграммы под названием FurtherDiagram). Где исходники? - по пути ultrasound-project\Diagrams\xml вы сможете найти .xml файлы с одноимёнными с .png диаграммами названиями, эти исходники вы сможете открыть с помощью редактора диаграмм, который я указал в пункте "Что использовалось для создания этого проекта?" (редактируйте FurtherDiagram.xml).

Что использовалось для создания этого проекта?

Visual Studio 2017 - используемое IDE для редактора кода. C# - используемый язык программирования. Устанавливался с помощью Visual Studio 2017.

Draw.io - сайт ( https://www.draw.io ), использовался как редактор для UML диаграмм.

Git Bash - программа, используемая для взаймодействия с git и отправкой изменений на GitHub.

About

! Warning: This repository contains russian comments and README !

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages