лр1-8. Н и я классов
Скачать 5.95 Mb.
|
Индивидуальное задание. Спроектируйте классы, наполните их требуемой функциональностью, определите интерфейс, продемонстрируйте использование объектов класса и методов интерфейса. Постройте диаграмму классов своего приложения средствами Visual Studio. В качестве классов можно использовать иерархию классов, разработанную в лабораторной работе №5. Интерфейс спроектируйте и реализуйте самостоятельно. 7. Содержание отчета и его форма Отчет по лабораторной работе должен содержать: 1. Номер и название лабораторной работы. 118 2. Цели лабораторной работы. 3. Ответы на контрольные вопросы. 4. Экранные формы и листинг программного кода, показывающие порядок выполнения лабораторной работы, и результаты, полученные в ходе её выполнения. Отчет о выполнении лабораторной работы в письменном виде сдается преподавателю. 8. Контрольные вопросы 1. Что такое наследование реализации? Как описать синтаксически наследование реализации? 2. Для чего используется ключевое слово base? 3. Можно ли переопределить метод класса? Свойства класса? Данные класса? 4. Что такое наследование интерфейса? Укажите основные отличия от наследования реализации. 5. Для чего используется ключевое слово virtual? Для чего используется ключевое слово override? 6. Может ли один класс наследовать несколько классов? Несколько интерфейсов? 7. Внимательно изучите код примеров данной лабораторной работы и подумайте, каким образом специфицируются методы интерфейса public, private или protected? В чем причина применения именно такого модификатора доступа? 120 ЛАБОРАТОРНАЯ РАБОТА 7. ФАЙЛОВЫЙ ВВОД-ВЫВОД. РАБОТА С КАТАЛОГАМИ. РАБОТА С ФАЙЛАМИ. 1. Цель и содержание Цель лабораторной работы: научиться использовать механизмы файлового ввода-вывода. Задачи лабораторной работы: – научиться применять классы для работы с файлами; – научиться применять классы для работы с каталогами; – научиться использовать потоки ввода-вывода. 2. Формируемые компетенции Лабораторная работа направлена на формирование следующих компетенций: – способность к проектированию базовых и прикладных информационных технологий (ПК-11); – способность разрабатывать средства реализации информационных технологий (методические, информационные, математические, алгоритмические, технические и программные) (ПК-12). 3. Теоретическая часть 3.1 Классы .NET Framework для реализации операций ввода-вывода. Весь ввод и вывод в .NET Framework подразумевает использование потоков. Поток – это абстрактное представление последовательного устройства. Последовательное устройство – это нечто такое, что хранит данные в линейной структуре и точно таким же образом обеспечивает доступ к ним: считывает или записывает по одному байту за одну единицу времени. 121 Сохранение устройства абстрактным означает, что лежащие в основе источник/приемник данных могут быть скрыты. Такой уровень абстракции обеспечивает повторное использование кода и позволяет писать более обобщенные процедуры, потому что нет необходимости заботиться о действительной специфике передачи данных. Для обработки файлов в С# необходима ссылка на пространство имен System.IO. При открытии файла создается объект, с которым ассоциируется поток. Потоки обеспечивают механизмы связи между файлами и программами. Среда .NET Framework предоставляет все необходимые инструменты для эффективного использования файлов в приложениях. Основные классы, необходимые программисту: 1. Object – исходный базовый класс для всех классов платформы .NET Framework и корень иерархии типов. 2. File – статический служебный класс, предоставляющий множество статических методов, которые дают возможность перемещать, создавать, копировать, удалять файлы, опрашивать и обновлять атрибуты, а также создавать объекты потоков FileStream. 3. Directory – статический служебный класс, предоставляющий множество статических методов для перемещения, копирования и удаления каталогов. 4. Path – служебный класс, используемый для манипулирования путевыми именами. 5. MarshalByRefObject – разрешает доступ к объектам через границы доменов приложения в приложениях, поддерживающих удаленное взаимодействие, это базовый класс для всех классов .NET, позволяющих удаленное взаимодействие. 6. FileInfo – представляет физический файл на диске, имеет методы для манипулирования этим файлом. Для любого объекта, который читает или пишет в этот файл, должен быть создан объект Stream. Все методы FileInfo доступны из объектной переменной, поэтому, если необходимо выполнить 122 только одно действие, более эффективным может оказаться использование метода File, а не соответствующего экземпляра метода FileInfo. Для всех методов FileInfo требуется путь к файлу, с которым проводится операция. Все статические методы класса FileInfo выполняют проверку безопасности для всех методов. Если необходимо использовать объект неоднократно, рекомендуется использовать соответствующий метод экземпляра FileInfo, поскольку в этом случае проверка безопасности будет требоваться не всегда. 7. DirectoryInfo – представляет физический каталог на диске и предоставляет методы уровня экземпляра для манипулирования каталогом. Класс DirectoryInfо работает точно так же, как класс FileInfо. Это объект, представляющий отдельный каталог на машине. Подобно классу FileInfо, многие из вызовов методов дублируются между Directory и DirectoryInfo. 8. FileSystemInfo – служит базовым классом для FileInfo и DirectoryInfo, обеспечивая возможность работы с файлами и каталогами одновременно, используя полиморфизм. 9. Stream – предоставляет универсальное представление последовательности байтов. Класс Stream является абстрактным базовым классом всех потоков. 10. FileStream – представляет файл, который может быть записан, прочитан или то и другое. 11. TextReader – представляет средство чтения, позволяющее считывать последовательные наборы знаков. Этот класс является абстрактным базовым классом для StreamReader, который считывает символы из потоков. 12. TextWriter – представляет средство записи, позволяющее записывать последовательные наборы символов. Этот класс является абстрактным базовым классом для StreamWriter, который записывают символы в потоки. 13. StreamReader – читает символьные данные из потока и может быть создан с использованием класса FileStream в качестве базового. 14. StreamWriter – пишет символьные данные в поток и может быть создан с использованием класса FileStream в качестве базового. 123 15. Component – предоставляет базовую реализацию интерфейса IComponent и делает возможным совместное использование объектов разными приложениями. 16. FileSystemWatcher – используется для мониторинга файлов и каталогов и представляет события, которые приложение может перехватить, когда в этих объектах происходят какие-то изменения. Таким образом, эта система классов включает в себя классы для работы с файлами (File, FileInfo), каталогами (Directory, DirectoryInfo) и потоками (FileStream, StreamReader, StreamWriter). В большинстве случаев для разработки бизнес-приложений достаточно лишь четырех классов для манипулирования файловой системой. Эти классы расположены пространстве имен System.IO и предназначены для работы с файловой системой компьютера, то есть для создания, удаления переноса файлов и каталогов. Первые два типа – Directory и Fi1е реализуют свои возможности с помощью статических методов, поэтому данные классы можно использовать без создания соответствующих объектов (экземпляров классов). Следующие типы – DirectoryInfo и FileInfo обладают схожими функциональными возможностями c Directory и Fi1е, но порождены от класса FileSystemInfo, поэтому реализуются путем создания соответствующих экземпляров классов. Класс FileSystemInfo предоставляет базовый функционал. Значительная часть членов FileSystemInfo предназначена для работы с общими характеристиками файла или каталога (метками времени, атрибутами и т. п.). Рассмотрим некоторые свойства FileSystemInfo (таблица 19.1). Таблица 19.1 – Свойства класса FileSystemInfo.
124
В FileSystemInfo предусмотрен набор методов. Например, метод Delete() – позволяет удалить объект файловой системы с жесткого диска, a Refresh() – обновить информацию об объекте файловой системы. 3.2 Классы для работы с каталогами файловой системы. Класс DirectoryInfo наследует члены класса FileSystemInfo и содержит дополнительный набор членов, которые предназначены для создания, перемещения, удаления, получения информации о каталогах и подкаталогах в файловой системе. Наиболее важные члены класса содержатся в таблице 2.2. Таблица 19.2 – Доступные члены класса DirectoryInfo.
125
|