Microsoft.NET Первая лекция. COM Доступ к компонентам только через интерфейсы Назначение уникальных идентификаторов компонентам и интерфейсам Регистрация.

Презентация:



Advertisements
Похожие презентации
ФИЛОСОФИЯ.NET Любому современному программисту, который желает идти в ногу с последними веяниями, каждые несколько лет приходится переучиваться.
Advertisements

Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
1 Умение мыслить объектно (проектирование архитектуры) Культура кодирования Знание языка и технологий Знание языка и технологий Понимание процесса Задача.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
АССОЦИАТИВНЫЕ КОЛЛЕКЦИИ Лекция 6 1. Отличие от последовательных 2 В последовательной коллекции каждый элемент ассоциируется с номером, начиная с 0. В.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Платформа Microsoft.NET Кафедра системного программирования С.-Петербургского государственного университета Андрей А.Терехов,
Обобщения ( generics) Обобщения – это классы, структуры, интерфейсы и методы, в которых некоторые типы сами являются параметрами. Эти типы перечисляются.
Test 6 Вопрос 1. Как можно уничтожить объект в Java? a)присвоить null всем ссылкам на объект b)вызвать Runtime.getRuntime().gc() c)вызвать метод finalize()
Java. Part 2. Спецификаторы доступа public private protected не указан – доступ в пределах пакета Могут использоваться перед классами, методами, полями.
C# От основ к эффективному коду Дейнега Василий Михайлович It Works (itw66.ru)
Вперёд ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЦЕЛИ: ЦЕЛИ: 1. Средство для задания действий, которые должны быть выполнены машиной.(Машинный язык) 1. Средство для задания.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Язык программирования C# Дмитрий Сошников
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Язык C++ Лекция 2. Недостатки enumов Засорение namespaceа, в котором находится enum Соответственно, члены enumа должны иметь уникальный префикс.
.NET framework Колотаев А.В.
1 Java 1. ВВЕДЕНИЕ В КЛАССЫ И ОБЪЕКТЫ. 2 ООП Базовый способ борьбы со сложностью программных продуктов. Методология программирования, основанная на представлении.
Транксрипт:

Microsoft.NET Первая лекция

COM Доступ к компонентам только через интерфейсы Назначение уникальных идентификаторов компонентам и интерфейсам Регистрация компонент в реестре Отсутствие привязки к конкретному языку

Java Выполнение байт-кода на виртуальной машине Just in time compilation (JIT) Единая объектная модель Богатая стандартная библиотека Обязательная сборка мусора Кроссплатформенность

Microsoft.NET

Объектная модель Все типы так или иначе приводимы к object Существуют типы, передающиеся по ссылке и по значению Для типов, передающихся по значению, при приведении к object и обратно осуществляются операции boxing/unboxing

object class object { public virtual bool Equals(object obj); public static bool Equals(object objA, object objB); public static bool ReferenceEquals(object objA, object objB); public virtual int GetHashCode(); public Type GetType(); public virtual string ToString (); ~object(); // protected void object.Finalize() protected object MemberwiseClone(); }

Сборка мусора

Базовый синтаксис C++/CLI Объявление типов public ref class RefT {}; public value class ValueT {}; public interface class I {}; public enum class E {}; Managed-cсылки, выделение памяти Form^ my_form = gcnew Form();

Взаимодействие.NET и Native C/C++ Platform Invoke [DllImport ("user32.dll")] static extern bool MessageBeep (System.UInt32 type); Выделение managed/unmanaged-блоков #pragma managed #pragma unmanaged Умные указатели pin_ptr, interior_ptr, gcroot

Маршаллинг строк static System::String^ ConvertString(const std::string& str) { return ConvertString(str.c_str()); } static System::String^ ConvertString(const char* str) { return gcnew System::String(System::Runtime::InteropServices::Marshal::PtrToStringAnsi( System::IntPtr((void*)str))); } static std::string ConvertString(System::String^ str) { System::IntPtr hg = System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(str); std::string result(reinterpret_cast (hg.ToPointer())); System::Runtime::InteropServices::Marshal::FreeHGlobal(hg); return result; }

pin_ptr – указатель, фиксирующий объект static const int size = 1000; int main(array ^args) { array ^ arr = gcnew array (size); pin_ptr ptr = &arr[0]; memset(ptr, 0, size * sizeof(int)); // any native fuction return 0; }

interior_ptr – указатель, отслеживающий перемещения объекта void main() { DoLotsOfAllocs(); Test^ t = gcnew Test(); t->m_i = 99; interior_ptr p = &t->m_i; printf("%p %d\r\n",p,*p); // prints "00AC9B3C 99" DoLotsOfAllocs(); printf("%p %d\r\n",p,*p); // prints "00AA8D18 99" }

gcroot – «корневая» ссылка struct Native { gcroot _form; Native() : _form(gcnew Form()) { } Form^ get_form() { return _form; } }; void native_foo(Native native) { native.get_form()->ShowDialog(); } int main(array ^args) { native_foo(Native()); return 0; }

Взаимодействие.NET и COM

Генерация managed metadata proxy > tlbimp MyModule.dll\1 Исходный метод: void SomeMethod([out, retval] VARIANT_BOOL*);.NET-метод: bool SomeMethod();

Mono, как opensource-реализация.NET Работает на Windows, *nix (Linux, *BSD, MacOS и Solaris) Официально признана Microsoft, как реализация платформы.NET за исключением Windows forms, ASP.NET и ADO.NET В комплект поставки входит GTK#, как альтернатива Windows Forms

Языки программирования для платформ.NET/Mono F# (Microsoft research) Nemerle Boo IronPython A# Delphi Etc…

IDE for.NET Microsoft Visual Studio (C#, C++, VB.NET) SharpDevelop (C#) MonoDevelop (C#, C++, VB.NET…) Eclipse Borland Developer Studio

Преимущества.NET JIT-компиляция Сборка мусора Богатая информация о сущностях языка (Reflection, Call stack в исключениях и т.д.) Богатый framework Переносимость Прозрачная поддержка большого количества языков Очень дешёвая разработка

Недостатки.NET JIT-компиляция (обходится) Сборка мусора (понимание механизма решает почти все проблемы) Неполная переносимость Зависимость от frameworkа