Архітектура .NET. Основи C#

Содержание

Слайд 2

Значення .NET і C# Новий каркас (середовище), новий системний інтерфейс для

Значення .NET і C#

Новий каркас (середовище), новий системний інтерфейс для програмування
Об’єктно-орієнтований

підхід
Зрозумілий дизайн базових класів
Незалежність від мови програмування, досконалі засоби взаємодії
Підтримка динамічних web-сторінок, Web-служб
Ефективний доступ до даних
Assembly VS DLL
Підвищена безпека, спрощена інсталяція
Нова мова програмування для середовища .NET
ООП, звичайне наслідування, інтерфейси
Безпека типів, автоматичне збирання сміття
Підтримка всіх можливостей середовища та сучасних технологій
Слайд 3

Спільне середовище виконання мов CLR. Проміжна мова IL Двокрокова компіляція: Звичайний

Спільне середовище виконання мов CLR. Проміжна мова IL

Двокрокова компіляція:
Звичайний компілятор “C#

→ IL(байт-код)”;
JIT-компілятор “IL → машинна мова”;
Підвищення продуктивності: зменшення обсягу компіляції, краща оптимізація
Взаємодія мов: наслідування класів, включення і передавання об’єктів, надсилання повідомлень, налагодження
Тип значення зберігає дані (стек), посилання зберігає адресу (керована купа)
Common Type System
Слайд 4

object (value-type) unsafe код Посилання на метод Array Довільне значення в

object (value-type)

unsafe код

Посилання на метод

Array

Довільне значення в стеку – абстракт-ний клас

Довільний

тип – абстрактний клас

Система типів IL

Тип

Значення

Посилання

Вбудований тип значень

Перелік

Тип значень користувача

Вказівник

Самодоку-ментований тип

Інтерфейс

Клас

Масив

Тип користувача

Делегат

Огорнутий тип значення

Посилання на довільне значення в купі – абстрактний клас

Цілий Дійсний System.Boolean System.Char

enum

struct

class

тип[ ]

тип *

interface

System.Object

System.String

Слайд 5

Особливості внутрішньої мови Common Language Specification: мінімальні вимоги до .NET-орієнтованих компіляторів

Особливості внутрішньої мови

Common Language Specification:
мінімальні вимоги до .NET-орієнтованих компіляторів
вимоги сумісності до

відкритих методів і класів
“Збирання сміття” – недетерміноване виявлення і знищення об’єктів, на які нема посилань
Домени аплікацій – спосіб безпечного виконання декількох компонент в межах одного процесу
Опрацювання помилок за допомогою винятків
Атрибути типів і методів – корисні метадані
Збірка – логічна одиниця компільованого коду:
бібліотека або аплікація (має точку входу);
приватна або загального використання (строге ім’я);
містить маніфест і метадані, доступні для рефлексії.
Слайд 6

Взаємодія через CTS і CLS Засоби .NET компіляції та виконання Компіляція

Взаємодія через CTS і CLS

Засоби .NET компіляції та виконання

Компіляція

Виконання

Програма C#

Програма VB.NET

Збірка, код

IL

Збірка, код IL

CLR організовує:
JIT компіляція
Надання прав доступу
Перевірка безпеки типів
Створення домену

Базові класи .NET

Завантажені збірки

Збирач сміття

Служби СОМ

Успадкований СОМ-компонент

Слайд 7

Створення аплікацій .NET Класи .NET Framework Підтримка системи типів Підтримка графічного

Створення аплікацій .NET

Класи .NET Framework
Підтримка системи типів
Підтримка графічного інтерфейсу Windows
Підтримка Web

Forms (ASP.NET), взаємодія з мережею та доступ до Web
Доступ до даних (ADO.NET)
Доступ до каталогів, файлової системи, реєстру
Атрибути, підтримка рефлексії
Доступ до ОС, взаємодія з COM
Простори імен
Категорії аплікацій
Настільні аплікації Windows Forms та Windows Presentation Foundation
Мережеві аплікації Web Forms, ASP.NET
Web-служби, служби Windows, транспортування WCF
Слайд 8

“Обов’язкова” програма //using System; namespace LNU.CSharp.Learn { class Program { static

“Обов’язкова” програма

//using System;
namespace LNU.CSharp.Learn
{
class Program
{
static void Main()
{

System.Console.WriteLine("Hello, WORLD!");
System.Console.ReadLine();
return;
}
}
}
Слайд 9

Типи даних C# Цілі 5; -17; 0x1AB; 255U; 5L; 10UL

Типи даних C#

Цілі 5; -17; 0x1AB; 255U; 5L; 10UL

Слайд 10

Типи даних C# Дійсні 1.5; -2.09; 1e-6; .5; 12.3F Десятковий (фінансовий) 12.50M Логічний

Типи даних C#

Дійсні 1.5; -2.09; 1e-6; .5; 12.3F

Десятковий (фінансовий) 12.50M

Логічний

Слайд 11

Типи даних C# Символьний 'A'; (char)65; '\u0041'; '\x0041' спеціальні літери (взяти в апострофи) Вбудовані типи посилання

Типи даних C#

Символьний 'A'; (char)65; '\u0041'; '\x0041'

спеціальні літери (взяти в апострофи)

Вбудовані

типи посилання
Слайд 12

Окремі типи користувача Перелік (цілий тип користувача) enum – нащадок System.Enum

Окремі типи користувача

Перелік (цілий тип користувача)
enum – нащадок System.Enum
public enum TimeOfDay

{ Morning=0, Afternoon=1,Evening=2 } TimeOfDay time = TimeOfDay.Afternoon; Console.WriteLine(time.ToString()); TimeOfDay time2 = (TimeOfDay) Enum.Parse( typeof(TimeOfDay), "afternoon", true);
Масив (посилання на структуру)
тип [ ] посилання
int [ ] arr = new int [32];
arr[0] = 5; arr[i] = arr[i-1]+3; … arr[31]…
Слайд 13

Оголошення змінних, констант Оголошення змінних тип ім’я_змінної = значення; // ініціалізація

Оголошення змінних, констант

Оголошення змінних
тип ім’я_змінної = значення; // ініціалізація !
double a

= 1.57, s = 0.0;
{ int k; … k = 1; int m = k + 1; …}
MyClass object = new MyClass();
var x = 5; // виведення типу
заборона перекриття локальних імен
Константи
const тип символьне_ім’я = константне_значення;
const int size = 256; // неявно статичне значення
нема константних методів
Слайд 14

Галуження потоку керування Вкорочений умовний оператор if (логічний вираз) оператор |

Галуження потоку керування

Вкорочений умовний оператор
if (логічний вираз) оператор | {блок операторів}
Умовний

оператор
if (логічний вираз) оператор | {блок операторів} // 1 else оператор | {блок операторів} // 2
Продовжений умовний оператор
if (логічний вираз) оператор | {блок операторів} else if (логічний вираз) оператор | {блок операторів} else …

ЛВ

оператор1

оператор2

-

+

Слайд 15

Галуження потоку керування Оператор вибору switch (expression) { case constantValue1: operator(s)

Галуження потоку керування

Оператор вибору
switch (expression) { case constantValue1: operator(s) break; case constantValue2:

operator(s) break; … default: operator(s) break; }
switch (country) { case "au": case "uk": case "us": language = "English"; break; case "at": case "de": language = "German"; break; }
Слайд 16

Повторення for (ініціалізатор; умова; модифікатор) оператор | блок int f =

Повторення

for (ініціалізатор; умова; модифікатор) оператор | блок
int f = 1; for

(int i = 1; i<=n; ++i) f *= i;
for (int k = 1, j = 9; k != j; ++k, --j) System.Console.WriteLine( k.ToString() + " " + j.ToString());
for (int i = 0; i < 100; i += 10) { for (int j = i; j < i+10; ++j) { Console.WriteLine(" " + j); } }
for ( ; ; ) DoSomethingUntilBreak();

ініціалізатор

умова

оператор

модифікатор

+

-

Слайд 17

Повторення while (умова) оператор | блок bool condition = true; while

Повторення

while (умова) оператор | блок
bool condition = true; while (condition) { DoSomeWork(); condition

= CheckCond(); }
do оператор | блок while (умова);
do { MustBeExecutedAtLeastOnce(); condition = CheckCond(); } while (condition);
foreach (var X in AnEnumerable) оператор | блок

умова

оператор

+

-

умова

оператор

+

-

Слайд 18

Переходи goto Label; вихід з вкладених циклів перехід між альтернативами switch

Переходи

goto Label;
вихід з вкладених циклів
перехід між альтернативами switch
заборонено входити в блок

циклу чи галуження, виходити з класу чи блока finally
break;
перериває виконання структурованого оператора
continue;
перериває одну ітерацію циклу
return; або return Value;
завершення виконання методу
Слайд 19

Простори імен Структурування імен, логічне поєднання класів “Простір до файла” –

Простори імен

Структурування імен, логічне поєднання класів
“Простір до файла” – “багато до

багатьох”
namespace LNU { namespace CSharp { class Lesson01 { public string GetNamespace() { return this.GetType().Namespace; } } } }
namespace LNU.CSharp { class Lesson01 { … } }
LNU.CSharp. Lesson01 inst; … inst.GetNamespace();
using LNU.CSharp; Lesson01 inst = new Lesson01();
using S1 = LNU.CSharp; S1::Lesson01 inst …;
Слайд 20

Консольне введення-виведення int System.Console.Read(); //код одного прочитаного символа string System.Console.ReadLine(); //

Консольне введення-виведення

int System.Console.Read(); //код одного прочитаного символа
string System.Console.ReadLine(); // прочитаний рядок
int

K = int.Parse(Console.ReadLine()); // несимвольні величини
void System.Console.Write(aVal); // виведення відомого типу
void System.Console.WriteLine(aVal); // те саме + кінець рядка
Console.Write(K); Console.WriteLine(K.ToString()); Console.WriteLine(" K = " + K);
Console.WriteLine("наступне після {0} рівне{1,10:D4}",K,K+1);
C – грошовий формат; G – загальний (E або F);
D – десятковий (0015); N – числовий з розділювачами;
E – експотенційний; P – відсотковий;
F – з фіксованою комою; X – шістнадцятковий.