Высокоуровневые методы информатики и программирования Лекция 2
План лекции 1.Новый язык программирования C# 2.Интегрированная среда разработки Visual Studio 2008
1. Новый язык программирования С#
Общие сведения по языку C# Появился в 2001 году. Основан на языках Java и Visual Basic Общий прародитель C++ В первой версии языка: –80 ключевых слов –12 встроенных (базовых) типов данных Включает все необходимое для создания объектно-ориентированных, компонентных программ. Одобрен в качестве международного стандарта ECMA (ECMA-334) и ISO(ISO/IEC 23270)ECMAISO
Версии языка Версия С# 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) С++ Java C#
Андерс Хейлсберг (Anders Hejlsberg) Главный проектировщик и ведущий архитектор. Датский учёный в области информатики. В 1980 году он написал компилятор языка Паскаль, который продал фирме Borland (этот компилятор дожил до 7 версии (Borland Pascal).ПаскальBorland До 1996 года главный проектировщик фирмы Borland, создал новое поколение компиляторов Паскаля: получился язык Delphi.BorlandDelphi В 1996 году перешёл в Microsoft, где работал над языком J++ и библиотекой С++ - Windows Foundation Classes. J++Windows Foundation Classes Позже возглавил комиссию по созданию и проектированию языка C#.C#
Программа на С# Программа это набор взаимосвязанных классов. Класс содержит данные и функции В одном из классов должна быть функция Main,с этой функции начинается выполнение программы Классы могут быть в разных файлах, в разных сборках (в библиотеках классов). На внешние модули (библиотеки, или выполняемые модули) должны быть ссылки (references). Для удобства ссылок на классы программы, желательно использовать пространство имен Для удобства записи имен внешних классов можно использовать оператор using.
Определение программы (Дейкстра) –Программа = Алгоритм + Данные. ОО определение программы: –Программа это набор типов (классов, интерфейсов и т.д.) –Тип = Данные + Методы –Метод = Алгоритм + Данные.
Структура программы (сборки) на языке С# static void Main () …. class T class A interface C class Q struct M interface V class G struct K class F Сборка Z.dll Сборка Y.dll Сборка X.exe ссылки
Структура приложения Интерфейс Модель предметной области Файлы Система управления БД Базы Данных Framework Class Library Меню Форма Элементы управления - Пользовательские типы данных (классы, структуры, интерфейсы) Пользователь приложения использование типов библиотеки Запись и чтение данных
Типы данных программы Встроенные типы (int, float, …) Классы (class) Структуры (struct) Интерфейсы (interface) Перечисления (enum) Делегаты (delegate)
Зачем нужны типы данных? Чтобы гарантировать осмысленность выполняемых операций:
Классы Основные составные части программы на языке C# Задают новые типы данных Класс и тип – почти синонимы в С# Везде, где могут использоваться встроенные типы, могут использоваться и классы – пользовательские типы.
Составные элементы класса 1.Поля (field) – обычно скрытые данные класса (внутренне состояние) 2.Свойства (property) – доступ к данным класса с помощью функций –get – получить –set – задать 3.Методы (methods) – операции над данными класса (поведение) (можно называть функциями) 4.События (event) – оповещение пользователей класса о том, что произошло что-то важное.
Доступ к элементам класса public вызов или доступ откуда угодно protected только из производных классов (соответствует модификатору family в CLI) private доступ только внутри текущего класса sealed класс, от которого не допускается определение потомков (сравните: в Java ~ final) internal доступ только из текущей сборки (CLI: assembly; Java: аналогов нет) protected internal доступ только из подклассов, определенных в текущей сборке (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("Hello World"); } Запуск на выполнение –в режиме отладки 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 = ; 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
Visual Studio поддерживает 1.Проектирование приложения (рассмотрим позже) 2.Управление разработкой программы 1.Проект – тип результата, отдельная папки и опции компилятора 2.Решение – набор проектов 3.Составление программы 1.Выбор языка программирования 2.Визуальное программирование интерфейса 3.Составление и редактирование кода 4.Отладку и выполнение программы 5.Справочное обеспечение 6.Общение с другими программистами
Типы проектов – создаваемых прикладных программ Application – Приложения –Console (консольные приложения), –Windows (windows приложения), –Smart Device (PDAs, mobile phones ) –ASP.NET Web (web приложения - сайты) –ASP.NET Mobile 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)
Web Application
Pocket PC and Smartphone
Начальная страница (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 Свертывае- мые области (Collapsed Region) Свертываемые Процедуры (Collapsed Procedure) Список классов (Class List) Список методов Method List Закладки - Tabs
Справочная система MS Visual Studio Documentation (F1) MSDN Lybrary –Локальная –В Интернет ( –На русском языке ( Dynamic help (Динамическая справка) IntelliSense Brace Matching Dynamic Help Документирование собственного кода
MSDN Library
Библиотека MSDN на русском языке ( )
IntelliSense Выбор имени метода класса
IntelliSense Выбор параметров метода
Соответствие скобок ( Brace Matching ) Помогает определить соответствие между открывающимися м закрывающимися скобками (посветка) Для перехода от одной скобки к другой, соответствующий ей скобке Ctrl-]
Динамическая помощь