C# Программирование на языке высокого уровня. Среда разработки Microsoft Visual Studio.NET

методичка

ВВЕДЕНИЕ.

Платформа .NET

Программист пишет программу, компьютер ее выполняет. Программа создается на языке, понятном человеку, а компьютер умеет исполнять только программы, написанные на его языке - в машинных кодах.

Совокупность средств, с помощью которых программы пишут, корректируют, преобразуют в машинные коды, отлаживают и запускают, называют средой разработки. Среда разработки обычно содержит:

• текстовый редактор, предназначенный для ввода и корректировки текста программы;

• компилятор, с помощью которого программа переводится с языка, на котором она написана, в машинные коды;

• средства отладки и запуска программ;

• общие библиотеки, содержащие многократно используемые элементы программ;

• справочную систему и другие элементы.

Платформа .NET (произносится «дот нэт») включает не только среду разработки для нескольких языков программирования, называемую Visual Studio.NET, но и множество других средств, например, механизмы поддержки баз данных, электронной почты и коммерции необходимых для интенсификации труда программиста.

Важнейшими задачами при создании программ в настоящее время становятся:

• переносимость - возможность выполнения на различных типах компьютеров;

• безопасность - невозможность несанкционированных действий;

• надежность - способность выполнять необходимые действия в определённых условиях.

• использование готовых компонентов - для ускорения разработки;

• межъязыковое взаимодействие - возможность применять одновременно несколько языков программирования. Платформа .NET позволяет успешно решать все эти задачи.

Для обеспечения переносимости компиляторы, входящие в состав платформы, переводят программу не в машинные коды, а в промежуточный язык MSIL (Microsoft Intermediate Language), или просто IL), который не содержит команд, зависящих от языка, операционной системы и типа компьютера. Программа на этом языке выполняется не самостоятельно, а под управлением системы, которая называется общеязыковой средой выполнения (Common Language Runtime, CLR).

Среда CLR может быть реализована для любой операционной системы. При выполнении программы CLR вызывает так называемый JIT-компилятор, переводящий код с языка IL в машинные команды конкретного процессора, которые немедленно выполняются. JIT означает «just in time», что можно перевести как «во время», то есть компилируются только те части программы, которые требуется выполнить в данный момент. Каждая часть программы компилируется один раз и сохраняется в памяти для дальнейшего использования.

Схема выполнения программы при использовании платформы .NET приведена на рис. 1.

Размещено на http://www.allbest.ru/

Рис. 1. Схема выполнения программы в .NET

Компилятор в качестве результата своего выполнения создает так называемую сборку - файл с расширением ехе или dll, который содержит код на языке IL и метаданные. Метаданные представляют собой сведения об объектах, используемых в программе, а также сведения о самой сборке. Они позволяют организовать межъязыковое взаимодействие, обеспечивают безопасность и облегчают развертывание приложений, то есть установку программ на компьютеры пользователей.

Во время работы программы среда CLR следит за тем, чтобы выполнялись только разрешенные операции, осуществляет распределение и очистку памяти и обрабатывает возникающие ошибки. Это многократно повышает безопасность и надежность программ.

Платформа .NET содержит огромную библиотеку классов, которые можно использовать при программировании на любом языке .NET. Её изучение - трудоёмкая, но необходимая задача.

Платформа .NET рассчитана на объектно-ориентированную технологию создания программ, поэтому прежде чем начинать изучение языка С#, необходимо познакомиться с основными понятиями объектно-ориентированного программирования (ООП).

Принципы ООП проще всего понять на примере программ моделирования. В реальном мире каждый предмет или процесс обладает набором статических и динамических характеристик, иными словами, свойствами и поведением. Поведение объекта зависит от его состояния и внешних воздействий. Например, объект «автомобиль» никуда не поедет, если в баке нет бензина, а если повернуть руль, изменится положение колес. Объект представляется как совокупность данных, характеризующих его состояние, и функций их обработки, моделирующих его поведение. Вызов функции на выполнение часто называют посылкой сообщения объекту.

При создании объектно-ориентированной программы предметная область представляется в виде совокупности объектов. Выполнение программы состоит в том, что объекты обмениваются сообщениями. Это позволяет использовать при программировании понятия, более адекватно отражающие предметную область.

Для моделирования реального объекта с помощью программного обеспечения выделяют его существенные особенности. Их набор зависит от цели моделирования. Выделение существенных с той или иной точки зрения свойств называется абстрагированием. Таким образом, программный объект - это абстракция.

Важным свойством объекта является его обособленность. Детали реализации объекта, то есть внутренние структуры данных и алгоритмы их обработки, скрыты от пользователя объекта и недоступны для непреднамеренных изменений. Объект используется через его интерфейс - совокупность правил доступа.

Скрытие деталей реализации называется инкапсуляцией (от слова «капсула»). Таким образом, объект является «черным ящиком», замкнутым по отношению к внешнему миру. Это позволяет представить программу в укрупненном виде - на уровне объектов и их взаимосвязей, а следовательно, управлять большим объемом информации и успешно отлаживать сложные программы.

Сказанное можно сформулировать более кратко и строго: объект - это инкапсулированная абстракция с четко определенным интерфейсом.

Инкапсуляция позволяет изменить реализацию объекта без модификации основной части программы, если его интерфейс остался прежним. Простота модификации является очень важным критерием качества программы, ведь любой программный продукт в течение своего жизненного цикла претерпевает множество изменений и дополнений. Кроме того, инкапсуляция позволяет использовать объект в другом окружении и быть уверенным, что он не испортит не принадлежащие ему области памяти, а также создавать библиотеки объектов для применения во многих программах.

В мире пишется огромное количество новых программ, и важнейшее значение приобретает возможность многократного использования кода. Преимущество объектно-ориентированного программирования состоит в том, что для объекта можно определить наследников, корректирующих или дополняющих его поведение. При этом нет необходимости не только повторять исходный код родительского объекта, но даже иметь к нему доступ.

Наследование является мощнейшим инструментом ООП и применяется для следующих взаимосвязанных целей:

• исключения из программы повторяющихся фрагментов кода;

• упрощения модификации программы;

• упрощения создания новых программ на основе существующих.

Благодаря наследованию появляется возможность использовать объекты, исходный код которых недоступен, но в которые требуется внести изменения. Наследование позволяет создавать иерархии объектов. Иерархия представляется в виде дерева, в котором более общие объекты располагаются ближе к корню, а более специализированные - на ветвях и листьях. Наследование облегчает использование библиотек объектов, поскольку программист может взять за основу объекты, разработанные кем-то другим, и создать наследников с требуемыми свойствами.

Объект, на основании которого строится новый объект, называется родительским объектом, объектом-предком, базовым классом, или суперклассом, а унаследованный от него объект - потомком, подклассом, или производным классом.

ООП позволяет писать гибкие, расширяемые и читабельные программы. Во многом это обеспечивается благодаря полиморфизму, под которым понимается возможность во время выполнения программы с помощью одного и того же имени выполнять разные действия или обращаться к объектам разного типа.

Итак, объект это «инкапсуляция множества операций (методов), доступных для внешних вызовов, и состояния, запоминающего результаты выполнения указанных операций».

Достоинства ООП:

• использование при программировании понятий, близких к предметной области;

• возможность успешно управлять большими объемами исходного кода благодаря инкапсуляции, то есть скрытию деталей реализации объектов и упрощению структуры программы;

• возможность многократного использования кода за счет наследования;

• сравнительно простая возможность модификации программ;

• возможность создания и использования библиотек объектов.

Однако создание объектно-ориентированной программы представляет собой весьма непростую задачу, поскольку требует разработки иерархии объектов, а плохо спроектированная иерархия может свести к нулю все преимущества объектно-ориентированного подхода. Кроме того, идеи ООП не просты для понимания и в особенности для практического применения. Чтобы эффективно использовать готовые объекты из библиотек, необходимо освоить большой объем достаточно сложной информации. Неграмотное же применение ООП способно привести к созданию излишне сложных программ, которые невозможно отлаживать и усовершенствовать.

Для представления объектов в языках С#, Java, С++, Delphi и др. используется понятие класс, аналогичное обыденному смыслу этого слова в контексте «класс членистоногих», «класс млекопитающих», «класс задач» и т. п. Класс является обобщенным понятием, определяющим характеристики и поведение некоторого множества конкретных объектов этого класса, называемых экземплярами класса. В последнее время в класс часто добавляется третья составляющая - события, на которые может реагировать объект класса.

Все классы библиотеки .NET, а также все классы, которые создает программист в среде .NET, имеют одного общего предка - класс object и организованы в единую иерархическую структуру. Внутри нее классы логически сгруппированы в так называемые пространства имен, которые служат для упорядочивания имен. Пространства имен могут быть вложенными, их идея аналогична знакомой вам иерархической структуре каталогов на компьютере.

Обычно в одно пространство имен объединяют взаимосвязанные классы. Например, пространство System.Net содержит классы, относящиеся к передаче данных по сети, System.Windows . Forms - элементы графического интерфейса пользователя, такие как формы, кнопки и т. д. Имя каждого пространства имен представляет собой неделимую сущность, однозначно его определяющую.

Среда Visual Studio.NET

Среда разработки Visual Studio.NET предоставляет мощные и удобные средства написания, корректировки, компиляции, отладки и запуска приложений, использующих .NET-совместимые языки. Корпорация Microsoft включила в платформу средства разработки для четырех языков: С#, VB.NET, С++ и J#.

Платформа .NET является открытой средой. Это значит, что компиляторы для нее могут поставляться и сторонними разработчиками. К настоящему времени разработаны десятки компиляторов для .NET, например, Ada, COBOL, Delphi, Eiffel, Fortran, Lisp, Obe- ron, Perl и Python.

Приложение в процессе разработки называется проектом. Проект объединяет все необходимое для создания приложения: файлы, папки, ссылки и прочие ресурсы. Среда Visual Studio.NET позволяет создавать проекты различных типов, например:

• Windows-приложение использует элементы интерфейса Windows, включая формы, кнопки, флажки и пр.;

• консольное приложение выполняет вывод «на консоль», то есть в окно командного процессора;

• библиотека классов объединяет классы, которые предназначены для использования в других приложениях;

• веб-сервис - компонент, методы которого могут вызываться через Интернет.

Консольные приложения наилучшим образом подходят для изучения языка, так как в них не используется множество стандартных объектов, необходимых для создания графического интерфейса.

Знакомство со средой Microsoft Visual Studio 2010 (язык С#).

Microsoft Visual Studio 2010 доступна в следующих вариантах:

• Express - бесплатная среда разработки, включающая только базовый набор возможностей и библиотек;

• Professional - поставка, ориентированная на профессиональное создание программного обеспечения, и командную разработку, при которой созданием программы одновременно занимаются несколько человек;

• Premium - издание, включающее дополнительные инструменты для работы и исходным кодом программ и создания баз данных;

• Ultimate - наиболее полное издание Visual Studio, включающие все доступные инструменты для написания, тестирования, отладки и анализа программ, а также дополнительные инструменты для работы с базами данных и проектирования архитектуры ПО.

Отличительной особенностью среды Microsoft Visual Studio 2010 является то, что она поддерживает работу с несколькими языками программирования и программными платформами. Поэтому, перед тем, как начать создание программы на языке С#, необходимо выполнить несколько подготовительных шагов по созданию проекта и выбора и настройки компилятора языка С# для трансляции исходного кода.

После щелчка на кнопке OK среда создаст решение и проект с указанным именем.

В верхней части экрана располагается главное меню (с разделами Файл, Правка, Вид и т. д.) и панели инструментов. Панелей инструментов в среде великое множество, и если включить их все, они займут половину экрана. При создании проекта необходимо указать язык C# и тип проекта.

В верхней правой части экрана располагается окно управления проектом. Обозреватель решении (если оно не отображается, следует воспользоваться командой Вид * Обозреватель решении главного меню). В окне перечислены все ресурсы, входящие в проект: ссылки на библиотеку, и информация о сборке и файл с исходным текстом класса (Classl.cs). В этом же окне можно увидеть и другую информацию, если перейти на вкладку Командный обозреватель, ярлычок которой находится в верхней части окна. На этой вкладке представлен список всех классов, входящих в приложение, их элементов и предков. С помощью проводника Windows можно увидеть какие файлы создала среда для поддержки проекта. На заданном диске появилась папка с указанным именем, содержащая несколько других файлов и вложенных папок. Среди них - файл проекта (с расширением csproj), файл решения (с расширением sln) и файл с кодом класса (Classl.cs).

Основное пространство экрана занимает окно редактора, в котором располагается текст программы, созданный средой автоматически. Текст представляет собой каркас, в который программист добавляет код по мере необходимости. Ключевые (зарезервированные) слова отображаются синим цветом, комментарии (2 различных типов) - серым и темно-зеленым, остальной текст - черным.

Слева от текста находятся символы структуры: щелкнув на любом квадратике с минусом, можно скрыть соответствующий блок кода. При этом минус превращается в плюс, щелкнув на котором, можно опять вывести блок на экран. Это средство хорошо визуально структурирует код и позволяет сфокусировать внимание на нужных фрагментах.

Заготовка консольной программы

Рассмотрим каждую строку заготовки программы (пример 1). Не надо пытаться сразу понять абсолютно все, что в ней написано. Цель - изучить принципы работы в оболочке, а не досконально разобраться в программе.

Пример 1. Заготовка консольной программы

using System;

using System.Collections.Generic;

using System.Linq; using System.Text;

namespace ConsoleApplication1

{

/// <summary>

/// Summary description for Classl. /// </summary>

class Classl

{

/// <summary>

/// The main entry point for the application. /// </summary>

static void Main(string[] args)

{

//

// TODO: Add code to start application

// here //

}

}

}

Директива using System разрешает использовать имена стандартных классов из пространства имен System непосредственно (без указания имени пространства).

Директивы :

using System.Collections.Generic;

using System.Linq;

using System.Text;

относятся к общему случаю и для создания консольного приложения не нужны. Поэтому в дальнейшем они использоваться не будут.

Ключевое слово namespace создает для проекта собственное пространство имен, названное по умолчанию ConsoleApplicationl. Это сделано для того, чтобы можно было давать программным объектам имена, не заботясь о том, что они могут совпасть с именами в других пространствах имен.

Строки, начинающиеся с двух или трех косых черт, являются комментариями и предназначены для документирования текста программы.

С# - объектно-ориентированный язык, поэтому написанная на нем программа представляет собой совокупность взаимодействующих между собой классов.

В нашей заготовке программы всего один класс, которому по умолчанию задано имя Class. Описание класса начинается с ключевого слова class, за которым следуют его имя и далее в фигурных скобках - список элементов класса (его данных и функций, называемых также методами).

ВНИМАНИЕ!!! Фигурные скобки являются важным элементом синтаксиса. Каждой открывающей скобке соответствует своя закрывающая, которая обычно располагается ниже по тексту с тем же отступом. Эти скобки ограничивают блок, внутри которого могут располагаться другие блоки, вложенные в него, как матрешки. Блок может применяться в любом месте, где допускается отдельный оператор.

В данном случае внутри класса только один элемент - метод Main. Каждое приложение должно содержать метод Main - с него начинается выполнение программы. Все методы описываются по единым правилам.

Упрощенный синтаксис метода:

[ спецификаторы ] тип имя_метода ( [ параметры ] )

{

тело метода: действия, выполняемые методом

}

Наряду с понятием «метод» часто используется другое - функция-член класса. Метод является частным случаем функции - законченного фрагмента кода, который можно вызвать по имени.

Среда поместила внутрь метода Main комментарий:

// TODO: Add code to start application here

Это означает: «Добавьте сюда свой код, выполняемый при запуске приложения». Добавим после строк комментария (но не в той же строке!) строку

Console.WriteLine("BceM привет!!!");

Здесь Console - это имя стандартного класса из пространства имен System. Его метод WriteLine выводит на экран заданный в кавычках текст. Как видите, для обращения к методу класса используется конструкция

имя_класса.имя_метода.

Если вы не сделали ошибку в первом же слове, то сразу после ввода с клавиатуры следом за словом Console символа точки среда выведет подсказку, содержащую список всех доступных элементов класса Console. Выбор нужного имени выполняется либо мышью, либо клавишами управления курсором, либо вводом одного или нескольких начальных символов имени. При нажатии клавиши Enter выбранное имя появляется в тексте программы.

Не стоит пренебрегать возможностью автоматического ввода - это убережет от опечаток и сэкономит время. Если подсказка не появляется, это свидетельствует об ошибке в имени или в месте рас - положения в программе вводимого текста.

Программа должна приобрести вид, приведенный в Примере 2. Обратите внимание на то, что после внесения изменений около имени файла на ярлычке в верхней части окна редактора появился символ * - это означает, что текст, сохраненный на диске, и текст, представленный в окне редактора, не совпадают. Для сохранения файла воспользуйтесь командой Файл * Сохранить главного меню или кнопкой Save на панели инструментов (текстовый курсор должен при этом находиться в окне редактора). Впрочем, при выходе из программы среда сохранит исходный текст самостоятельно.

Запуск программы

Самый простой способ запустить программу - нажать клавишу F5 (или выбрать в меню команду Отладка * Начать отладку). Если программа написана без ошибок, то фраза

Всем привет! ! !

промелькнет перед вашими глазами в консольном окне, которое незамедлительно закроется. Это хороший результат, но для того чтобы пронаблюдать его спокойно, следует воспользоваться клавишами Ctrl+F5.

После внесения изменений компилятор может обнаружить в тексте программы синтаксические ошибки. Об этом он сообщает в окне, расположенном в нижней части экрана.

Делись добром ;)