Теория и задания по Си-Шарп (КФУ). Учебное пособие казань 2017 2 удк 681 06 ббк 32. 973 Печатается по постановлению Редакционноиздательского совета
Скачать 0.7 Mb.
|
КАЗАНСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ И.Л. Александрова, Д.Н. Тумаков ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ C# Учебное пособие КАЗАНЬ 2017 2 УДК 681.3.06 ББК 32.973 Печатается по постановлению Редакционно-издательского совета ФГАОУВПО «Казанский (Приволжский) федеральный университет» Научный редактор доктор физ.-мат. наук, проф. Н. Б. Плещинский Рецензенты кандидат физ.-мат.наук, доцент И.Е. Плещинская кандидат физ.-мат.наук, доцент Е.В. Рунг Александрова И.Л. Программирование на языке C#. Учебное пособие / И.Л. Александрова, Д.Н. Тумаков. – Издание 2-ое, исправленное и дополненное. – Казань: Казанский государственный университет, 2017. – 112 с. ISBN В курсе описаны основные возможности платформы .NET Framework. Показана структура программ на языке C#, возможности отладки и запуска консольных приложений. Рассмотрены основные типы данных и преобразования между ними. Изучены основные операторы языка программирования, в том числе, оператор обработки исключительных ситуаций. Рассмотрены синтаксис описания методов и способы передачи параметров между основной подпрограммой и методом. Объяснены основные концепции объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Показано, как работать со ссылочными типами данных, обсуждена работа сборщика мусора. Изучены предопределенные платформой классы. Объяснено, что такое индексаторы и атрибуты. Отдельные главы посвящены работе с событиями и делегатами, свойствами и перегруженными операторами. Пособие предназначено для бакалавров и магистрантов ВУЗов, специализирующихся в области программирования. © Казанский университет, 2017 © Александрова И.Л., Тумаков Д.Н., 2017 ISBN 3 ОГЛАВЛЕНИЕ ОГЛАВЛЕНИЕ ................................................................................................................................. 3 ВВЕДЕНИЕ ....................................................................................................................................... 6 ГЛАВА 1. ОБЗОР ПЛАТФОРМЫ MS.NET ................................................................................ 7 Общеязыковая среда выполнения .............................................................................................................. 8 Языки MS.NET Framework ......................................................................................................................... 9 ГЛАВА 2. ОБЗОР ЯЗЫКА С# ...................................................................................................... 11 Структура программы на С# .................................................................................................................... 11 Основные операции ввода/вывода ........................................................................................................... 12 Рекомендации по оформлению кода........................................................................................................ 13 Лабораторная работа ................................................................................................................................. 14 ГЛАВА 3. ИСПОЛЬЗОВАНИЕ СТРУКТУРНЫХ ПЕРЕМЕННЫХ ................................... 16 Общая система типов (Common Type System) ........................................................................................ 16 Использование встроенных типов данных ............................................................................................. 18 Пользовательские типы данных ............................................................................................................... 19 Преобразование типов .............................................................................................................................. 19 Лабораторная работа ................................................................................................................................. 21 ГЛАВА 4. ОПЕРАТОРЫ И ИСКЛЮЧЕНИЯ .......................................................................... 22 Операторы в С#.......................................................................................................................................... 22 Обработка исключений ............................................................................................................................. 25 Лабораторная работа ................................................................................................................................. 28 ГЛАВА 5. МЕТОДЫ И ПАРАМЕТРЫ ...................................................................................... 29 Использование методов ............................................................................................................................ 29 Использование параметров ....................................................................................................................... 30 Перегрузка методов ................................................................................................................................... 33 Лабораторная работа ................................................................................................................................. 36 ГЛАВА 6. МАССИВЫ И КОЛЛЕКЦИИ................................................................................... 37 Массивы ..................................................................................................................................................... 37 4 Списки – List Двухсвязные списки – LinkedList Словари – Dictionary Лабораторная работа ................................................................................................................................. 46 ГЛАВА 7. ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ48 Классы и объекты ...................................................................................................................................... 48 Инкапсуляция данных ............................................................................................................................... 49 Наследование и полиморфизм ................................................................................................................. 53 Лабораторная работа ................................................................................................................................. 54 ГЛАВА 8. ИСПОЛЬЗОВАНИЕ ССЫЛОЧНЫХ ТИПОВ ДАННЫХ .................................. 56 Reflection (рефлексия) ............................................................................................................................... 59 Пространства имен .................................................................................................................................... 59 Приведение типов данных ........................................................................................................................ 60 Лабораторная работа ................................................................................................................................. 63 ГЛАВА 9. СОЗДАНИЕ И УДАЛЕНИЕ ОБЪЕКТОВ .............................................................. 65 Использование конструкторов ................................................................................................................. 65 Уничтожение объектов ............................................................................................................................. 69 Лабораторная работа ................................................................................................................................. 74 ГЛАВА 10. НАСЛЕДОВАНИЕ В С# .......................................................................................... 76 Использование интерфейсов .................................................................................................................... 79 Использование абстрактных классов....................................................................................................... 81 Лабораторная работа ................................................................................................................................. 82 ГЛАВА 11. АГРЕГАЦИИ, ПРОСТРАНСТВА ИМЕН, СБОРКИ И МОДУЛИ ................. 84 Использование внутренних (internal) классов, методов и данных........................................................ 84 Использование агрегаций ......................................................................................................................... 85 Фабрики классов ........................................................................................................................................ 86 Пространства имен .................................................................................................................................... 87 Модули и сборки ....................................................................................................................................... 90 5 Лабораторная работа ................................................................................................................................. 92 ГЛАВА 12. ОПЕРАЦИИ, ДЕЛЕГАТЫ, СОБЫТИЯ ............................................................... 94 Операции .................................................................................................................................................... 94 Создание и использование делегатов ...................................................................................................... 96 События ...................................................................................................................................................... 97 Лабораторная работа ............................................................................................................................... 100 ГЛАВА 13. СВОЙСТВА И ИНДЕКСАТОРЫ ........................................................................ 102 Свойства ................................................................................................................................................... 102 Индексаторы ............................................................................................................................................ 103 Лабораторная работа ............................................................................................................................... 104 ГЛАВА 14. АТРИБУТЫ ............................................................................................................. 106 Пользовательские атрибуты ................................................................................................................... 108 Лабораторная работа ............................................................................................................................... 110 6 ВВЕДЕНИЕ На сегодняшний момент язык программирования C#, вместе с Java и C++, один из самых мощных, быстро развивающихся и востребованных языков в ИТ-отрасли. В настоящий момент на нем пишутся самые различные приложения. По сравнению со многими другими распространенными языками C# – достаточно молодой. Первая версия языка вышла вместе с релизом Microsoft Visual Studio .NET в феврале 2002 года. Текущей версией языка является версия C# 7.0, которая вышла в 7 марта 2017 года вместе с Visual Studio 2017. C# является языком с Си-подобным синтаксисом и близок в этом отношении к C++ и Java. Поэтому, овладеть C# существенно легче, если есть навыки работы на C++ или Java. C# является объектно-ориентированным и поддерживает полиморфизм, наследование, перегрузку операторов, статическую типизацию. Объектно- ориентированный подход позволяет решить задачи по построению крупных, но в тоже время гибких, масштабируемых и расширяемых приложений. C# в настоящий момент активно развивается, и с каждой новой версией появляется все больше интересных функциональностей, такие как лямбда-выражения, динамическое связывание, асинхронные методы и т.д. В настоящем пособии описаны основные возможности платформы .NET Framew ork. Показана структура программ на языке C#, возможности отладки и запуска консольных приложений. Рассмотрены основные типы данных и преобразования между ними. Изучены основные операторы языка программирования, в том числе, оператор обработки исключительных ситуаций. Рассмотрены синтаксис описания методов и способы передачи параметров между основной подпрограммой и методом. Объяснены основные концепции объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Показано, как работать со ссылочными типами данных, обсуждена работа сборщика мусора. Изучены предопределенные платформой классы. Объяснено, что такое индексаторы и атрибуты. Отдельные главы посвящены работе с событиями и делегатами, свойствами и перегруженными операторами. Во втором издании исправлены незначительные ошибки и добавлено рассмотрение работы с обобщенными коллекциями. 7 ГЛАВА 1. ОБЗОР ПЛАТФОРМЫ MS.NET Microsoft®.NET Framework – платформа для создания windows приложений и распределенных web-приложений. .NET Framework содержит классы, интерфейсы и типы данных, которые облегчают и оптимизируют процесс разработки, а также обеспечивают доступ к функциям системы. Для упрощения взаимодействия между языками большинство типов платформы .NET Framework являются CLS-совместимыми, и поэтому их можно использовать в любом языке программирования, компилятор которого соответствует спецификации CLS. Инструменты платформы .NET Framework представляют собой основу для создания элементов управления, компонентов и приложений .NET. .NET Framework содержит инструменты, предназначенные для следующих задач: • представление базовых типов данных и исключений; • инкапсуляция структур данных; • операции ввода-вывода; • доступ к сведениям о загруженных типах; • вызов проверок безопасности .NET Framework; • доступ к данным, предоставление графического пользовательского интерфейса на стороне клиента и управляемого сервером графического пользовательского интерфейса на стороне клиента. .NET Framework предлагает расширенный набор интерфейсов, а также абстрактных и конкретных (неабстрактных) классов. Можно использовать существующие конкретные классы, кроме того, во многих случаях на их основе можно создавать собственные производные классы. Приложению .NET через предопределенные классы в .NET Framework доступны все сервисы Windows: IIS, WMI, Component services, Message Queuing. Перечислим некоторые компоненты платформы .NET Framework: • Common Language Runtime (CLR) - общеязыковая среда выполнения – упрощает разработку приложений, поддерживает различные языки, обеспечивает безопасное выполнение кода, контролирует ресурсы. • Библиотека классов – содержит большое количество классов, с возможностью расширения под нужды разработчика. • ADO.NET – обеспечивает поддержку работы с базами данных и XML. • ASP.NET – инструмент для разработки web-приложений. 8 • XML Web сервисы – программируемые web компоненты, которые доступны различным приложениям. Платформа MS.NET предоставляет следующие возможности: • Поддержка всех web стандартов, таких как HTML, XML, SOAP, XSLT, XML Path Language и других. Создание и поддержка XML Web сервисов. • Одинаковая среда для всех языков программирования. • Легкое использование при разработке, все классы собраны в иерархические пространства имен, поддержка общей системы типов. • Легко расширяемые классы – иерархия классов не скрыта от разработчика. Разработчик может разрабатывать свои собственные классы на основе имеющихся. Общеязыковая среда выполнения Общеязыковая среда выполнения упрощает разработку приложений, обеспечивает правильное и безопасное выполнение, поддерживает несколько языков программирования и следит за ресурсами. Эта среда также называется управляемой средой, она управляет памятью, потоками, организует удаленное взаимодействие. В среде CLR автоматически работает ряд сервисов: • Загрузчик классов – управляет метаданными, загружает и располагает классы в памяти. • Перевод из промежуточного языка MSIL в машинные коды во время выполнении (Just-in-time). • Сборщик мусора – следит за неиспользуемыми объектами. При выходе из области видимости объектов и недостатке памяти сборщик очищает их. • Ядро отладки – позволяет отлаживать и трассировать код. • Проверка типов – не допускает опасных преобразований типов. • Обработка исключений – структурированная система классов исключений, интегрированная с Windows. • Поддержка COM-объектов. • Поддержка базовых классов интегрированных в среду. • Служба безопасности. 9 Библиотека классов .NET Framework увеличивает мощность среды выполнения и обеспечивает высокоуровневые сервисы, необходимые при программировании. Библиотека классов разбита на иерархию пространств имен. Представим некоторые из них: Пространство имен System содержит фундаментальные классы и определяет наиболее часто используемые типы данных, события, интерфейсы, атрибуты и исключения. Также, классы преобразования данных, манипуляций с параметрами . System.Collections содержит списки, хэш-таблицы и другие виды группировки данных. ADO.NET – следующее поколение технологии ADO, обеспечивает расширенную поддержку отсоединенной программной модели БД, поддерживает работу с XML.Классы для работы с ADO.NET находятся в System.Data, с XML – в пространстве имен System.XML. ASP.NET – программная структура, основанная на среде выполнения, работающей на сервере, которая позволяет создавать мощные Web приложения. Классы расположены в System.Web. Обеспечивается поддержка XML Web сервисов, необходимых для распределенной разработки. Пространство имен System.Windows.Forms используется для создания windows интерфейса. В нем содержится большое количество функций, ранее доступных только в API. Пространство имен System.Drawing обеспечивает доступ к графике GDI+. Языки MS.NET Framework MS.NET Framework поддерживает множество языков программирования, всего порядка двадцати, рассмотрим некоторые из них: C# разработан для платформы .NET, это первый современный объектно- ориентированный язык из семейства C и C++. Его основные свойства – это классы, интерфейсы, делегаты, пространства имен, свойства, индексаторы и т.д. Нет необходимости в заголовочном файле. Расширение управляемого С++ – минимальное расширение C++. Обеспечен доступ к возможностям платформы .NET Framework, включая сборщик мусора, наследование только от одного класса и т.д. 10 Visual Basic .NET улучшен по сравнению с предыдущей версией, добавлены наследование, конструкторы, полиморфизм, перегрузка конструкторов и т.д. JScript.NET полностью переписан для поддержки среды .NET, включает поддержку классов, наследования, типов и компиляции. Visual J#.NET – инструмент разработки для Java-программистов, желающих создавать приложения и сервисы в среде .NET. Имеется возможность автоматически обновлять существующие проекты Visual J++ 6.0 в решения Visual Studio .NET. Сторонние языки – некоторые языки программирования также поддерживаются платформой .NET: APL, COBOL, Pascal, Oberon, Perl, Python и SmallTalk. Вопросы к разделу 1. Что такое платформа MS.NET? Каковы её преимущества? 2. Перечислите основные понятия платформы .NET. 3. Охарактеризуйте компоненты MS.NET Framework. 4. Что такое общеязыковая среда выполнения? Какие ее основные сервисы? 5. Перечислите основные классы библиотеки .NET Framework. 11 |