Similar presentations:
Платформа. NET. Работа с методами. ООП в C #. Делегаты и события. Windows Forms. Элементы управления и их создание
1. Платформа. NET. Работа с методами. ООП в C #. Делегаты и события. Windows Forms. Элементы управления и их создание.
Развертываниеприложений. Принципы работы с
данными. Введение в ADO.NET
321
Современные технологии
программирования
2. .NET Framework
2.NET Framework - это независимая от языка среда
программирования, разработанная корпорацией Microsoft.
Кроме среды выполнения программы в Framework существуют
библиотеки классов, которые упрощают разработку
безопасных взаимодействующих с другими приложений
Windows и приложений на основе Интернет-технологий.
3. CLR (Common Language Runtime)
3CLR (Common Language Runtime) – Среда
Времени Выполнения или Виртуальная машина.
Обеспечивает выполнение сборки. Основной
компонент .NET Framework.
4. Выполнение программы на .NET
4При компиляции приложений .NET на выходе получается не исполняемый
машинный код, а промежуточный код на специальном языке, который
называется MSIL (Microsoft Intermediate Language) или просто IL
(Intermediate Language). Своим внешним видом MSIL напоминает язык
Ассемблера, но является более высокоуровневым и по своей природе
является объектно-ориентированным.
Поскольку существует промежуточный язык IL, то код, который получается
на этом языке программирования, теоретически не зависит от исходного
языка программирования. Второй задачей, которую решает этот подход,
является возможность создавать приложения независящие от разрядности
операционной системы (32 бита или 64 бита).
Наконец, третья задача, которую решает приведенный подход – это
теоретическая возможность запускать программный код, без
перекомпиляции на разных платформах. Это означает, что исполняемый
файл содержит только код на промежуточном языке, который может быть
преобразован в машинный код для той платформы, на которой он
исполняется в данный момент.
5. Идеология
5Идеология .NET Framework способствует внедрению
новых языков программирования в общую
инфраструктуру, поскольку разработчику этого языка
программирования нужно лишь позаботиться о
трансформации языковых конструкций в язык IL – все
остальное сделает среда исполнения. Благодаря
этому в последнее время появляется огромное
количество языков программирования для
платформы .NET – F#, Boo, IronPython, IronRuby,
Haskell, Nemerle, JScript.NET и др.
6. Схема выполнения .NET-приложения в среде CLR
67. Язык от Microsoft, Intel, HP
7Язык на котором написана платформа .NET
Framework
Результат эволюции языков программирования
С# - “на пол тона выше” С++
8. Некоторые отличия C# от C++
8В С# отсутствует множественное наследование
(компенсируется мн. насл. интерфейсов)
Переменные любого типа (даже bool и int) являются
объектами
Для освобождения памяти используется система
сборки мусора среды выполнения
Невозможно определить глобальные переменные
или методы, их определения должны находиться
внутри классов
9. Некоторые отличия C# от C++
9Все данные делятся на ссылочные и размерные
Ссылочные хранятся в общем пуле памяти, а
размерные могут храниться в стеке метода
Данные типа bool могут принимать только два
значения true и false, при этом не допускается
преобразование этого типа в другие
Разрядность каждого типа данных не зависит от ОС и
процессора
10. Основные отличия C# от C++
10Использование указателей ограничено областями
небезопасного кода. Вместо указателей на функции
используется механизм специальных методов –
делегатов
В С# структуры являются размерными типами данных,
а классы – ссылочными
Добавлены новые операторы и ключевые слова is, as,
ref, out, foreach. В операторе try-catch добавлен блок
finally
11. Типы данных в C#
11Типы данных в C#
12. Общая схема системы типов
1213. Целые типы
13Название
типа
Диапазон значений
Размер
sbyte
-128..127
Знаковое 8-битное целое
byte
0..255
Беззнаковое 8-битное целое
char
U+0000..U+FFFF
16-битный Unicode-символ
short
-32 768..32 767
Знаковое 16-битное целое
ushort
0..65535
Беззнаковое 16-битное
целое
int
-2 147 483 648..2 147 483 647
Знаковое 32-битное целое
uint
0..4 294 967 295
Беззнаковое 32-битное
целое
long
-9 223 372 036 854 775 808..
9 223 372 036 854 775 807
Знаковое 64-битное целое
ulong
0..18 446 744 073 709 551 615
Беззнаковое 64-битное
целое
13
14. Вещественные типы
14Типы с плавающей точкой
Название
типа
Диапазон значений
Float
+1.5E-45..+3.4E38
Double
+5.0E-324..+1.7E308
Точность
7 знаков
15-16 знаков
Тип decimal
Название
типа
Decimal
Диапазон значений
1.0E-28 to 7.9E28
Точность
28-39 знаков
15. Структуры
15Сходны с классами. Отличие: являются типом
значения
Структуры передаются по значению, а не по ссылке
Объявление структуры подобно объявлению
класса:
public struct Point
{ public int x, y;
public Point(int p1, int p2)
{ x = p1; y = p2; }
}
16. Все значения являются объектами
16Все типы значений представлены соответствующими типами
.NET Framework из пространства имен System. Они наследуются
от класса ValueType
Для каждого значения поддерживается соответствующий
"упакованный" (boxed) тип, который является классом,
реализующим то же поведение и содержащим те же данные
Если требуется передать значение по ссылке, оно
автоматически упаковывается (box) в соответствующий
упакованный тип, а по прибытии при необходимости
распаковывается (unbox). Находясь в упакованном виде, тип
может использовать все методы класса System.ValueType
Например, допустима следующая конструкция:
string s = 2004.ToString();
17. Классы наследники от ValueType
17System.Object
System.ValueType
System.Byte
System.Char
System.Decimal
System.Boolean
System.Double
System.Int16
System.Single
System.DateTime
System.Enum
System.Void
18. Базовые выражения и операторы C#
18Базовые выражения и операторы C#
19. Операции
19Арифметические
+
-
*
/
%
Логические (булевые,
побитовые)
Катенация строк
& | ^ !
true false
+
~
&&
Инкремент, декремент
++
--
Сдвиг
<<
>>
Отношение
==
>=
!=
>
<=
<
||
20. Операции (продолжение)
20Присваивание
Доступ к члену
= += -= *= /=
%= &= |= ^=
<<= >>=
.
Индексация
[]
Условие
?:
Катенация и добавление
делегата
+
-
21. Операторы (продолжение)
21Создание объекта
new
Информация о типе
as is sizeof
typeof
checked unchecked
Контроль
переполнения
Адресация
*
->
[]
&
22. Математические операции
22Символ
Оператор
+
Сложение
-
Вычитание
*
Умножение
/
Деление
%
Остаток от целоч.
деления
23. Унарные операции
23Символ
Оператор
+
Унарный плюс
-
Унарный минус
++
Инкремент
--
Декремент
!
Унарное логическое отрицание
~
Унарная поразрядная операция
дополнения
(…)
Преобразование типа выражения
24. Составные операции
24Символ
Оператор
+=
-=
*=
Сложение и присваивание
/=
%=
&=
=
Деление и присваивание
^=
Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ и присваивание
<<=
>>=
Сдвиг влево и присваивание
Вычитание и присваивание
Умножение и присваивание
Вычисление остатка от деления и присваивание
Логическое И и присваивание
Логическое ИЛИ и присваивание
Сдвиг вправо и присваивание
25. Поразрядные операции
25Символ
Оператор
&
Логическое либо побитовое И
Логическое либо побитовое ИЛИ
^
Логическое либо побитовое
ИСКЛЮЧАЮЩЕЕ ИЛИ
~
Унарная поразрядная операция
дополнения
<<
Сдвиг влево
>>
Сдвиг вправо
26. Логические операции
26Символ
Оператор
&&
Логический оператор И
Логический оператор ИЛИ
!
Унарное логическое отрицание
27. Операции отношения
27Символ
Оператор
==
Равно
!=
Не равно
<
Меньше
<=
Меньше или равно
>
Больше
>=
Больше или равно
28. Управляющие операторы
28Оператор
Назначение
Пример
if …else
Оператор
условного
перехода
if (a > b) Console.WriteLine ("a > b");
else Console.WriteLine("a <= b");
switch
Оператор
ветвления
goto
Оператор
безусловного
перехода
for
Оператор
цикла
while
Оператор
цикла с
предусловием
switch (a)
{case 1:{Console.WriteLine("A= 1");
break;}
case 2:{Console.WriteLine("A= 2");
break;}
default: {Console.WriteLine("A <> 0 и
A <> 1"); break;}}
Exit:
…
goto Exit;
for (int i = 0; i < 10; i++) sum +=
array[i];
while (x > 0) {i++; x--;}
29. Управляющие операторы
29Оператор
foreach
Назначение
Пример
Оператор цикла
для работы с
массивами и
контейнерами
int [ ] nums = {2,4,8,16,32};
foreach (int j in nums)
{Console.WriteLine("j = {0}",j )};
do
Оператор цикла
с постусловием
continue
Выполнение
цикла сначала
break
Прерывание
выполнения
цикла
return
Возврат
управления из
метода
string s = "A, B, C, D";
do {s=s.Substring(s.IndexOf(",")+1);
Console.WriteLine("s = {0}", s );}}
while (s.Length > 2);
for (i=0;;i++)
{ Console.WriteLine("{0}",i);
if(i<9) continue;
else break; }
30. Операторы AS,IS,TYPEOF
30as
.
public static void Main() {
object [ ] myObjects = new object[3];
myObjects[0] = "hello"; myObjects[1] = 123; myObjects[2] = 123.4;
for (int i=0; i<myObjects.Length; ++i) {string s = myObjects[i] as
string;
Console.Write ("{0}:", i);
if (s != null) Console.WriteLine ( "'" + s + "'" );
else Console.WriteLine ( "not a string" );}}
is
public static void Main() {
object [] myObjects = new object[3];
myObjects[0] = "hello"; myObjects[1] = 123; myObjects[2] = 123.4;
for (int i=0; i<myObjects.Length; ++i) { Console.Write("{0}:", i);
if (myObjects[i] is string) Console.WriteLine ( “it is a string" );}}
typeof
public static void Main() {
Type t = typeof(MyClass);}
// альтернативой будет следующая конструкция
// MyClass t1 = new MyClass();
// Type t = t1.GetType();
31. Трансляция программ на C#
31Визуальная среда разработки Microsoft Visual
Studio.Net
Пакетный транслятор, входящий в Microsoft.Net
Framework SDK (доступен для бесплатной
загрузки)
Среда SharpDevelop (доступна для бесплатной
загрузки)
32. Программа Hello, C# world!
32using System;
namespace Hello
{
class HelloApp
{
public static int Main(string[] args)
{
Console.WriteLine(“Hello, C# world”);
Console.ReadLine();
return 0;
}
}
}
33. Запуск программы Hello, C# world
33Набираем текст программы в любом текстовом
редакторе
Сохраняем его с именем hello.cs в директории
C:\Temp
В командной строке набираем
C:\...\Framework\v1.1\csc.exe hello.cs
Запускаем сгенерированный hello.exe
Наша первая программа работает!
34. Работа с консолью
34Для работы с консолью в .NET Framework
используется класс System.Console
Все его методы класса Console являются
статическими, (не нужно создавать его экземпляр)
Класс ответственен за ввод, вывод и вывод ошибок
По умолчанию ввод/вывод производится на
стандартную консоль, либо вообще не
производится, если консоль отсутствует
35. Метод Read
35Читает символ из потока ввода
Возвращает код прочитанного символа
(значение типа int), либо -1, если ничего
прочитано не было.
Пример:
do
{
int i = Console.Read();
if (i != -1) Console.WriteLine("{0} ({1})", (char)i, i);
else break;
} while (true);
36. Метод Write
36Предназначен для вывода на экран
Определен для всех базовых типов
Console.Write(1);
Console.Write(3.14159265);
Console.Write("Строка");
Поддерживает форматированные строки
При форматировании может применяться ряд
модификаторов, например, вместо "{n}"
подставляется n-й входной параметр
Console.Write("Привет, {0}", Name);
37. Windows Forms.Функциональность
37Windows Forms предоставляет .NET классы с
готовыми компонентами пользовательского
интерфейса, пригодными для большинства
настольных приложений. Поддерживаются
следующие функциональности:
меню
панели инструментов и строки состояния
печать и предварительный просмотр
размещение элементов управления ActiveX
упрощенный доступ к БД и Web-службам.
Это богатый и обширный набор функциональности.
37
38. Помощь .NET при создании приложений
38Среда Visual Studio.NET содержит удобные средства разработки Windowsприложений, например:
создание шаблонов приложения и форм;
создание заготовок обработчиков событий.
Библиотека классов .NET включает пространство имен System.Windows.Forms,
содержащее огромное количество типов - строительных блоков Windowsприложений, например:
Application
Button, CheckBox, DataGrid, GroupBox, ListBox, PictureBox
Form
ColorDialog, FileDialog, FontDialog
Menu, MainMenu, MenuItem
Clipboard, Help, Timer, Screen, Cursors
StatusBar, ToolBar, ScrollBar
39. Создание Windows-приложения
3940. Создание Windows-приложения
40Создание Windows-приложения
Процесс создания Windows-приложения
состоит из двух основных этапов:
визуальное
проектирование, то есть задание
внешнего облика приложения
определение поведения приложения путем
написания процедур обработки событий.
Визуальное проектирование заключается в
помещении на форму компонентов (элементов
управления) и задании их свойств и свойств
самой формы.
41. Окно свойств
411
2
3
4
View Properties Window
Задание свойств
выполняется либо
выбором имеющихся в
списке вариантов, либо
вводом требуемого
значения с клавиатуры.
Если около имени
свойства стоит значок +,
это означает, что
свойство содержит
другие свойства. Они
становятся доступными
после щелчка на значке.
42. Размещение компонента на форме
42Создать экземпляр соответствующего класса
Настроить свойства экземпляра, в том числе
зарегистрировать обработчик событий
(код создается автоматически при размещении
компонента на заготовке формы)
(через окно свойств)
Поместить экземпляр в коллекцию
компонентов формы
(автоматически)
43. Определение поведения программы
43Определение поведения программы начинается с принятия
решений, какие действия должны выполняться при щелчке на
кнопках, вводе текста, выборе пунктов меню и т. д. (по каким
событиям будут выполняться действия, реализующие
функциональность программы).
Заготовка шаблона обработчика события формируется
двойным щелчком на поле, расположенном справа от имени
соответствующего события на вкладке Events окна свойств,
при этом появляется вкладка окна редактора кода с
заготовкой соответствующего обработчика.
Для каждого класса определен свой набор событий, на
которые он может реагировать.
44. Часто используемые события
Activated — получение формой фокуса ввода;Click, DoubleClick — одинарный и двойной щелчки мышью;
Closed — закрытие формы;
Load — загрузка формы;
KeyDown, KeyUp — нажатие и отпускание любой клавиши и
их сочетаний;
KeyPress — нажатие клавиши, имеющей ASCII-код;
MouseDown, MouseUp — нажатие и отпускание кнопки
мыши;
MouseMove — перемещение мыши;
Paint — возникает при необходимости прорисовки формы.
45. Примеры обработчиков событий
45private void Form1_Load(object sender, EventArgs e)
{
rnd = new Random();
i = rnd.Next(max);
}
private void Exit_Click(object sender, EventArgs e)
{
// имя пункта меню - Exit
Close();
// или:
// Application.Exit();
}
46. Виды окон
46Модальное окно не позволяет пользователю переключаться на другие
окна того же приложения, пока не будет завершена работа с текущим
окном.
В виде модальных обычно оформляют диалоговые окна, требующие от
пользователя ввода какой-либо информации.
Немодальное окно позволяет переключаться на другие окна того же
приложения. Немодальные окна являются, как правило,
информационными. Они используются в тех случаях, когда пользователю
желательно предоставить свободу выбора — оставлять на экране какуюлибо информацию или нет.
Каждое приложение содержит одно главное окно. Класс главного окна
приложения содержит точку входа в приложение (статический метод
Main). При закрытии главного окна приложение завершается.
Вид окна определяет его функциональность, например, окно с одинарной
рамкой не может изменять свои размеры.
47. Диалоговые окна
47Диалоговое окно характеризуется:
неизменяемыми размерами (FormBorderStyle = FixedDialog);
отсутствием кнопок восстановления и свертывания в правом верхнем углу
заголовка формы (MaximizeBox = False, MinimizedBox = False);
наличием кнопок наподобие OK, подтверждающей введенную
информацию, и Cancel, отменяющей ввод пользователя, при нажатии
которых окно закрывается (AcceptButton = имя_кнопки_OK,
CancelButton = имя_кнопки_Cancel);
установленным значением свойства DialogResult для кнопок, при нажатии
которых окно закрывается.
Для отображения диалогового окна следует создать экземпляр объекта
соответствующей формы, а затем вызвать для этого объекта метод
ShowDialog.
48. Пример отображения диалогового окна
48private void menuItem1_Click( object sender, EventArgs e )
{ Form2 f = new Form2();
// создание экземпляра класса окна
if ( f.ShowDialog() == DialogResult.OK )
// отображение окна
label1.Text = f.Info;
}
private void menuItem2_Click( object sender, EventArgs e )
{ Close();
}
// закрытие главного окна
49. Технология доступа к данным
49ADO.NET — основная модель доступа к
данным для приложений, основанных на
Microsoft.Net
Обеспечивает эффективное взаимодействие с
распространенными типами СУРБД
Приложение
на .Net
ADO .NET
База
Данных
50. Доступ к данным. Модель ADO.NET
50.NET Framework включает свою собственную
технологию доступа к данным — ADO.NET.
ADO.NET состоит из управляемых классов,
позволяющих приложениям .NET подключаться к
источникам данных (обычно реляционным базам
данных), выполнять команды и управлять
автономными данными.
Особенность ADO.NET заключается в том, что эта
технология позволяет писать более-менее
одинаковый код для доступа к данным — как в
Web-приложениях, так и в клиент-серверных
настольных приложениях, или даже в
однопользовательских приложениях,
подключаемых к локальной базе данных.
51. Основные классы
51Основные классы
Connection
Command
DataReader
Transaction
Parameter
52. Спасибо за внимание!
321Современные технологии
программирования