отчет по практике. Колледж инновационных технологий КарТУ
Скачать 74.63 Kb.
|
2.6 Интерфейсы. Реализация сортировки в массиве. Интерфейсы IComparable и IDisposable.Сортировка - это процесс упорядочивания наборов данных одного типа по возрастанию или убыванию значения какого-либо признака. Например, 25 10 5 76 - неотсортированный массив целых чисел 5 10 15 20 25 - отсортированный по возрастанию массив целых чисел 25 20 15 10 5 - отсортированный по убыванию массив целых чисел При конструировании эффективных программ (подпрограмм), осуществляющих сортировку массивов, требуется использование · быстродействующих алгоритмов и · минимальное использование дополнительной памяти. Интерфейс — именованный набор сигнатур методов. Все члены интерфейса неявно абстрактны (т. е. не содержат реализации и по умолчанию являются открытыми). Рекомендации, связанные с семантикой удаления объекта: • однажды удаленный объект восстановлению не подлежит; • повторный вызов метода Dispose не приводит к ошибке; • если удаляемый объект так или иначе «владеет» другими объектами с интерфейсом IDisposable, то при своем удалении он должен удалить свои подчиненные объекты. Интерфейс IComparable доступен в двух формах: обобщенной и необобщенной. Несмотря на сходство применения обеих форм данного интерфейса, между ними имеются некоторые, хотя и небольшие, отличия. Если требуется отсортировать объекты, хранящиеся в необобщенной коллекции, то для этой цели придется реализовать необобщенный вариант интерфейса IComparable. В этом варианте данного интерфейса определяется только один метод, CompareTo(), который определяет порядок выполнения самого сравнения. 2.7 Делегаты и события. Различия.Разработчики, не имеющие опыта работы с платформой .NET Core, часто не могут решить, что следует выбрать: структуру на основе delegates или на основе events. Часто выбор делегатов или событий довольно сложен, так как эти две возможности языка довольно похожи. Более того, события основаны на тех же средствах языка, которые обеспечивают поддержку делегатов. И те и другие обеспечивают сценарии позднего связывания, в которых взаимодействие компонента осуществляется путем вызова метода, известного только во время выполнения. И те и другие поддерживают методы с одним или несколькими подписчиками. Иногда это называют поддержкой одноадресности и многоадресности. Синтаксис добавления и удаления обработчиков в обоих случаях похож. Наконец, при вызове событий и делегатов используется абсолютно одинаковый синтаксис вызова методов. Более того, поддерживается одинаковый синтаксис метода Invoke() для использования с оператором ?.. Учитывая такое сходство, легко могут возникнуть проблемы с выбором подходящего механизма в той или иной ситуации. Самым важным фактором при выборе подходящего механизма является обязательность наличия подключенного подписчика. Если ваш код должен вызывать код, предоставленный подписчиком, следует использовать структуру на основе делегатов, когда вам нужно реализовать обратный вызов. Если код может выполнить все задачи, не вызывая подписчики, следует использовать структуру на основе событий. Для возвращаемых значений требуются делегаты Еще одним аспектом является прототип метода, который требуется для метода делегата. Как вы уже видели, все делегаты, используемые для событий, имеют тип возвращаемого значения void. Вы уже также знаете, что есть идиомы для создания обработчиков событий, которые передают информацию обратно источникам событий, изменяя свойства объекта аргумента события. Хотя такие идиомы работают, они не так естественны, как возвращение значения из метода. Для событий используется закрытый вызов Прослушиватели событий часто имеют более длительный срок существования 2.8 Потоки. Функция ToString().Консольный ввод/вывод.C# является языком, строго и в полном объеме реализующим принципы ООП. В этом языке все построено на классах и нет ничего, что бы не соответствовало принципам объектно-ориентированного программирования. Любой элементарный тип является наследником общего класса Object, реализующего, в частности, метод String ToString(), формирующий в виде human-readable текстовой строки описание тех или иных характеристик типа и значений объектов – представителей данного типа. Любой тип – наследник класса Object (а это ВСЕ типы!) имеет либо унаследованную, либо собственную переопределенную версию метода ToString(). Применительно к объектам предопределенного типа из CTS, соответствующие версии методов ToString() обеспечивают преобразование значения данного типа к строковому виду. Все сделано для программиста. Реализация метода преобразования значения в строку в конечном счете оказывается скрытой от программиста. Именно поэтому вывод значений предопределенных типов с использованием функций Write и WriteLine в программах на языке C# осуществляется так легко и просто. Эта функция имеет перегруженный вариант, использующий параметр типа string для указания желаемого формата представления. Множество значений этого параметра ограничено предопределенным списком символов форматирования (представлены ниже), возможно, в сочетании с целочисленными значениями. Символ форматирования Описание C Отображение значения как валюты с использованием принятого по соглашению символа D Отображение значения как десятичное целое E Отображение значения в соответствии с научной нотацией F Отображение значения как fixed Point G Отображение значения в формате с фиксированной точкой или как десятичное целое. Общий формат N Применение запятой для разделения порядков X Отображение значения в шестнадцатеричной нотации 2.9 Коллекции. Параметризованные классы.Коллекции типа ArrayList, Queue и Stack при работе с хранимыми объектами используют базовый класс Object, что позволяет им работать с объектами любого типа. Однако для работы с объектами, полученными из коллекции, требуется выполнять явное преобразование их типов (кастинг) с базового типа Object в требуемый тип. Это не только утомительная и приводящая к ошибкам работа, по такие операции также влияют на эффективность работы программы. Используя обобщенные классы, можно создавать строго типизированные коллекции для любого класса, в том числе и пользовательского. Это упрощает разработку программ и гарантирует использование нужного типа, а также может улучшить эффективность их выполнения. Обобщенные классы предоставляют все преимущества строго типизированных коллекций и могут работать с любыми используемыми типами. В табл. 7.1 перечислены наиболее используемые классы обобщенных коллекций и соответствующие им коллекции обычных типов. Обобщенный класс Соответствующие не обобщенные коллекции List Dictionary SortedList Queue Stack Перечислитель Наследует интерфейс IEnumerator, который является основным для всех перечислителей. Поддерживает простое перемещение по коллекции. Перечислитель позволяет считывать (только считывать!) информацию (данные) из коллекции. Перечислители не используются для изменения содержания коллекции. Для этого применяются специфические методы данной коллекции ( Enqueue, Dequeue, Push, Pop ). Вновь созданный перечислитель размещается перед первым элементом коллекции. Метод Reset возвращает перечислитель обратно в положение перед первым элементом коллекции. 2.10 Шаблоны классов и функций. Ограничения параметра типа. Nullable-типы.Шаблоны классов и функций. Ограничения параметра типа До настоящего момента обсуждались вопросы построения шаблонных классов на основе предопределенных (включенных в состав библиотеки классов) шаблонов классов. В этом разделе на простом примере обсуждается техника объявления собственных шаблонов классов и шаблонов функций. Эта дополнительная функциональность может накладывать дополнительные ограничения на подстановочный класс. Например, для успешной работы объекта шаблонного класса подстановочный класс должен наследовать определенному интерфейсу. Иначе функциональность шаблонного класса просто невозможно будет реализовать. Для формирования ограничений на подстановочные классы в C# используется механизм ограничителей параметров шаблона — он вводится при объявлении шаблона с помощью ключевого слова where, за которым могут располагаться имя параметра типа и список типов класса или интерфейса либо конструктор – ограничение new() Значение null по умолчанию могут принимать только объекты ссылочных типов. Однако в различных ситуациях бывает удобно, чтобы объекты числовых типов данных имели значение null, то есть были бы не определены. Стандартный пример - работа с базой данных, которая может содержать значения null. И мы можем заранее не знать, что мы получим из базы данных - какое-то определенное значение или же null. Для этого надо использовать знак вопроса ? после типа значений. Например: int? z = null; bool? enabled = null; Но фактически запись ? является упрощенной формой использования структуры System.Nullable Nullable Для всех типов Nullable определено два свойства: Value, которое представляет значение объекта, и HasValue, которое возвращает true, если объект Nullable хранит некоторое значение. 2.11 Совмещение управляемого и неуправляемого кодов. Управляемая библиотека.Программный код, выполняющийся под управлением CLR, называется управляемым кодом. Программный код, выполняющийся вне среды выполнения CLR, называется неуправляемым кодом. Примеры неуправляемого программного кода: функции Win32 API; компоненты COM; .NET появилась не на пустом месте. Вновь разрабатываемый управляемый код вынужден взаимодействовать с существующим неуправляемым программным кодом. Поэтому на платформе .NET предусмотрены различные сценарии установления взаимодействия между управляемым и неуправляемым кодами. Microsoft .NET Framework обеспечивает взаимодействие с компонентами COM, службами COM+, внешними библиотеками типов и многими службами операционной системы. CLR скрывает имеющиеся в управляемой и неуправляемой моделях различия. Проблемы, связанные с типами данных, механизмами обработки ошибок и т. д. в управляемой и неуправляемой моделях, решаются CLR "незаметно" как для вызывающей стороны (клиента), так и для вызываемой стороны (сервера). Таким образом, организация взаимодействия между управляемым и неуправляемым кодом выглядит проще, чем могло быть... Создание кода управляемой библиотеки тривиально. Для этого в Visual Studio предусмотрены специальные опции. Новый проект создается как библиотека классов (Class Library). Сборка автоматически получает расширение .dll. C# основывается на парадигме объектно-ориентированного программирования, поэтому библиотека классов представляет собой все то же объявление класса. Методы – члены класса составляют основу функциональности библиотеки. Наличие пары явно определяемых конструкторов – вынужденная мера. Это требование со стороны модуля на C++, использующего библиотеку. Там невозможно создать объект без явным образом объявленных конструкторов умолчания и копирования. 2.12 Потоки С#. Домен приложения. Именование потока. Callback-методы.При запуске приложения, написанного на C#, операционная система создает процесс, а среда CLR создает внутри этого процесса логический контейнер, который называется доменом приложения и внутри которого работает запущенное приложение. Для управления домена платформа .NET предоставляет класс AppDomain. Рассмотрим некоторые основные методы и свойства данного класса: Свойство BaseDirectory: базовый каталог, который используется для получения сборок (как правило, каталог самого приложения) Свойство CurrentDomain: домен текущего приложения Свойство FriendlyName: имя домена приложения Свойство SetupInformation: представляет объект AppDomainSetup и хранит конфигурацию домена приложения Метод ExecuteAssembly(): запускает сборку exe в рамках текущего домена приложения Метод GetAssemblies(): получает набор сборок .NET, загруженных в домен приложения Callback в чистом виде, это когда вы сформировали задачу и отправили её выполнять какому то там процессу, но не ждёте её завершения и продолжаете работать, а чтобы к вам мог вернутся результат работы, вы для воркера передаёте ссылку на свой класс с кастом в интерфейс калбека в котором обьявлен метод, при помощи которого воркер может вернуть данные. Вся работа происходит асинхронно без блокировок и ожиданий. В этом смысл калбеков, так как некоторые задачи могут идти долго, а некоторые быстро, но каллер не должен об этом заботиться, он просто предоставляет интерфейс для ответа и продолжает работу. Используя класс Thread, мы можем выделить в приложении несколько потоков, которые будут выполняться одновременно. Во-первых, для запуска нового потока нам надо определить задачу в приложении, которую будет выполнять данный поток. Для этого мы можем добавить новый метод, производящий какие-либо действия. Таким образом, в нашей программе будут работать одновременно главный поток, представленный методом Main, и второй поток. 2.13 Validating и Validated элементов управления. Делегат EventHandler. Класс ApplicationМодель событий в .NET Framework основана на наличии делегата события, соединяющего событие с его обработчиком. Для вызова события необходимы два элемента: Делегат, определяющий метод, который предоставляет ответ на событие. Делегат — это тип, определяющий сигнатуру, то есть тип возвращаемого значения и типы списка параметров для метода. Можно использовать тип делегата для объявления переменной, которая может ссылаться на любой метод с той же сигнатурой, что и делегат. Стандартная сигнатура делегата обработчика событий определяет метод, который не возвращает значение. Первый параметр этого метода имеет тип Object и ссылается на экземпляр, который вызывает событие. Второй параметр является производным от типа EventArgs и содержит данные события. Если событие не создает данные события, второй параметр — это просто значение EventArgs.Empty поля. В противном случае второй параметр является типом, производным от, EventArgs и предоставляет все поля или свойства, необходимые для хранения данных события. EventHandlerДелегат — это предопределенный делегат, который специально представляет метод обработчика событий для события, которое не создает данные. Если событие создает данные, необходимо использовать универсальный EventHandler Чтобы связать событие с методом, который будет выполнять обработку события, добавьте в событие экземпляр делегата. Обработчик событий вызывается всякий раз, когда происходит событие, если делегат не удален. Validate() Проверяет значение элемента управления, потерявшего фокус, путем запуска событий Validating и Validated в этом порядке. public bool Validate (); Возвращаемое значение Boolean Значение true, если проверка прошла успешно; в противном случае — значение false. При вызове из обработчиков событий Validating или Validated этот метод всегда будет возвращать значение false. ЗаключениеВ результате прохождения производственной практики в ТОО Kazakhmys Coal (казахмыс коал) я подкрепил полученные во время учебы теоретические навыки практическими. Познакомился с организацией, структурой и принципами функционирования предприятия. Развил коммуникативные навыки. Получил опыт работы в коллективе. Во время прохождения практики показал себя, как способного и ответственного студента. Вовремя справлялся с поставленными задачами. Индивидуальное задание, полученное на предприятии, было исполнено полностью и в срок. Во время прохождения практики расширил свои знания в области информационных систем, антивирусных программ, компьютерных сетей и др. Считаю необходимым и дальше расширять свои знания в области прикладного программного обеспечения в частности глубже изучить работу с C# и другими языками программирования. При прохождении производственной практики особо ценными оказались знания полученные при изучении таких предметов, как «Операционные системы» и «Алгоритмизация и программирование». Список использованной литературы1. Диева С .И. Шаваева А.Г. Организация и современные методы защиты информации. М.: Концерн "Банковский Деловой Центр", 1998г. 472с. 2. Завгородний В.И. Комплексная защита информации в компьютерных системах. М: Издательство "Гелиос АРВ", 2005г. 3. Мельников В.П., Клейменов СА., Петраков А.М. Информационная безопасность. I: Академия, 2005г. 332 с. 4. Степанов Е А., Корнеев И.К. Информационная безопасность и защита информации. №: ИНФРА-М, 2001г. 304 с. 5. Ярочкин В i. Система безопасности фирмы. М.: Издательство "Ось-89", 2003г. 352 с. 6. http/medial iwca.org Концепция проекта Закона Республики Казахстан «Об информаци и и защите информации» 7. Закон Респ> 5лики Казахстан от 19 декабря 2003 года № 508-П, справочная правовая система ЮРИСТ, 09.02.2006г. 8. Кураков Л.П., Смирнов С.Н. Информация как объект правовой защиты. - Москва, Гелиос 1998г. 9. Руководящий документ. “Автоматизированные системы. Защита от несанкционированного доступа к информации. Классификация автоматизированных систем и требования по защите информации”. Москва. Гостехкомиссия России. 1992 г. 10. Герасиме псо В А., Малюк А А. Основы защиты информации. Москва, 1998г. |