490 likes | 712 Views
Высокоуровневые методы информатики и программирования Лекция 2. План лекции. Новый язык программирования C# Интегрированная среда разработки Visual Studio 2008. 1. Новый язык программирования С #. Общие сведения по языку C#. Появился в 2001 году. Основан на языках Java и Visual Basic
E N D
Высокоуровневые методы информатики и программированияЛекция 2
План лекции • Новыйязык программирования C# • Интегрированная среда разработки Visual Studio 2008
Общие сведения по языку C# • Появился в 2001 году. • Основан на языках Java и Visual Basic • Общий прародитель C++ • В первой версии языка: • 80 ключевых слов • 12 встроенных (базовых) типов данных • Включает все необходимое для создания объектно-ориентированных, компонентных программ. • Одобрен в качестве международного стандарта ECMA (ECMA-334) и ISO(ISO/IEC 23270)
Версии языка • Версия С# 1.0 – 2001г. (для Framework 1.0) • Версия С# 2.0 – 2005г. (для Framework 2.0) • Версия C# 3.0 – 2007г. (для Framework 3.5) • Версия C# 4.0 – 2010г. (для Framework 4.0) C# Java С++
Андерс Хейлсберг(Anders Hejlsberg) • Главный проектировщик и ведущий архитектор. • Датский учёный в области информатики. • В 1980 году он написал компилятор языка Паскаль, который продал фирме Borland (этот компилятор дожил до 7 версии (Borland Pascal). • До 1996 года главный проектировщик фирмы Borland, создал новое поколение компиляторов Паскаля: получился язык Delphi. • В 1996 году перешёл в Microsoft, где работал над языком J++ и библиотекой С++ - Windows Foundation Classes. • Позже возглавил комиссию по созданию и проектированию языка C#.
Программа на С# • Программа это набор взаимосвязанных классов. • Класссодержит данные и функции • В одном из классов должна быть функция Main, с этой функции начинается выполнение программы • Классы могут быть в разных файлах, в разных сборках (в библиотеках классов). • На внешние модули (библиотеки, или выполняемые модули) должны быть ссылки (references). • Для удобства ссылок на классы программы, желательно использовать пространство имен • Для удобства записи имен внешних классов можно использовать оператор using.
Определение программы (Дейкстра) • Программа = Алгоритм + Данные. • ОО определение программы: • Программа это набор типов (классов, интерфейсов и т.д.) • Тип = Данные + Методы • Метод = Алгоритм + Данные.
class A class T static void Main () …. interface C Структура программы (сборки) на языке С# Сборка Z.dll Сборка X.exe class Q struct M interface V ссылки Сборка Y.dll class G struct K class F
Типы данных программы • Встроенные типы (int, float, …) • Классы (class) • Структуры (struct) • Интерфейсы (interface) • Перечисления (enum) • Делегаты (delegate)
Зачем нужны типы данных? Чтобы гарантировать осмысленность выполняемых операций:
Классы • Основные составные части программы на языке C# • Задают новые типы данных • Класс и тип – почти синонимы в С# • Везде, где могут использоваться встроенные типы, могут использоваться и классы – пользовательские типы.
Составные элементы класса • Поля (field) – обычно скрытые данные класса (внутренне состояние) • Свойства (property) – доступ к данным класса с помощью функций • get – получить • set – задать • Методы (methods) – операции над данными класса (поведение) (можно называть функциями) • События (event) – оповещение пользователей класса о том, что произошло что-то важное.
Доступ к элементам класса • public вызов или доступ откуда угодно • protectedтолько из производных классов (соответствует модификатору “family” в CLI) • private доступ только внутри текущего класса • sealedкласс, от которого не допускается определение потомков (сравните: в Java ~ final) • internal доступ только из текущей сборки (CLI: “assembly”; Java: аналогов нет) • protectedinternal доступ только из подклассов, определенных в текущей сборке (CLI: “family and assembly”)
Описание классов программы using XXX; // чужие пространства имен namespace MMM // наше пространство имен { class AAA // наш класс MMM.AAA { … } class BBB // другой наш класс MMM.BBB { … } }
Метод Main • Выполнение программы начинается со статического метода (функции) с именем Main • Заголовок функции static void Main (string[ ] arg) {…} static void Main () {…} static int Main (string[ ] arg) {…} static int Main () {…} • В самом простом случае – выполняет некоторый алгоритм без использования объектов классов • Обычно создает экземпляры классов и вызывает их методы для решения задачи • может создать экземпляр того класса в котором находится сама и вызвать некоторый не статический метод решения задачи
Использование класса Объекты одного класса могут использоваться в других классах … // описание переменной типа - класс < имя класса > a; // создание объекта класса a = new <имя класса> (…); // вызов метода класса b = a.<метод>(…); // использование полей или свойств объекта a.<свойство или поле> = c; c = a.<свойство или поле>;
Классы и файлы • Классы записываются в файле с расширением *.cs, например, main.cs • В одном файле может быть описано несколько классов – в любом порядке • Один класс может описываться в нескольких файлах (начиная с C# 2.0) • модификатор patial (перед словом class)
Простая программа на C# class Hello { static void Main( ) { // Use the system console object System.Console.WriteLine("HelloWorld"); } } • Запуск на выполнение • в режиме отладки F5 • без отладки Ctrl – F5 (остановка после выполнения)
Простая программа на C# (2) using System; namespace ConsoleApp { class Program { static void Main() { Console.Write("Введите радиус круга:"); string s = Console.ReadLine(); double r = Convert.ToDouble(s); double p = Math.PI * r * r; Console.WriteLine("Площадькруга = {0}", p); Console.ReadLine(); return; } } }
Сравнение C# и Java using System; class Program { public static void Main(string []) { Console.Write("Введите радиус круга:"); string s = Console.ReadLine(); double r = Convert.ToDouble(s); double p = Math.PI * r * r; Console.WriteLine("Площадь круга = {0}", p); Console.ReadLine(); } } import java.util.Scanner; class Program { private static final double PI = 3.1416; public static void main ( String [] args ) { Scanner keyboard=new Scanner ( System.in ) ; System.out.print ( "Введите радиус круга:" ) ; float r =keyboard.nextFloat(); float p = PI * r * r; System.out.print ( "Площадь круга = :" ) ; System.out.println( 2*val*val*PI ) ; } }
Пространство имен – name space • Разделение объектов по иерархически организованным группам • Используется иерархическое пространство имен <имяПространства>.<имяТипа>.<имяПодтипа>.<имяСобственное> • Вложенность нескольких имен (как почтовый адрес) • Значительно понижается вероятность совпадения имен классов разработанных разными компаниями • Для описания связей между классами (классы близкие по функциональности включены в одно пространство) • Пространство имен включает - классы (Class); интерфейсы (Interface); перечисления (Enum); делегаты (сигнатуры классов, Delegate); другие пространства имен. • В одном DLL модуле могут содержаться элементы из разных пространств имен.
Основные пространства имен FCL • System – общие базовые типы • System.VisualBasic – базовые типы для VBasic • System.Drawing – классы для рисования • System.Windows.Forms – классы для приложений с графическим интерфейсом • System.Data – классы для работы с данными в БД • System.Web – классы для ASP.NET и Web-форм • System.Net – классы для работы с сетевыми протоколами • System.Web.Services - классы для разработки Web сервисов • System.Web.UI – основные классы используемые ASP.Net
Пример простого класса namespace TestProg // наше пространство имен { class Point // наш класс MMM.Point { public int x, y; // поля класса } class Program { static void Main( ) { Point a; a = new Point(); a.x = 4; a.y = 3; } } }
2. Интегрированная среда разработки Microsoft Visual Studio • Это основная интегрированная среда разработки программ для платформы .Net компании Microsoft. • Может использоваться для разработки программ с консольным и графическим интерфейсом, Web сайтов, web приложений и web сервисов для всех OC (Microsoft Windows, Windows Mobile), поддерживающих .NET Framework, .NET Compact Framework and Microsoft Silverlight. • Это программа предоставляет программисту доступ ко множеству различных полезных инструментов • .Net Framework • компиляторы, • редактор текста, • отладчик, • справочная система, • система визуального проектирования и генерации программ) • Обозреватель объектов (Object Browser)
Версии Visual Studio http://msdn.microsoft.com/vstudio/
Visual Studio поддерживает • Проектирование приложения (рассмотрим позже) • Управление разработкой программы • Проект – тип результата, отдельная папки и опции компилятора • Решение – набор проектов • Составление программы • Выбор языка программирования • Визуальное программирование интерфейса • Составление и редактирование кода • Отладку и выполнение программы • Справочное обеспечение • Общение с другими программистами
Типы проектов – создаваемых прикладных программ • Application – Приложения • Console (консольные приложения), • Windows (windows приложения), • Smart Device (PDAs, mobile phones ) • ASP.NET Web (web приложения - сайты) • ASP.NETMobile Web (приложения для мобильного доступа к web ) • Library – Библиотеки • Class (библиотека классов), • Windows Controls (библиотека элементов управления для Windows Form) • Web Controls (библиотека элементов управления для Web Form) • Services - Сервисы • Windows services (фоновые программы) • Web services (предоставление доступа к классам в WWW)
Console Applications • Console User Interface (CUI)
Windows Applications • Graphical User Interface (GUI)
Начальная страница (start page) Последние проекты Создание Нового Проекта Скрытое окноToolbox
Создание новых проектов Создание нового проекта Создание нового web-сайта Создание нового файла
Создание нового проекта(File/New Project/Project) Выбор языка прогр. Выбор типа проекта Имя проекта Размещение проекта
Решения и проекты • Project (проект) это набор файлов для создания отдельной программы • Solution (решение) - это набор проектов для создания программного комплекса для решения сложной проблемы • Site (сайт) это набор файлов для создания программы, которая будет работать в сети Интернет.
Проект • Набор файлов для создания сборок • Все файлы в одной папке с именем проекта • Содержание проекта • Описание проекта <имя проекта>.csproj • Описание сборки AssemblyInfo.cs • Файлы с кодом <имя>.cs
Решение • Оболочка для набора проектов • Решение может размещаться в отдельной папке или в папке с проектов. • Если решение в отдельной папке, то все проекты в покаталогах этой папки • Файлы решения • Описание решения <имя проекта>.sln • Опции и конфигурация решения <имя проекта>.suo Решение Проект А Проект B Проект C Проект D
Пример иерархии Решения Solution Projects Files
Управление проектами и решениями • Создание проекта • Окна для управления проектами • Project Explorer • Class View • Project properties • Задание начального проекта • Управление ссылками • Добавление ссылки • Просмотр состава используемых модулей
Окно редактирования кода Editor Window Закладки - Tabs Список методов Method List Список классов (Class List) Свертывае- мые области (Collapsed Region) Свертываемые Процедуры (Collapsed Procedure)
Справочная система • MS Visual Studio Documentation (F1) • MSDNLybrary • Локальная • В Интернет (http://msdn.microsoft.com/library) • На русском языке (http://msdn.microsoft.com/library/rus/) • Dynamic help (Динамическая справка) • IntelliSense • Brace Matching • Dynamic Help • Документирование собственного кода
Библиотека MSDN на русском языке (http://msdn.microsoft.com/library/rus/default.asp)
Соответствие скобок(Brace Matching) • Помогает определить соответствие между открывающимися м закрывающимися скобками (посветка) • Для перехода от одной скобки к другой, соответствующий ей скобке Ctrl-]