Обратная связь по UML-диаграмме: структура классов и их взаимодействие Вопрос №1

Рейтинг: 0Ответов: 1Опубликовано: 18.07.2025

Учусь программировать на Java, дошел до этапа понимания, что проектирование структуры проекта должно быть ДО написания кода, даже несмотря на то, что проект маленький у учебный - это оказалось непростой задачей. Два дня пришлось потратить, чтобы сделать, на мой взгляд грамотный вариант. Прошу знающих людей дать оценку моему "творению", безжалостную)

также буду сильно благодарен за любые советы и рекоммендации.

задача звучит следующим образом:

утилита для работы с файлами. Приложение должно отображать информацию о файлах, содержимое папок и их размер, а также предоставлять функционал перемещения/переименования. По сути, приложение эмулирует командную строку Unix-подобных систем.

Программа должна принимать в качестве аргумента абсолютный путь к папке, с которой начинается работа, и поддерживать следующие команды:

mv ЧТО КУДА – позволяет переместить или переименовать файл, если КУДА содержит имя файла без пути. ls – отображает содержимое текущей папки (имена файлов и подпапок и их размеры в КБ) cd ИМЯ_ПАПКИ – меняет текущий каталог

Предположим, на диске C:/ (или в корневом каталоге, в зависимости от ОС) есть папка MAIN со следующей иерархией:

MAIN folder1 image.jpg animation.gif folder2 text.txt Program.java Пример работы программы для каталога MAIN:

$ java Program --current-folder=C:/MAIN
C:/MAIN
-> ls
folder1 60 KB
folder2 90 KB
-> cd folder1
C:/MAIN/folder1
-> ls
image.jpg 10 KB
animation.gif 50 KB
-> mv image.jpg image2.jpg
-> ls
image2.jpg 10 KB
animation.gif 50 KB
-> mv animation.gif ../folder2
-> ls
image2.jpg 10 KB
-> cd ../folder2
C:/MAIN/folder2
-> ls
text.txt 10 KB
Program.java 80 KB
animation.gif 50 KB
-> exit

А это моя UML диаграмма:

введите сюда описание изображения

Ответы

▲ 3Принят

Мне не очень понятна нотация что вы используете, но из самого основного:

  1. CommandParser который не парсит ничего, при этом имеет состояние. По идее CommandParser должен иметь 1 меод Command Parse(agruments)
  2. ConsoleUI который вообще непонятно что делает. Имеет какие то методы, которые ничего не принимают в параметрах.
  3. FileManager который ничего не делает с файлами
  4. CommandValidator который не валидирует команды (валидирует что то, что не команды) Вообще, если у вас есть CommandParser, CommandValidator - то наверное должен быть класс Command где то.
  5. FileAction/DirectoryAction - я так понимаю, это интерфейсы? А чего один void, а второй String? Хотя вообще не ясно, это для классов, что должны хранить данные (условно, описание действия, например для переименования они должны хранить старое и новое имя файла), или это классы, которые выполняют действие? Или вы их смешали вместе?

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

Просто если у вас только дизайн, но вы его не релизовывали, вы упускаете множество проблем, что вы встретите как только код сядете писать. У местных гуру тут глаз наметан именно таким образом - ты пишешь систему, видишь косяки и на след своем дизвайне уже подобных косяков не допускаешь.