РФ_Лаб_ООП_02

Содержание

Слайд 2

Лабораторная работа 2

Задание :
Доработать класс (по заданию преподавателя) и программу, иллюстрирующую

Лабораторная работа 2 Задание : Доработать класс (по заданию преподавателя) и программу,
возможности данного класса
Интерфейс программы:
В программе должны быть:
Несколько объектов данного класса,
окна ввода параметров этих объектов,
окна вывода вычисленных параметров и свойств объектов,
кнопки, по которым вызываются функции, иллюстрирующие возможности этих объектов
окно для графического отображения объектов.
Основная задача:
Перегрузить заданные операции и показать их использование в программе
Показать возможности графического отображения объектов

Слайд 3

Common Language Runtime — CLR

Существуют два принципиально отличающихся вида приложений C++, которые

Common Language Runtime — CLR Существуют два принципиально отличающихся вида приложений C++,
можно разрабатывать в среде Visual C++:
- программы, написанные на версии языка C++, определенной стандартом ISO/IEC (International Standards Organization/International Electrotechnical Commision)
- программы, выполняющиеся под управлением среды CLR и реализованные с помощью расширенной версии языка C++, которая носит название C++/CLI
Общеязыковая исполняющая среда (Common Language Runtime) — это стандартизованная среда выполнения программ, написанных на широком диапазоне высокоуровневых языков, включая Visual Basic, C#, C++ и др.
C++ для среды CLR называется C++/CLI — это язык C++ для инфраструктуры CLI (Common Language Infrastructure)

Слайд 4

Common Language Runtime — CLR

Общеязыковая исполняющая среда (Common Language Runtime) и набор

Common Language Runtime — CLR Общеязыковая исполняющая среда (Common Language Runtime) и
библиотек, называемых библиотеками классов, образуют среду разработки Visual C++ , которая называется .NET Framework
Библиотека классов .NET Framework обеспечивает функциональную поддержку, которая необходима коду при выполнении под управлением среды CLR, независимо от применяемого языка программирования, поэтому программы, написанные на C++, C# или любом другом языке, поддерживающем среду .NET Framework, используют одни и те же библиотеки .NET

Слайд 5

C++/CLI

Инфраструктура CLI — это спецификация среды виртуальной машины, которая позволяет приложениям,

C++/CLI Инфраструктура CLI — это спецификация среды виртуальной машины, которая позволяет приложениям,
написанным на разнообразных высокоуровневых языках программирования, выполняться в различных системах без изменения и перекомпиляции оригинального исходного кода.
Инфраструктура CLI специфицирует стандарт промежуточного языка виртуальной машины, в который компилируется исходный код высокоуровневого языка программирования.
Инфраструктура CLI определяет общий набор типов данных, называемый общей системой типов (Common Type System — CTS), который должен использоваться программами, написанными на любом языке, ориентированном на реализацию инфраструктуры CLI. Можно определять собственные типы данных, но их определение должно подчиняться ряду правил, чтобы они были согласованы со спецификацией среды CLR.

Слайд 6

Common Language Runtime — CLR

Код C++, выполняемый под управлением среды CLR, называется

Common Language Runtime — CLR Код C++, выполняемый под управлением среды CLR,
управляемым кодом C++, поскольку данные и код находятся под контролем среды CLR.
В программах CLR освобождение памяти, динамически выделенной для размещения данных, осуществляется автоматически, что позволяет исключить главный источник ошибок “родных” приложений C++.
В неуправляемом коде C++ необходимо самостоятельно заботиться о выделении и освобождении памяти во время выполнения программы, и самостоятельно обеспечивать безопасность.

Слайд 7

Common Language Runtime — CLR

В среде CLR поддерживается собственный механизм динамической памяти.

Common Language Runtime — CLR В среде CLR поддерживается собственный механизм динамической

Среда CLR автоматически очищает память, поэтому не нужно использовать оператор delete в программах, написанных для среды CLR.
Среда CLR может также время от времени упорядочивать память, избегая фрагментации.
Таким образом, среда CLR исключает вероятность утечек памяти и ее фрагментации. Механизм управления очисткой динамической памяти среды CLR называется сборкой “мусора”.
Для выделения памяти в программе C++/CLI используется оператор gcnew вместо оператора new, а префикс gc показывает, что память выделяется в очищаемой динамической памяти, а не в “родной куче” C++.

Слайд 8

Указатели и ссылки в среде CLR

Применять обычные “родные” указатели C++ для очищаемой

Указатели и ссылки в среде CLR Применять обычные “родные” указатели C++ для
динамической памяти нельзя, так как местоположение данных изменяется из-за автоматической сборки “мусора” и исключения фрагментации неиспользуемых блоков.
Для доступа к объектам в динамической памяти, который позволяет обновлять адреса при перемещении элементов данных используются два способа: отслеживаемые дескрипторы, представляющие собой некоторые аналоги указателей из “родного” C++, и отслеживаемые ссылки — эквивалента “родных” ссылок C++ в программах CLR.

Слайд 9

Common Language Runtime — CLR

Отслеживаемые дескрипторы (tracking handle) похожи на “родные” указатели

Common Language Runtime — CLR Отслеживаемые дескрипторы (tracking handle) похожи на “родные”
C++, между ними есть и существенные отличия. Дескриптор хранит адрес, который автоматически обновляется сборщиком “мусора”, если объект, на который он ссылается, перемещается во время дефрагментации динамической памяти.
Но арифметика адресов, как у “родных” указателей, к таким указателям неприменима, кроме того, приведение дескрипторов не допускается.
Переменные, размещенные в динамической памяти среды CLR,
включая ссылочные типы среды CLR, не могут быть объявлены в глобальной области памяти.

Слайд 10

Отслеживаемый дескриптор

Пример:
Отслеживаемый дескриптор по имени str, который способен хранить адрес объекта

Отслеживаемый дескриптор Пример: Отслеживаемый дескриптор по имени str, который способен хранить адрес
типа String:
String^ str;
При объявлении дескриптора, он автоматически инициализируется нулем, поэтому ни на что не ссылается. Для явного обнуления дескриптора служит ключевое слово nullptr
Str = nullptr; // Обнулить дескриптор

Слайд 11

Отслеживаемый дескриптор

Можно явно инициализировать дескриптор при его объявлении: String^ str1(L“Hello!!!");
Этот оператор

Отслеживаемый дескриптор Можно явно инициализировать дескриптор при его объявлении: String^ str1(L“Hello!!!"); Этот
создает в динамической памяти объект String, который содержит строку, заключенную в скобки; адрес нового объекта помещается в переменную str1
L“Hello!!!" – тип const wchar_t*, а не String

Слайд 12

Массивы среды CLR

Память для массива CLR выделяется в очищаемой динамической памяти.

Массивы среды CLR Память для массива CLR выделяется в очищаемой динамической памяти.
Тип переменной массива указан ключевым словом array. При этом нужно указать тип элементов массива в угловых скобках, следующих за ключевым словом array.
Объявление переменной массива (ссылки на массив типа int):
array^ Arr;
Можно создать массив CLR, используя оператор gcnew, одновременно с объявлением переменной массива.
array^ Arr = gcnew array(100);
Создается массив для хранения 100 целых чисел
for(int i = 0 ; i < 100; i++)
Arr[i] = i * 2;

Слайд 13

Расположение компонент на форме

Компоненты берутся из Панели элементов и размещаются на форме

Расположение компонент на форме Компоненты берутся из Панели элементов и размещаются на форме

Слайд 14

Расположение компонент на форме

Свойства компонент задаются в панели Свойства, например свойство

Текст для

Расположение компонент на форме Свойства компонент задаются в панели Свойства, например свойство
компонента Button (кнопка)
Компоненты TextBox (окно ввода текста)

Слайд 15

Расположение компонент на форме

Свойства компонент задаются в панели Свойства, например свойство

Только чтение

Расположение компонент на форме Свойства компонент задаются в панели Свойства, например свойство
для компонента TextBox

Слайд 16

Создание событий для компонент

События для компонент задаются в панели Свойства, например

событие Click

Создание событий для компонент События для компонент задаются в панели Свойства, например
для объекта Button
Имя файла: РФ_Лаб_ООП_02.pptx
Количество просмотров: 31
Количество скачиваний: 0