Программирование на языке высокого уровня C#
Покупка
Новинка
Тематика:
Программирование на C и C++
Издательство:
ИНТУИТ
Год издания: 2016
Кол-во страниц: 182
Дополнительно
Задача этого курса — кратко, доступно и строго изложить основы C#, одного из самых перспективных современных языков программирования. Курс предназначен для изучающих язык "с нуля”, но будет полезен и опытным программистам, желающим освоить новый язык, не тратя времени на увесистые переводные фолианты.
Курс начинается с краткого введения в платформу .NET, далее описываются простейшие средства языка C#: встроенные типы данных, управляющие конструкции, массивы и строки. Основным понятиям объектно-ориентированного программирования и их реализации в языке C# посвящена вторая половина курса. Читатель познакомится с основными элементами класса, с видами классов и их взаимоотношений. Описываются интерфейсы, делегаты, события, дается введение в структуры данных и основные коллекции библиотеки .NET. Изложение сопровождается простыми примерами. Описание языка соответствует версии C# 2.0 (2005).
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 01.03.02: Прикладная математика и информатика
- 02.03.02: Фундаментальная информатика и информационные технологии
- 03.03.02: Прикладная математика и информатика
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
- 11.03.02: Инфокоммуникационные технологии и системы связи
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Программирование на языке высокого уровня C# 2-е издание, исправленное Павловская Т.А. Национальный Открытый Университет “ИНТУИТ” 2016 2
Программирование на языке высокого уровня C#/ Т.А. Павловская - М.: Национальный Открытый Университет “ИНТУИТ”, 2016 Задача этого курса — кратко, доступно и строго изложить основы C#, одного из самых перспективных современных языков программирования. Курс предназначен для изучающих язык “с нуля”, но будет полезен и опытным программистам, желающим освоить новый язык, не тратя времени на увесистые переводные фолианты. Курс начинается с краткого введения в платформу .NET, далее описываются простейшие средства языка C#: встроенные типы данных, управляющие конструкции, массивы и строки. Основным понятиям объектно-ориентированного программирования и их реализации в языке C# посвящена вторая половина курса. Читатель познакомится с основными элементами класса, с видами классов и их взаимоотношений. Описываются интерфейсы, делегаты, события, дается введение в структуры данных и основные коллекции библиотеки .NET. Изложение сопровождается простыми примерами. Описание языка соответствует версии C# 2.0 (2005). (c) ООО “ИНТУИТ.РУ”, 2010-2016 (c) Павловская Т.А., 2010-2016 3
Начальные сведения Первое представление об основных понятиях объектно-ориентированного программирования, платформе .NET и входящей в ее состав среде разработки Visual Studio .NET. Предисловие Этот курс лекций построен на основе учебника автора “C#. Программирование на языке высокого уровня”, который выпускается издательством ПИТЕР с 2007 года. Учебник имеет гриф Министерства образования Российской федерации и удостоен в 2010 году премии Правительства Санкт-Петербурга “За выдающиеся достижения в сфере высшего и профессионального образования” в составе учебно-методического комплекса по языкам программирования. В этот комплекс входят также учебники и практикумы по языкам C/C++ и Паскаль, построенные по единому принципу. Соответствующие учебные курсы можно найти на этом сайте. В комплекс входит более 250 индивидуальных вариантов заданий на лабораторные работы в расчете на учебную группу из 20 человек (все варианты можно найти в учебнике [4]) и более 1000 тестовых вопросов. Преподавателям будут полезны презентации лекций. На сайте интернет-школы программирования ссылка: http://ips.ifmo.ru - http://ips.ifmo.ru можно проверить правильность выполнения некоторых лабораторных работ с помощью системы автоматического тестирования программ. Доброжелательную и конструктивную критику, а также предложения по улучшению курса направляйте автору по адресу pta-ipm@yandex.ru. Знакомство с платформой .NET и средой Visual Studio .NET Презентацию к данной лекции Вы можете скачать ссылка: здесь http://old.intuit.ru/department/pl/phlcsharp/1/csharp01.ppt. Совокупность средств, с помощью которых программы пишут, корректируют, преобразуют в машинные коды, отлаживают и запускают, называют средой разработки, или оболочкой. Среда разработки обычно содержит: текстовый редактор, предназначенный для ввода и корректировки текста программы; компилятор, с помощью которого программа переводится с языка, на котором она написана, в машинные коды; средства отладки и запуска программ ; общие библиотеки, содержащие многократно используемые элементы программ; справочную систему и другие элементы. Под платформой понимается нечто большее, чем среда разработки для одного языка. Платформа .NET (произносится “дотнет”) включает не только среду разработки для 4
нескольких языков программирования, называемую Visual Studio.NET, но и множество других средств, например, механизмы поддержки баз данных, электронной почты и коммерции. Среда разработки Visual Studio.NET предоставляет мощные и удобные средства написания, корректировки, компиляции, отладки и запуска приложений, использующих .NET-совместимые языки. Корпорация Microsoft включила в платформу средства разработки для четырех языков: C#, VB.NET, C++ и J#. Платформа .NET является открытой средой. Это значит, что компиляторы для нее могут поставляться и сторонними разработчиками. Для обеспечения переносимости компиляторы, входящие в состав платформы, переводят программу не в машинные коды, а в промежуточный язык (Common Intermediate Language, CIL, или просто IL), который не содержит команд, зависящих от языка, операционной системы и типа компьютера. Программа на этом языке выполняется не самостоятельно, а под управлением системы, которая называется общеязыковой средой выполнения (Common Language Runtime, CLR). Среда CLR может быть реализована для любой операционной системы. При выполнении программы CLR вызывает так называемый JIT-компилятор, переводящий код с языка IL в машинные команды конкретного процессора, которые немедленно выполняются. JIT означает “just in time”, что можно перевести как “вовремя”, то есть компилируются только те части программы, которые требуется выполнить в данный момент. Каждая часть программы компилируется один раз и сохраняется в кэше1) для дальнейшего использования. Компилятор в качестве результата своего выполнения создает так называемую сборку — файл с расширением exe или dll, который содержит код на языке IL и метаданные. Метаданные представляют собой сведения об объектах, используемых в программе, а также сведения о самой сборке. Они позволяют организовать межъязыковое взаимодействие, обеспечивают безопасность и облегчают развертывание приложений, то есть установку программ на компьютеры пользователей. Во время работы программы среда CLR следит за тем, чтобы выполнялись только разрешенные операции, осуществляет распределение и очистку памяти и обрабатывает возникающие ошибки. Это многократно повышает безопасность и надежность программ. Платформа .NET содержит огромную библиотеку классов, которые можно использовать при программировании на любом языке .NET. Подробное изучение библиотеки классов .NET — необходимая, но и наиболее трудоемкая задача программиста при освоении этой платформы. Библиотека классов вместе с CLR образуют каркас (framework), то есть основу платформы. Все .NET-совместимые языки должны отвечать требованиям общеязыковой спецификации (Common Language Specification, CLS), в которой описывается набор общих для всех языков характеристик. Это позволяет использовать для разработки приложения несколько языков программирования и вести полноценную 5
межъязыковую отладку. Все программы независимо от языка используют одни и те же базовые классы библиотеки .NET. Приложение в процессе разработки называется проектом. Проект объединяет все необходимое для создания приложения: файлы, папки, ссылки и прочие ресурсы. Среда Visual Studio.NET позволяет создавать проекты различных типов, например: Windows-приложение использует элементы интерфейса Windows, включая формы, кнопки, флажки и прочее; консольное приложение выполняет вывод “на консоль”, то есть в окно командного процессора; библиотека классов объединяет классы, которые предназначены для использования в других приложениях; веб-приложение — это приложение, доступ к которому выполняется через браузер (например, Internet Explorer) и которое по запросу формирует вебстраницу и отправляет ее клиенту по сети; Несколько проектов можно объединить в решение (solution). Это облегчает совместную разработку проектов Платформа .NET рассчитана на объектно-ориентированную технологию создания программ, поэтому прежде чем начинать изучение языка C#, необходимо познакомиться с основными понятиями объектно-ориентированного программирования (ООП). Введение в объектно-ориентированное программирование Принципы ООП проще всего понять на примере программ моделирования. В реальном мире каждый предмет или процесс обладает набором статических и динамических характеристик, иными словами, свойствами и поведением. Поведение объекта зависит от его состояния и внешних воздействий. Например, объект “автомобиль” никуда не поедет, если в баке нет бензина, а если повернуть руль, изменится положение колес. Понятие объекта в программе совпадает с обыденным смыслом этого слова: объект представляется как совокупность данных, характеризующих его состояние, и функций их обработки, моделирующих его поведение. Вызов функции на выполнение часто называют посылкой сообщения объекту. Например, вызов функции “повернуть руль” интерпретируется как посылка сообщения “автомобиль, поверни руль!”. При создании объектно-ориентированной программы предметная область представляется в виде совокупности объектов. Выполнение программы состоит в том, что объекты обмениваются сообщениями. Это позволяет использовать при программировании понятия, более адекватно отражающие предметную область. При представлении реального объекта с помощью программного необходимо выделить в первом его существенные особенности. Их список зависит от цели моделирования. Например, объект “крыса” с точки зрения биолога, изучающего миграции, ветеринара 6
или, скажем, повара будет иметь совершенно разные характеристики. Выделение существенных с той или иной точки зрения свойств называется абстрагированием. Таким образом, программный объект — это абстракция. Важным свойством объекта является его обособленность. Детали реализации объекта, то есть внутренние структуры данных и алгоритмы их обработки, скрыты от пользователя объекта и недоступны для непреднамеренных изменений. Объект используется через его интерфейс — совокупность правил доступа. Скрытие деталей реализации называется инкапсуляцией (от слова “капсула”). Ничего сложного в этом понятии нет: ведь и в обычной жизни мы пользуемся объектами через их интерфейсы. Сколько информации пришлось бы держать в голове, если бы для просмотра новостей надо было знать устройство телевизора! Таким образом, объект является “черным ящиком”, замкнутым по отношению к внешнему миру. Это позволяет представить программу в укрупненном виде — на уровне объектов и их взаимосвязей, а следовательно, управлять большим объемом информации и успешно отлаживать сложные программы. Сказанное можно сформулировать более кратко и строго: объект — это инкапсулированная абстракция с четко определенным интерфейсом. Инкапсуляция позволяет изменить реализацию объекта без модификации основной части программы, если его интерфейс остался прежним. Простота модификации является очень важным критерием качества программы: ведь любой программный продукт в течение своего жизненного цикла претерпевает множество изменений и дополнений. Кроме того, инкапсуляция позволяет использовать объект в другом окружении и быть уверенным, что он не испортит не принадлежащие ему области памяти, а также создавать библиотеки объектов для применения во многих программах. Инкапсуляция наряду с наследованием и полиморфизмом считаются тремя “китами”, на которых стоит ООП. Каждый год в мире пишется огромное количество новых программ, и важнейшее значение приобретает возможность многократного использования кода. Преимущество объектно-ориентированного программирования состоит в том, что для объекта можно определить наследников, корректирующих или дополняющих его поведение. При этом нет необходимости не только повторять исходный код родительского объекта, но даже иметь к нему доступ. Наследование является мощнейшим инструментом ООП и применяется для следующих взаимосвязанных целей: исключения из программы повторяющихся фрагментов кода; упрощения модификации программы; упрощения создания новых программ на основе существующих. 7
Кроме того, только благодаря наследованию появляется возможность использовать объекты, исходный код которых недоступен, но в которые требуется внести изменения. Наследование позволяет создавать иерархии объектов. Иерархия представляется в виде дерева, в котором более общие объекты располагаются ближе к корню, а более специализированные — на ветвях и листьях. Наследование облегчает использование библиотек объектов, поскольку программист может взять за основу объекты, разработанные кем-то другим, и создать наследников с требуемыми свойствами. Объект, на основании которого строится новый объект, называется родительским объектом, объектом-предком, базовым классом, или суперклассом, а унаследованный от него объект — потомком, подклассом, или производным классом. ООП позволяет писать гибкие, расширяемые и читабельные программы. Во многом это обеспечивается благодаря полиморфизму, под которым понимается возможность во время выполнения программы с помощью одного и того же имени выполнять разные действия или обращаться к объектам разного типа. Чаще всего понятие полиморфизма связывают с механизмом виртуальных методов. Подводя итог сказанному, сформулирую достоинства ООП: использование при программировании понятий, близких к предметной области; возможность успешно управлять большими объемами исходного кода благодаря инкапсуляции, то есть скрытию деталей реализации объектов и упрощению структуры программы; возможность многократного использования кода за счет наследования; сравнительно простая возможность модификации программ; возможность создания и использования библиотек объектов. Эти преимущества особенно явно проявляются при разработке программ большого объема и классов программ. Однако ничто не дается даром: создание объектноориентированной программы представляет собой весьма непростую задачу. Чтобы эффективно использовать готовые объекты из библиотек, необходимо освоить большой объем достаточно сложной информации. Неграмотное же применение ООП способно привести к созданию излишне сложных программ, которые невозможно отлаживать и усовершенствовать. Понятие класса Для представления объектов в языках C#, Java, С++, Delphi и т. п. используется понятие класс, аналогичное обыденному смыслу этого слова в контексте “класс членистоногих”, “класс млекопитающих”, “класс задач” и т. п. Класс является обобщенным понятием, определяющим характеристики и поведение некоторого множества конкретных объектов этого класса, называемых экземплярами класса. “Классический” класс содержит данные, задающие свойства объектов класса, и функции, определяющие их поведение. В последнее время в класс часто добавляется 8
третья составляющая — события, на которые может реагировать объект класса2). Все классы библиотеки .NET, а также все классы, которые создает программист в среде .NET, имеют одного общего предка — класс object, и организованы в единую иерархическую структуру. Внутри нее классы логически сгруппированы в так называемые пространства имен, которые служат для упорядочивания имен классов и предотвращения конфликтов имен: в разных пространствах имена могут совпадать. Пространства имен могут быть вложенными, их идея аналогична знакомой вам иерархической структуре каталогов на компьютере. Любая программа, создаваемая в .NET, использует пространство имен System. В нем определены классы, которые обеспечивают базовую функциональность, например, поддерживают выполнение математических операций, управление памятью и вводвывод. Обычно в одно пространство имен объединяют взаимосвязанные классы. Например,пространство System.Net содержит классы, относящиеся к передаче данных по сети, System.Windows.Forms — элементы графического интерфейса пользователя, такие как формы, кнопки и т. д. Имя каждого пространства имен представляет собой неделимую сущность, однозначно его определяющую. Последнее, о чем необходимо поговорить, прежде чем начать последовательное изучение языка C#, — как создать простейшее приложение в среде Visual Studio.NET. Для того чтобы изучать именно язык программирования, а не сопутствующую информацию, мы будем работать с консольными приложениями. При запуске консольного приложения операционная система создает так называемое консольное окно, через которое идет весь ввод-вывод программы. Внешне это напоминает работу в операционной системе в режиме командной строки, когда ввод-вывод представляет собой поток символов. Простейшие приемы работы в среде Для создания проекта следует после запуска Visual Studio.NET в главном меню выбрать команду File New Project…. В левой части открывшегося диалогового окна нужно выбрать пункт Visual C# Projects, в правой — пункт Console Application. В поле Name можно ввести имя проекта, а в поле Location — место его сохранения на диске, если заданные по умолчанию значения вас не устраивают. После щелчка на кнопке OK среда создаст решение и проект с указанным именем. Примерный вид экрана приведен на рис. 1.1. 9
Рис. 1.1. Примерный вид экрана после создания проекта консольного приложения В верхней части экрана располагается главное меню (с разделами File, Edit, View и т. д.) и панели инструментов (toolbars). В верхней левой части экрана располагается окно управления проектом Solution Explorer (если оно не отображается, следует воспользоваться командой View Solution Explorer главного меню). В окне перечислены все ресурсы, входящие в проект. В этом же окне можно увидеть и другую информацию, если перейти на вкладку Class View, ярлычок которой находится в нижней части окна. На вкладке Class View представлен список всех классов, входящих в приложение, их элементов и предков. В нижней левой части экрана расположено окно свойств Properties (если окна не видно, воспользуйтесь командой View Properties главного меню). В окне свойств отображаются важнейшие характеристики выделенного элемента. Например, чтобы изменить имя файла, в котором хранится класс Class1, надо выделить этот файл в окне управления проектом и задать в окне свойств новое значение свойства FileName (ввод заканчивается нажатием клавиши Enter ). Основное пространство экрана занимает окно редактора, в котором располагается текст программы, созданный средой автоматически. Текст представляет собой каркас, в который программист добавляет код по мере необходимости. Слева от текста находятся символы структуры: щелкнув на любом квадратике с 10