Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Программирование на языке высокого уровня C#

Покупка
Новинка
Артикул: 834487.01.99
Доступ онлайн
1 000 ₽
В корзину
Задача этого курса — кратко, доступно и строго изложить основы C#, одного из самых перспективных современных языков программирования. Курс предназначен для изучающих язык "с нуля”, но будет полезен и опытным программистам, желающим освоить новый язык, не тратя времени на увесистые переводные фолианты. Курс начинается с краткого введения в платформу .NET, далее описываются простейшие средства языка C#: встроенные типы данных, управляющие конструкции, массивы и строки. Основным понятиям объектно-ориентированного программирования и их реализации в языке C# посвящена вторая половина курса. Читатель познакомится с основными элементами класса, с видами классов и их взаимоотношений. Описываются интерфейсы, делегаты, события, дается введение в структуры данных и основные коллекции библиотеки .NET. Изложение сопровождается простыми примерами. Описание языка соответствует версии C# 2.0 (2005).
Павловская, Т. А. Программирование на языке высокого уровня C# : краткий курс / Т. А. Павловская. - Москва : ИНТУИТ, 2016. - 182 с. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2156687 (дата обращения: 28.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов

                                    
Программирование на языке высокого уровня 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

Доступ онлайн
1 000 ₽
В корзину