3.53M
Category: programmingprogramming

Технології програмування КС лекція 1 (.NET)

1.

Технології програмування КС
лекція 1 (.NET)
Проф. Цимбал О.М., кафедра ТАВР,
ХНУРЕ, Харків, Україна

2.

Структура програмної бібліотеки .NET (з офіційного сайту компанії Microsoft)

3.

Структура програмної бібліотеки .NET (з офіційного сайту компанії Microsoft)

4.

Структура програмної бібліотеки .NET (з офіційного сайту компанії Microsoft)

5.

Структура програмної бібліотеки .NET (з офіційного сайту компанії Microsoft)

6.

7.

C++/CLI та .NET
Джерела:
Stephen R.G. Fraser. Pro Visual C++/CLI and the .NET 2.0 Platform, 2006.
Marcus Heege. Expert C++/CLI .NET for Visual C++ Programmers, 2007.
Gordon Hogenson. Foundations of C++/CLI. The Visual C++ Language for .NET 3.5, 2008.
Julian Templeman. Microsoft Visual C++/CLI Step by step, 2013.
Як сказано у передмові до Фрейзера, будь-яка книжка є неповною і нагадує кімнату
з трьома стінами. Трьох стін не вистачає, бо четвертою стіною є читач книжки,
якому, в нашому випадку необхідно писати код.
Що ж таке С++/CLI? Це самодостатня, базована компонентній моделі мова
програмування, подібно до C# та Java, виведена з С++.
Крім того, С++/CLI базується на С++, що є високорівневою мовою, своєрідним
розширенням мови С за рахунок ООП та шаблонів. Але що таке CLI?
CLI означає Common Language Interface. Інакше, це специфікація, що описує
виконуваний код та простір запуску (runtime environment), що дозволяють багатьом
високорівневим мовам використатися на різних комп’ютерних платформах без
перезапису для певної специфічної архітектури.
С++/CLI є засобом програмування .NET на С++, як С# або VB.NET.

8.

C++/CLI та .NET
Особливості реалізації С++/CLI. Дескриптори та покажчики.
С++/CLI використає позначення ^. Це викликає певні запитання.
В С++ ‘*’ означає покажчик, в С++/CLI ‘^’ означає дескриптор, ‘*’ означає
справжній покажчик, який розміщується в купі CRT (CRT heap), в той час як
дескриптор означає «безпечний покажчик», що розміщується в керованій
купі (managed heap). Дескриптори можуть розглядатися як посилання і, на
відміну від справжніх покажчиків не спричиняють витік пам’яті під час
видалення, оскільки цим займається GC і вони не мають фіксованих адрес і
видаляються під час виконання.
Для створення нового посилання на певний клас або значення типу, ми
маємо розміщувати його з ключовим словом gcnew, наприклад:
System::Object ^x = gcnew System::Object();
Ключове слово NullPtr означає нульове посилання.

9.

Порядок розробки Windows Form – проекта на С++
1. Створити порожній CLR – проект (CLR Empty project).

10.

Порядок розробки Windows Forms – проекта на С++
2. У створений CLR – проект додаємо новий елемент.

11.

Порядок розробки Windows Form – проекта на С++
3. У розділі UI обираємо Window Form.

12.

Порядок розробки Windows Form – проекта на С++
4. Як результат, створюється форма

13.

Порядок розробки Windows Form – проекта на С++
5. Обираємо файл MyForm.cpp і додаємо у нього код:
using namespace System;
using namespace System::Windows::Forms;
[STAThreadAttribute]
void Main(array<String^>^ args) {
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
Project2::MyForm form;
Application::Run(%form);
}

14.

Порядок розробки Windows Form – проекта на С++
6. У властивостях проекту - Linker-> System-> Subsystem вказуємо Windows (/SUBSYSTEM:WINDOWS)

15.

Порядок розробки Windows Form – проекта на С++
7. У властивостях проекту - Linker-> Advanced вказуємо точку входу (Entry Point ) Main

16.

Порядок розробки Windows Form – проекта на С++
8. Запустити проект та впевнитися у його працездатності

17.

Розробка проекту Windows Form. Особливості реалізації програми
// MyForm.cpp file
#include "MyForm.h"
using namespace System;
using namespace System::Windows::Forms;
[STAThreadAttribute]
//надання інформації про однопотоковість single-threaded apartment (STA),
void Main(array<String^>^ args) {
// Увімкнення візуальних ефектів Windows XP перед створенням елементів керування
Application::EnableVisualStyles();
// Визначення зворотної сумісності з засобами відображення тексту
Application::SetCompatibleTextRenderingDefault(false);
Project7::MyForm form;
// Створення форми
Application::Run(%form);
// Запуск методу Application::Run() для завантаження форми
}

18.

The development of Windows Form – project
// MyForm.h file
#pragma once
namespace Project7 {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Summary for MyForm
/// </summary>
public ref class MyForm : public
System::Windows::Forms::Form
{
public:
MyForm(void) { InitializeComponent(); }
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~MyForm() { if (components) { delete components; } }
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->components = gcnew
System::ComponentModel::Container();
this->Size = System::Drawing::Size(300,300);
this->Text = L"MyForm";
this->Padding =
System::Windows::Forms::Padding(0);
this->AutoScaleMode =
System::Windows::Forms::AutoScaleMode::Font;
}
#pragma endregion
};
}
English     Русский Rules