Приложение для работы с файлами с функциональностью Проводника Windows18.10.2013, 16:31. Показов 6236. Ответов 59
Метки нет (Все метки)
С первым проектом разобрался и успешно сдал. Теперь я получил последний проект. И тоже возникли некоторые недопонимания в реализации задания
Суть: написать-реализовать: Приложение для работы с файлами с функциональностью Проводника Windows или Total Commander с кучей рекомендаций. Основные компоненты приложения Кликните здесь для просмотра всего текста
1. Ядро 2. Консольный пользовательский интерфейс (консоль) 3. Графический пользовательский интерфейс 4. Сетевые средства 5. Многопоточный сервер (модель клиент-сервер) 6. База данных (Data base) 7. Веб-приложение (Web-application) 8. J2EE-приложение Сейчас начинаю разрабатывать ядро. И вот мои идеи насчет реализации ядра программы Кликните здесь для просмотра всего текста
Требование к ядру 1.1. Обязательная часть (required) 1. Ядро. Разработать иерархию классов-сущностей, соответствующую данному заданию. 2. Manager. Написать класс, который будет содержать бизнес-логику вашего приложения (производить различные проверки, перед тем как совершать операции с объектами). 3. DAO. Написать класс, который будет манипулировать данными (объектами). Например удалять, добавлять, изменять объекты, искать объекты по какому-то критерию. 4. Данные (объекты) программы должны храниться в оперативной памяти. Можно использовать, например, хранилища вида Collection, Map. 5. Использование паттернов: Singleton, DAO, Facade Мои идеи насчет ядра Ядро́ (kernel) — центральная часть данной системы. Ядро предоставляет сервисы файловой системы и сетевых протоколов. Ядро состоит из двух компонентов 1. Менеджера валидатора 2. Класса, реализующего DAO Менеджер валидатор обеспечивает проверку на корректность того или иного действия текущего пользователя. К примеру, если пользователь выполняет команду на удаление файла без привилегий на это действие, то менеджер валидатор не должен допустить удаление данного файла. Класса, реализующий DAO будет производить операции с данными только при "корректной" валидации текущего действия, т.е. работа ядра будет по такому принципу: Запрос с внешней среды передается в вспомогательный класс "драйвер", далее этот класс запрашивает валидацию у менеджера валидатора, если валидация проходит успешно - этот же запрос адресуется классу, реализующего DAO, далее полученный результат от DAO класс "драйвер" передает как ответ во внешннюю среду. Внешнее воздействие на составные компоненты ядра возможно только через открытые функции самого ядра. Процесс работы ядра см. рис Использование паттернов: Singleton, DAO, Facade Singleton - не понятки, для кого это? Ядро должно быть в единственном экземпляре, хм..., почему? DAO - вроде понятно. Facade - тоже, зачем? Начальная реализация ядра Кликните здесь для просмотра всего текста
Код ядра. При инициализации ядра происходит конфигурация, т.е. считывается из xml-файла конфиг данные - здесь все пока сыро и на скорую руку сделано ![]() Кликните здесь для просмотра всего текста
Сам файл с заданием Задание.docx Ваши мнения ![]() Где есть ошибки, недочеты?
1
|
||||||
| 18.10.2013, 16:31 | |
|
Ответы с готовыми решениями:
59
Приложение для работы с файлами Excel Обсуждение и сравнение способов и инструментов для работы с текстовыми файлами в ОС windows Написать Windows-приложение для работы с информацией о пациентах терапевтического отделения больницы |
| 22.10.2013, 12:33 [ТС] | |||||||||||||||||||||
|
Как вам вот этот код - говнокод?
Есть список(енум) возможных операций Кликните здесь для просмотра всего текста
И есть класс Юзеров Кликните здесь для просмотра всего текста
Общий класс предок Кликните здесь для просмотра всего текста
Класс Админ Кликните здесь для просмотра всего текста
И обычный юзер Кликните здесь для просмотра всего текста
Нормально, что у юзеров поле пароль хранится в открытом виде, как можно это реализовать по другому? Как можно это оформить элегантно, красиво, удобно? Спасибо.
0
|
|||||||||||||||||||||
|
|
|||
| 22.10.2013, 13:14 | |||
|
1
|
|||
|
78 / 78 / 9
Регистрация: 28.10.2011
Сообщений: 219
|
|
| 22.10.2013, 13:33 | |
|
1
|
|
| 22.10.2013, 15:57 [ТС] | |
|
Прогаю значит, никого не трогаю, тут эклипс начинает чудить, теперь свой код не могу свернуть вообще, т.е.
я делаю вот так 1. Ctrl + A 2. Ctrl+Shift+Numpud_divide Ноль реакций, походу хватит на сегодня прогать ![]() Добавлено через 8 минут Решение 1. Windows 2. Preferences 3. Java 4. Editor 5. Folding 6. Поставить галочку в Enable folding
0
|
|
|
KeM6Pug}I{a
49 / 49 / 1
Регистрация: 23.08.2013
Сообщений: 202
|
||||
| 23.10.2013, 21:28 | ||||
|
Добавлено через 2 минуты
1
|
||||
| 23.10.2013, 21:38 [ТС] | |||
|
0
|
|||
|
KeM6Pug}I{a
49 / 49 / 1
Регистрация: 23.08.2013
Сообщений: 202
|
||
| 23.10.2013, 21:49 | ||
|
1. У простых юзеров могут быть методы которые предназначены Админам, но админ как бы тоже юзер и проверять каждого юзер или нет нету смысла, мы просто 1 раз проверяем приорити текущего клиента , и принимаем решения разрешить этому клиенту выполнить эту операцию или нет. А если вы захотите добавить например Модератора ? Или наблюдателя какого нить ? Опять новый класс? А так мы можем просто для каждого определить его приоритет (например 1 - User, 2 - Moderator, 3 - Admin) , а также если в вашем приложении нужно будет хранить эти акки в базе то просто создаем в базе столбец priority и ВСЕ )
1
|
||
| 23.10.2013, 21:53 [ТС] | ||
|
0
|
||
|
KeM6Pug}I{a
49 / 49 / 1
Регистрация: 23.08.2013
Сообщений: 202
|
||
| 23.10.2013, 22:06 | ||
|
Добавлено через 7 минут Используйте функциональные объекты (объекты запросы (команда + шаблонный метод)) для реализации ваших "Operation". Java всё-таки ООП язык )
1
|
||
| 24.10.2013, 01:59 [ТС] | ||
![]() Добавлено через 1 час 3 минуты Рассматривали с куратором этот проЭкт, и вот что решили: 1. Базовая идея - не была понята мною с самого начала. 2. Необходимо создавать свои сущности File, Folder. 3. Неправильно реализован шаблон DAO. Итого: К сожалению, придется переписывать существенную часть кода
0
|
||
|
KeM6Pug}I{a
49 / 49 / 1
Регистрация: 23.08.2013
Сообщений: 202
|
||
| 24.10.2013, 06:07 | ||
|
1
|
||
| 24.10.2013, 06:13 [ТС] | |||
|
И все же. Я вот сейчас уже 5-ый час бьюсь: читаю, слушаю, смотрю про паттерн DAO, так и не понимаю как его реализовать правильно. Поправьте, пожалуйста, если где-то я ошибаюсь
Итак, у нас есть некая абстракция, которая управляет работой с некоторыми данными - это будет главным звеном DAO - назавем его DAOManager. У этого класса будет поле-интрефейс IDAOExecutor, которому все поступающие запросы к DAOManager'a транслируются, т.е. перенаправляются. В частности, что нам это дает? Мы можем у этого DAOManager поменять поле IDAOExecutor, который допустим может работать с БД, или же поменять на реализацию с работой в файловой системе, засчет чего мы получаем некую гибкость. Я правильно понимаю суть этого паттерна? Добавлено через 5 минут Не по теме:
0
|
|||
|
KeM6Pug}I{a
49 / 49 / 1
Регистрация: 23.08.2013
Сообщений: 202
|
||
| 24.10.2013, 06:54 | ||
|
1
|
||
| 24.10.2013, 13:54 [ТС] | ||||
|
0
|
||||
|
KeM6Pug}I{a
49 / 49 / 1
Регистрация: 23.08.2013
Сообщений: 202
|
|||||||||||||||||
| 24.10.2013, 17:56 | |||||||||||||||||
|
Для него используется паттерн "компоновщик" , то есть в данном случае Folder это узел , а File это лист. У этого паттерна есть побочные эффекты (лишние методы ,которые например не могут быть у объекта File (например addNewFile) , но они решаймы) Поэтому вам понадобится булево поле типа isFile и проверять его при создании новых объектов. Добавлено через 7 минут Кликните здесь для просмотра всего текста
Добавлено через 1 час 11 минут
И да extends Dir можно убрать. Добавлено через 8 минут
1
|
|||||||||||||||||
|
78 / 78 / 9
Регистрация: 28.10.2011
Сообщений: 219
|
||
| 24.10.2013, 20:17 | ||
|
less foldername == less filename так получается ?
0
|
||
|
KeM6Pug}I{a
49 / 49 / 1
Регистрация: 23.08.2013
Сообщений: 202
|
|||||||
| 24.10.2013, 20:35 | |||||||
0
|
|||||||
| 27.10.2013, 01:27 [ТС] | |||||||||||
|
Итак вопрос: как создать "глубокую" копию объекта? Или почему у меня этот Generic не работает?
Есть такие сущности AbstractFile, File, и Folder(List<AbstractFile> files), причем две последние унаследованы от AbstractFile. Далее Folder может у себя хранить как File так и другие подпапки: 1. Уже целый час бьюсь не могу написать рекурсивный поиск файла или папки, т.е. вот такой код : но я подаю по StackOverflowException e
0
|
|||||||||||
| 27.10.2013, 01:27 | |
|
Выбор решения для проекта! Приложение для Windows + приложение для Android или Web приложение? Написать пакет классов для работы с деловой графикой, предназначенный для работы в среде Windows почему-то в папке windows вместе с системными файлами, находится папка windows с теми же файлами! Копия, короче Web приложение для управления файлами
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|