net platform. c# basics

20
eleks.com eleks.com .NET Platform. C# Basics Main differences from C++

Upload: eleksdev

Post on 21-Jan-2018

1.066 views

Category:

Technology


0 download

TRANSCRIPT

eleks.com eleks.com

.NET Platform. C# BasicsMain differences from C++

Що таке .NET?

1. Уніфікована, інтегрована технологічна платформа, випущена Microsoft в 2002

2. Сучасний, потужний та зручний у використанні інструментарій для розробки та

підтримки программного забезпечення

3. Ідеологія проектування та реалізація програмного забезпечення

4. Модель ефективної підтримки життєвого циклу прикладних систем

5 ключових переваг .NET

1. Підтримка численних мов програмування (C#, Managed C++, Visual Basic, F#...)

2. Обширна бібліотека базових класів

3. Спільний для всіх мов механізм виконання

4. Мовна інтеграція. В .NET підтримується міжмовне наслідування

5. Сервісні можливості для розробника (відлагодження, аналіз коду, …) однакові для

всіх мов

Стек технологій.NET Framework 2.0

(2002)

3.0

(2006)

3.5

(2007)

4.0

(2010)

4.5

(2012)

ASP

.NET

ADO

.NET

Win

Forms

Framework Class Library

Common Language Runtime

WPF WCF

WFCard

Space

Entity

Framework

LINQ

Task Parallel

Library

PLINQ

.NET APIs for

Store/UWP apps

.NET APIs for

Store/UWP apps

Головні компоненти .NET

Бібліотека базових класів

Безпека

Web

XML/SOAP

Інше

Доступ до БД

Потоки

Віконні форми

Ввід-вивід

CLR – спільне середовище виконання

CTS – спільна система типів CLS – спільна специфікація мов

Базові терміни

NET компілятор – компілює вихідний код в CIL (Common Intermediate Language).

Збірка – двійковий файл, що підтримує версії, самоописує себе і обслуговується оточенням CLR(Common Language Runtime). Окрім CIL коду в збірці міститься різноманітна службоваінформація, наприклад: інформація про зовнішні збірки (залежності), структура включених в неїтипів і т. п.

JIT компілятор – виконує перетворення коду MSIL в машинні команди по мірі викликупідпрограм (фрагментами). На виході утворюється так званий керований код, який потімвиконується в середовищі CLR.

Керований код – це такий, що містить метадані, які дозволяють CLR виконувати перевіркубезпеки, контроль прав, контроль версій, збір мусору і т. п.

Схема компіляції в CLR.

1. Компіляція файла HelloWorld.cs в файл HelloWorld.dll:csc.exe /target:library /out:"D:/HelloWorld.dll" "D:/HelloWorld.cs“

2. Компіляція файла HelloWorld.cs і створення файла HelloWorld.exe:csc.exe /out: "D:/HelloWorld.exe" "D:/HelloWorld.cs"

eleks.com

Демонстрація 1• Компіляція в *.dll файл• Компіляція в *.exe файл

Схема виконання в CLR.

eleks.com

Демонстрація 2• Перегляд проміжного коду.

Універсальна система типів (UTS)тип

Типи - значення Типи - посилання Вказівники

enum structПрості типи

boolchar

sbyteshort

intlong

byteushort

uintulong

floatdoubledecimal

Class Interface Array Delegate

Типи, визначені користувачем

Вбудовані типи даних CTSCTS VB. NET C# Managed Extensions for C++

System.Byte Byte byte unsigned char

System.SByte SByte sbyte signed char

System.Int16 Short short short

System.Int32 Integer int int or long

System.Int64 Long long __int64

System.Uint16 UShort ushort unsigned short

System.Uint32 UInteger uint unsigned int або unsigned long

System.Object Object object Object^

System.Uint64 ULong ulong unsigned __int64

System.Single Single float Float

System.Double Double double Double

System.Char Char char wchar_t^

System.String String string String^

System.Decimal Decimal decimal Decimal

System.Boolean Boolean bool Bool

Object

Reference types

Sub-types

Value types

Sub-types

Вбудовані типи даних CTS

public string ToString()

public bool Equals(object obj)

public int GetHashCode()

public Type GetType()

public static bool ReferenceEquals(object objA, object objB)

public static bool Equals(object objA, object objB)

protected object MemberwiseClone()

protected virtual void Finalize()

Garbage collector C#• Автоматичне виділення

пам’яті

• Автоматичне очищення пам’яті

1

• Механізм оптимізації звільнення ресурсів

• Видалення об’єктів при необхідності

2

• Швидкодія розробки3

Garbage collector C#

A B C E F G H I

Вказівник нанаступний елемент

A B E G H

Вказівник нанаступний елемент

До:

Після:

Ключові відмінності C# і C++C#

• Мова програмування високого рівня.

• Компілюється в проміжний код, після чого задопомогою Just-In-Time у виконуваний.

• Вивільненням пам'ятті керує Garbage Collector.

• C# структури можуть містити тільки Value Type.

• Делегати, події і властивості можуть бутивизначені як члени класу.

• Модифікатори доступу в C#: public, private,protected, internal, protected internal.

• Мова програмування низького рівня.

• Компілюється в assembler-код.

• Динамічною пам'яттю керує програміст.

• C++ структури мають поведінку таку ж як класи, аледоступ за замовчуванням є публічним, а неприватним.

• Членами класу можуть бути лише змінні,конструктори, функції, оператор перевантаження ідеструктори.

• Модифікатори доступу в C++: public, private,protected. C++ не підтримує внутрішні і захищенімодифікатори доступу всередині однієї зібрки.

C++

Ключові відмінності C# і C++C#

• C# в конструкції обробки виняткових ситуаціймістить додатковий блок finally якийвиконується при будь-яких випадках.

• Не має концепції вказівників на функції. C # маєаналогічну концепцію під назвою delegates.

• Підтримує множинне наслідування інтерфейсів

• Формальні синтаксичні конструкції дляінтерфейсів, делегатів

• Підтримує програмування на основі атрибутів

• Дає можливість писати розширення (extensions)для класів

• C++ не підтримує блок finally в конструкції обробкивиняткових ситуацій.

• Має концепцію вказівників на функції

• Підтримує множинне наслідування класів

• Синтаксичні конструкції для інтерфейсів, делегатіввідсутні

• Не підтримує атрибути

• Не має такої можливості

C++

Наслідування

Інкапсуляція

Поліморфізм

© Denys Prylutskyi, 2015

Підсумки

•Value and Reference types

•Перевизначення методів1

•Boxing, Unboxing

•Явне та неявне приведення типів.

•Втрата даних2

•Абстрактні класи, інтерфейси:

•Різниця між інтерфейсами та абстр.класами.

•Наслідування інтерфейсів.

3

•Equals, GetHashCode

•Garbage collector (brief overview)4

© Denys Prylutskyi, 2015

Практичне завдання

“Talk is cheap. Show me the code.”- Linus Torvalds

Рекомендована література

1. A. Troelsen “C# 6.0 and the .NET 4.6 Framework”

2. H. Schildt “C# 4.0 The Complete Reference”

3. J. Richter “CLR via C#”

4. J. Skeet “C# in Depth”

5. Stackoverflow.com

Лектор: Maksym Muratov, 2016