Краткое описание классов




Проект №4: Модель логической файловой системы

Теоретический материал к проекту

Самая простая форма файловой системы состоит из одного каталога, содержащего все файлы. Иногда он называется корневым каталогом, но поскольку он один-единственный, то имя особого значения не имеет. Эта система была широко распространена на первых персональных компьютерах отчасти из-за того, что у них был всего один пользователь. Как ни странно, первый в мире суперкомпьютер, CDC 6600, также имел один каталог для всех файлов, даже притом, что на нем одновременно работало много пользователей. Несомненно, это решение было принято с целью упростить разработку программного обеспечения.

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

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

Для организации всего этого нужна иерархия (то есть дерево каталогов). Такой подход позволяет иметь столько каталогов, сколько необходимо для группировки файлов естественным образом. Кроме того, если общий файловый сервер совместно используется несколькими пользователями, как это бывает во многих сетях организаций, каждый пользователь может иметь корневой каталог для собственной иерархии. Возможность создания произвольного количества подкаталогов предоставляет пользователям мощный инструмент структуризации, позволяющий организовать их работу. Поэтому таким образом устроены практически все современные файловые системы.

Требования к проекту

· Теоретические знания об организации логической файловой системы

· Умение применять на практике механизм наследования классов в C#

· Навыки работы с иерархической структурой данных дерево

Цель проекта

Построение иерархической модели логической файловой системы с базовым набором возможностей файловой системы в операционной системе: создание, удаление, переименование и т.д. файлов/папок.

Описание задания

Необходимо написать программу, которая реализует как можно более точную модель логической файловой системы. Логическая файловая система в современных ОС представляет собой иерархическую структуру, состоящую из двух основных типов объектов: файлов и папок (также называемыми каталогами и директориями). Наиболее подходящей структурой данных для реализации подобной модели является дерево. Самым первым элементом в такой иерархии будет являться корневая папка – root.

Важным элементом модели является алгоритм формирования полного имени файла.

ü Полное имя файла/ папки формируется из названий папок согласно иерархии расположения файла/папки. Имена папок необходимо отделять друг от друга символами «/ ».

ü Нельзя включать в имена файлов и папок следующие символы: / \: * +? “ < > Таким образом, при формировании имен файлов/папок необходимо организовать запрет в случае попытки ввода указанных символов.

ü Для каждого элемента в иерархии необходим указатель на то, является ли он папкой или файлом.

ü У каждого файла должен быть характеристика, указывающая его размер. Папки в реализуемой модели не должны иметь размера (в реальной модели логической ФС размер папки минимален: например, в UNIX-системах размер папки составляет 4 Кб, т.е. равен размеру блока памяти).

При формировании интерфейса реализуемой модели можно руководствоваться организацией интерфейса программы Проводник – стандартной программы в ОС Windows, предназначенной для работы с файловой системой.

Краткое описание классов

Можно выбрать один из предложенных вариантов реализации.

Вариант №1. В проекте определяются: класс FileObject – базовый класс, включающий в себя общие характеристики как файлов, так и папок; классы File и Directory, наследующие класс FileObject и получающие от него общий набор характеристик, а также расширяемые индивидуальными для себя характеристиками файлов/папок; класс LogicalFileSystem, представляющий собой иерархическую модель с набором файлов и папок, операций с ними, а также с возможностью формирования и отображения их полных имен. Примечание: члены родительного класса FileObject должны иметь тип доступа protected (таким образом, они станут видны производным классам).

Класс FileObject

· Поле/свойство типа string, определяющее имя объекта (файла или папки);

· Поле/свойство типа Directory, определяющее местонахождение файла/папки (указатель на папку, где хранится объект);

· Поле/свойство типа bool, логическая переменная, определяющая, является ли объект файлом или папкой. Если объект – файл, то переменная принимает значение false, если папка, то значение true;

· Конструктор класса, принимающий в качестве параметров имя и указатель на папку, где хранится объект.

Класс File: FileObject

· Поле/свойство типа int, определяющее размер файла;

· Логическая переменная из класса FileObject в конструкторе принимает значение false;

· Конструктор класса, принимающий в качестве параметров имя файла (наследуется от конструктора родительского класса), указатель на папку, в которой хранится объект и размер файла.

· Дополнительно: Поле/свойство типа string, определяющее расширение файла.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-12-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: