1
0
Prechádzať zdrojové kódy

Merge branch 'master' of http://213.155.192.79:3001/ypv/ISRPO

ypv 2 rokov pred
rodič
commit
20b37ba15c

+ 19 - 0
Лекции/Tencent/Tencent.md

@@ -0,0 +1,19 @@
+# Tencent
+Tencent — китайская частная инвестиционная холдинговая компания, основана в 1998 году, штаб-квартира расположена в Шэньчжэене, официально зарегистрирована на Каймановых островах. Является одной из крупнейших инвестиционных и венчурных компаний Китая и всего мира. Дочерние компании Tencent, как в самом Китае, так и в других странах мира, специализируются на различных областях высокотехнологичного бизнеса, в том числе различных интернет-сервисах, разработках в области искусственного интеллекта и электронных развлечений. 
+Среди многочисленных сервисов Tencent — социальные сети, музыкальные и веб-порталы, средства электронной коммерции, поисковые и платежные системы, мобильные и онлайн-игры, облачные базы данных и почтовые сервисы. Tencent принадлежат наиболее распространённый в Китае сервис мгновенного обмена сообщениями Tencent QQ и мобильное приложение для передачи текстовых и голосовых сообщений WeChat. Компания владеет крупнейшей в Китае и третьей в мире по количеству зарегистрированных пользователей, после Facebook и YouTube, социальной сетью Qzone. 
+В 2018 году капитализация компании превысила $500 млрд — первой среди азиатских технологических компаний. Tencent была признана одной из самых инновационных компаний в мире по версии Boston Consulting Group и Fast Company соответственно. 
+История
+Компания была основана в ноябре 1998 года Ма Хуатэном и партнёрами (Чжан Чжидун, Сюй Чэнье, Чэнь Идань и Цзэн Лицин) под названием Tencent Inc. В феврале 1999 года компания представила программу мгновенного обмена сообщениями с китайским интерфейсом — OICQ (Open ICQ). В октябре 1999 года Tencent получила от американской и гонконгской компаний венчурное финансирование в размере $2,2 млн в обмен на 20 % акций. Вскоре мессенджер был переименован в Tencent QQ из-за сходства названия с ICQ. В 2001 году южно-африканская издательская компания Naspers приобрела 46,5-процентную долю в Tencent. 
+16 июня 2004 года компания провела первичное размещение акций на основной площадке Гонконгской фондовой биржи, в 2008 году её акции были включены в основной индекс биржи. К концу 2017 года Tencent по своей рыночной капитализации, превышающей 500 млрд долларов, заняла пятое место в мире. 
+С 2004 года одним из основных направлений деятельности стали видеоигры. В 2011 году Tencent приобрела контрольный пакет акций компании — разработчика видеоигр Riot Games, в конце 2015 года эта компания была поглощена полностью. В июне 2016 Tencent выкупила 84 % Supercell за $8,2 млрд. 21 мая 2018 года компания купила 80 % акций студии-разработчика Path of Exile — Grinding Gear Games. 
+В 2011 году было запущено мобильное приложение для передачи текстовых и голосовых сообщений WeChat. К 2018 году количество активных пользователей превысило 1 млрд. 
+8 ноября 2017 года акции дочерней компании China Literature (онлайн-литература) были размещены на Гонконгской фондовой бирже, что принесло более HK$7 млрд ($1 млрд). 12 декабря 2018 года американские депозитарные расписки другой дочерней компании, Tencent Music Entertainment (онлайн-музыка), были размещены на Нью-Йоркской фондовой бирже, было выручено около полумиллиарда долларов. В обоих случаях Tencent сохранила за собой контрольный пакет акций. 
+23 июня 2020 года компания Tencent приобрела у независимой студии Klei Entertainment лицензию на разработку мобильной игры Don't Starve: Newhome, а 22 ноября 2020 года приобрела контрольный пакет акций самой студии. По итогам 2020 года по версии исследовательской компании App Annie холдинг Tencent занял первое место в мире по выручке среди издателей приложений. 
+По итогам 2021 года Tencent возглавил рейтинг самых дорогих частных компаний Китая. По состоянию на 2022 год бренд Tencent (204,4 млрд долларов) являлся самым дорогим брендом страны. 
+Деятельность
+В структуре выручки компании треть приходится на онлайн-игры (104 млрд юаней из 313 млрд в 2018 году), далее следуют социальные сети (73 млрд юаней) и реклама в Интернете (58 млрд юаней), ещё 78 млрд юаней принесли финансовые услуги, облачные вычисления, производство теле- и кинопродукции и другие услуги. 
+Деятельность компании почти полностью сосредоточена в материковом Китае, на другие страны приходится всего около 3 % выручки. Tencent достаточно активно инвестирует в зарубежные компании, поэтому перевес внутреннего рынка по активам не столь велик — 73 % приходится на материковый Китай и Гонконг, 27 % активов приходятся на Северную Америку, Европу и другие страны Азии. Инвестиционное портфолио составляет около половины активов компании (на 2018 год 369 млрд юаней из 724 млрд). 
+У сервиса Tencent QQ на 2018 год было 807,1 млн активных пользователей (в том числе 699,8 млн со смартфонов), WeChat — 1,0976 млрд, Qzone — 532,4 млн (MAU, monthly active user accounts, учётные записи пользователей, востребованные не менее раза в месяц). На конец 2018 года было более 160 млн подписчиков на платные услуги. 
+В 2020 году выручка Tencent составила 482 млрд юаней (около 73,9 млрд долларов США), что на 28 % больше, чем в 2019 году. Чистая прибыль компании достигла 123 млрд юаней (+ 30 % в годовом исчислении). Почти треть общего дохода Tencent пришлась на финансовые технологии и коммерческие услуги (38,5 млрд юаней). 
+По итогам 2021 года чистая прибыль Tencent выросла на 1 % в годовом исчислении до 123,8 млрд юаней (19,4 млрд долл. США), выручка достигла 560,1 млрд юаней, увеличившись на 16 %, инвестиции в исследования и разработки выросли на 33 % и составили 51,8 млрд юаней. 
+По состоянию на 2022 год Tencent являлся самым прибыльным среди китайских разработчиков мобильных игр, опережая таких гигантов как NetEase и miHoYo. Также Tencent является официальным дистрибутором игр и консолей Nintendo в Китае. 

+ 300 - 0
Лекции/Visual Basic/Visual Basic.txt

@@ -0,0 +1,300 @@
+#Visual Basic
+
+Бондаренко Виталий группа 47
+
+Microsoft Visual Basic — язык программирования, а также интегрированная среда разработки программного обеспечения, разрабатываемые корпорацией Microsoft. Язык Visual Basic унаследовал дух, стиль и отчасти синтаксис своего предка — языка BASIC, у которого есть немало диалектов. В то же время Visual Basic сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования. Интегрированная среда разработки VB включает инструменты для визуального проектирования пользовательского интерфейса, редактор кода с возможностью IntelliSense и подсветкой синтаксиса, а также инструменты для отладки приложений.
+
+Visual Basic также является хорошим средством быстрой разработки (RAD) приложений баз данных для операционных систем семейства Microsoft Windows. Множество готовых компонентов, поставляемых вместе со средой, призвано помочь программисту сразу же начать разрабатывать бизнес-логику бизнес-приложения, не отвлекая его внимание на написание кода запуска программы, подписки на события и другие механизмы, которые VB реализует автоматически.
+
+Первое признание серьёзными разработчиками Visual Basic получил после выхода версии 3. Окончательное признание как полноценного средства программирования для Windows — при выходе версии 5. Версия VB6, входящая в состав Microsoft Visual Studio 6.0, стала по-настоящему зрелым и функционально богатым продуктом.
+
+Элементы языка
+Типы данных
+Переменные в Visual Basic объявляются оператором Dim, после которого указывается имя, затем - ключевое слово As и тип переменной. Если тип опущен, то ключевое слово As не указывается и переменная объявляется как Variant. Если не указать конструкцию Option Explicit в разделе деклараций, то явного объявления переменных не требуется и они автоматически будут созданы при первом использовании. Данное поведение может привести к снижению скорости выполнения программы, так как необъявленные переменные будут иметь тип Variant, а также возможны логические ошибки, связанные с неверным вводом имени имеющейся переменной или риска конфликтов в приложении, когда область определения переменной не совсем ясна.
+
+Dim strMessage As String 'объявление переменной символьного типа 
+Dim iProductCount As Integer 'объявление переменной целочисленного типа 
+Dim dt70YearsOfVictory As Date 'объявление переменной для хранения даты и времени
+Dim otherValue ' тип не указан, переменная типа Variant
+
+Public Sub Main()
+    strMessage = "Привет, Мир!" 
+    iProductCount = 125 
+    dt70YearsOfVictory  = #5/9/2015 2:00:00 PM# ' дата 9 мая 2015 14:00:00
+
+    otherValue = 12.5 ' тип переменной Variant, подтип Double.
+    otherValue = "Википедия" ' тип переменной Variant, подтип String.
+End Sub
+
+Операторы
+Язык Visual Basic содержит множество операторов, которые отвечают за арифметические операции, операции сравнения и присвоения, а также конкатенации.
+
+Оператор присвоения
+
+Знак равенства (=) используется для присвоения значения переменной. Также возможно использование ключевого слова Let перед именем переменной. В ранних версиях языка BASIC его наличие было обязательным, но в Visual Basic он оставлен для совместимости. Для присвоения переменной объектного типа, необходимо наличие ключевого слова Set. Примеры: nVar = 10, Let iCount = 20, Set refDouble = objClass.
+Многократное присваивание, так как это реализовано в языке C, невозможно. A = B = C не означает, что A, B и C будут иметь равные значения. VB оценит выражение B = C и в переменную A присвоит результат True или False, 0 или ?1, в зависимости от типа.
+
+Арифметические операторы
+
+сложение (+), вычитание (-), умножение (*), деление (/)
+возведение в степень (^). Пример: 2 ^ 3 = 8
+целочисленное деление (\). Делит первое число на второе, отбрасывая (не округляя) дробную часть. Пример: 5 \ 2 = 2
+деление по модулю (Mod). Делит первое число на второе, возвращая только остаток от деления. Пример: 5 Mod 2 = 1
+Операторы сравнения
+
+равенство (=). Пример: If nVar = 10 Then
+больше, чем и меньше, чем (> и <). Пример: If nVar > 10 Then
+больше или равно и меньше или равно (>= и <=). Пример: If nVar >= 10 Then
+не равно (<>). Пример: If nVar <> 10 Then
+сравнение объектов (Is). Определяет, ссылаются объектные переменные на тот же объект или на разные. Пример: If obj1 Is obj2 Then
+оператор подобия (Like). Сравнивает строковый объект с шаблоном и определяет, подходит ли шаблон. Пример: If strEmail Like "*@*.*" Then
+Логические операторы
+
+логическое И (And) — Обе части выражения должны быть истинными, чтобы всё выражение стало истинным. Пример: If (2 * 2 = 4) And (2 * 3 = 6) Then
+логическое ИЛИ (Or) — должно быть истинным хотя бы одно из выражений. Пример: If (2 * 2 = 5) Or (2 * 2 = 4) Then
+логическое отрицание (Not) — возвращает True, если условие ложно и наоборот. Пример: If Not(2 * 2 = 5) Then
+логическое исключение (Xor) — в выражении E1 Xor E2 возвращает True, если только E1 = True или только E2 = True, иначе — False.
+эквивалентность (Eqv) — оценивает эквивалентность двух выражений, возвращает True, если они имеют одинаковое значение.
+импликация (Imp) — возвращает False, если E1 = True и E2 = False, иначе — True.
+Операторы конкатенации
+
+Оператор (+) используется для конкатенации строк. Если обе части выражения имеют символьный тип, то операция склеивания строк будет успешной. Если одна из частей выражения, имеет числовой тип, но другая часть не может быть корректно преобразована к числу, то возникает ошибка приведения типов. Чтобы не допустить таких ситуаций, рекомендуется использовать соответствующие операторы для конвертации типов или применять оператор (&) для соединения строк.
+Оператор (&) производит автоматическое преобразование выражений и значений в строковой тип. Например, выражение str = "10" & 20 даёт результат «1020», а не «30». Если бы использовали оператор (+) в данном выражении, то VB привел бы выражение «10» к числовому типу 10, и в случае успеха, произвёл бы арифметическое сложение.
+Управляющие конструкции
+В Visual Basic, как и во многих языках программирования, существуют конструкции, предназначенные для управления порядком выполнения действий. Некоторые из конструкций, такие как GoSub и Return, оставлены для совместимости с ранними версиями языка BASIC, но реализация в виде отдельных процедур может обеспечить более структурированный код.
+
+Оператор ветвления
+Общий синтаксис:
+
+'Запись оператора ветвления в одну строку
+If <условие> Then [действие_когда_условие_истинно]
+
+'Такая запись позволит выполнить действия в зависимости от истинности условия
+If <условие> Then [действие_когда_условие_истинно] Else [действие_когда_условие_ложно]
+
+'Запись оператора ветвления в несколько строк
+If <условие> Then
+    [действие_когда_условие_истинно]
+ElseIf <условие2> Then
+    [действие_когда_условие2_истинно]
+ElseIf <условиеN> Then
+    [действие_когда_условиеN_истинно]
+Else
+    [действие_когда_условие_ложно]
+End If
+Оператор выбора
+Общий синтаксис:
+
+Select Case <проверяемое_значение> 'Переменная или выражение, которое требуется проверить по одному или нескольким условиям
+    Case <значение_1>              'Выполняется действие, если проверяемое значение будет соответствовать значению 1
+        [действие_1]
+    Case <значение_2>, <значение_3>, <значение_3> 'Проверяет список значений. Если найдено соответствие, то выполняется действие
+        [действие_2]
+    Case <значение_5> To <значение_6>       'Проверяет диапазон значений
+        [действие_3]
+    Case Is >= <значение_7>                 'Проверяет значение на истинность с условием
+        [действие_4]
+    Case Else                               'Выполняется действие, если ни одно из условий не выполнится
+        [действие_5]
+End Select
+Пример: вывод различных сообщений в зависимости от значения переменной
+
+'Введём переменную и дадим ей значение вручную 
+Dim X As Double  
+X = InputBox("Введите числовое значение переменной Х")  
+  
+Select Case X 'Проверим, подходит ли некоторой воображаемой функции наше значение  
+    Case Is < 5, Is >= 20, 12 To 15 'Диапазон подходящих значений  
+        MsgBox "Действительное значение для некоторой функции"  
+    Case Else 'Не подходящие значения  
+        MsgBox "Значение не может быть использовано в некоторой функции"  
+End Select
+Цикл со счётчиком
+Общий синтаксис:
+
+For <переменная> = <значение> To <конечное_значение> [Step <шаговое_значение>]
+    [блок_операторов]
+    [Exit For] 'Выход из цикла
+Next [переменная]
+Пример: подсчёт суммы чётных чисел от 1 до 100
+
+For I = 0 To 100 Step 2
+    Sum = Sum + I
+Next
+Совместный цикл
+Общий синтаксис:
+
+For Each <переменная> In <коллекция>
+    [блок_операторов]
+    [Exit For] 'Принудительный выход из цикла
+Next [переменная]
+Пример: выводит на экран каждый элемент из массива
+
+Dim strItem As Variant
+
+For Each strItem In Array("Яблоко", "Груша", "Слива")
+    Print strItem
+Next
+Цикл с условием
+Общий синтаксис:
+
+Do While <условие> 'Цикл выполняется, когда условие истинно
+    [блок_операторов]
+    [Exit Do] 'Принудительный выход из цикла
+Loop
+
+Do Until <условие> 'Цикл выполняется, когда условие ложно
+    [блок_операторов]
+    [Exit Do]
+Loop
+
+While <условие> 'Цикл выполняется, когда условие истинно
+    [блок_операторов]
+Wend
+Пример: Построчное чтение текстового файла
+
+Open "file.txt" For Input As #1
+    Do While Not EOF(1)          'Возвратит True, если ожидается конец файла
+        Line Input #1, strBuffer 'Чтение строки в переменную
+        Debug.Print strBuffer    'Вывод в окно отладки
+    Loop
+Close #1
+Цикл с постусловием
+Общий синтаксис:
+
+Do
+    [блок_операторов]
+    [Exit Do]
+Loop While <условие>
+
+Do
+    [блок операторов]
+    [Exit Do]
+Loop Until <условие>
+Процедуры и функции
+Подпрограммы являются одними из основных элементов языка. Они представляют собой процедуры и функции.
+
+Процедура начинается с оператора Sub и заканчивается End Sub, между которыми и помещается код. Процедуры могут вызываться или самим Visual Basic, например, реализованные в виде обработчиков событий, или другими процедурами и функциями. Имя процедуры обработки события состоит из имени объекта, знака подчёркивания и имени события:
+Private Sub Command1_Click() 'Событие будет вызвано при нажатии на элемент управления "Кнопка"
+    ...
+End Sub
+
+Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'Вызывается при перемещении указателя мыши в окне формы
+    ...
+End Sub
+На самом деле Visual Basic реализует цикл обработки оконных сообщений Windows. В примере с формой, цикл отфильтрует сообщение WM_MOUSEMOVE и автоматически вызовет процедуру Form_MouseMove с параметрами: какие кнопки мыши были нажаты, координаты указателя. Данный механизм скрывает от разработчика некоторые аспекты программирования в среде Windows, позволяя ему сразу приступить к написанию коммерческого кода. В большинстве случаев, класс решаемых задач не потребует от программиста знаний о сообщениях и оконных функциях. Но Visual Basic не ограничивает программиста самому реализовать обработку оконных сообщений. Это позволяет очень гибко подходить к построению приложений, но и потребует достаточного опыта для написания подобного кода, который может вызвать нестабильную работу программы вплоть до аварийного завершения.
+
+Функции в VB начинаются с ключевого слова Function и заканчиваются End Function. Возвращаемое значение функции присваивается переменной, совпадающее с названием функции. Для того, чтобы досрочно прервать выполнение процедуры или функции, существуют специальные операторы Exit Sub и Exit Function. Visual Basic 6.0 содержит встроенные функции для работы с файловой системой, датой и временем, математические функции, функции взаимодействия с системой, функции для работы со строками, функции приведения типов и функции осуществляющие финансовые расчёты. Также существуют недокументированные функции, которые позволяют работать, например, с указателями.
+Пример функции для решения квадратного уравнения:
+
+Private Sub Main()
+    Dim RetX1 As Double, RetX2 As Double
+    Dim strStatus As String
+    
+    strStatus = SolveQuadraticEquation(4, 6, 2, RetX1, RetX2) 'Решение уравнения 4*X^2 + 6*X - 2 = 0
+    
+    'Выводим ответ
+    MsgBox "Решение: " & strStatus & vbCrLf & _
+           "X1 = " & RetX1 & vbCrLf & _
+           "X2 = " & RetX2, vbInformation
+End Sub
+
+'Функция решения квадратного уравнения
+Public Function SolveQuadraticEquation(ByVal A As Double, _
+                                       ByVal B As Double, _
+                                       ByVal C As Double, _
+                                       ByRef X1 As Double, _
+                                       ByRef X2 As Double) As String
+    Dim D As Double
+    D = (B * B) - (4 * A * C) 'Получаем значение дискриминанта
+    
+    If D >= 0 Then
+        X1 = (-B - Sqr(D)) / (2 * A) 'Вычисляем корни уравнения
+        X2 = (-B + Sqr(D)) / (2 * A)
+
+        SolveQuadraticEquation = "Решение получено" 'Функция возвращает сообщение о решении
+    Else
+        SolveQuadraticEquation = "Дискриминант < 0. Корней нет"
+    End If
+End Function
+В этом примере можно заметить модификатор ByVal перед аргументами A, B и C. Это способствует тому, что параметры в функцию будут переданы по значению. Модификатор ByRef, напротив, передаёт значение по ссылке. Для такого типа модификатора, функция может модифицировать значения переменных, переданных в качестве параметров. Visual Basic по-умолчанию всегда передаёт значения по ссылке, если ни один из модификаторов не был указан.
+
+Модули и классы
+Программный код в Visual Basic хранится в модулях. Существуют всего три вида модулей: модуль формы (Form), стандартный модуль (Module) и модуль класса (Class Module).
+
+Модуль формы (расширение файла *.frm) является основой большинства приложений Visual Basic. Модуль формы содержит процедуры обработки события, общие процедуры и объявленные на уровне формы: переменные, константы, типы и внешние процедуры. Если открыть модуль формы в текстовом редакторе, можно увидеть описания формы и её элементов управления, включая их свойства. Код, размещённый в модуле формы, может ссылаться на другие формы или объекты приложения.
+Стандартный модуль (расширение файла *.bas) является контейнером для процедур, функций и объявлений, к которым обычно получают доступ другие модули приложения. Они могут содержать глобальную переменную (доступную всему приложению) или описанные на уровне модуля: переменные, константы, типы, внешние и глобальные процедуры. Код, размещённый в стандартном модуле, может быть не связан с определенным приложением; если не использовать ссылки на модуль формы или имена элементов управления, стандартный модуль может быть использован в других приложениях.
+Модуль класса (расширение файла *.cls) является основой объектно-ориентированного программирования в Visual Basic. Модуль класса используется для создания новых объектов. Эти объекты могут иметь собственные свойства, методы и события. Фактически, форма — просто модуль класса, который может содержать элементы управления, помещенные в него, и выводить их на экран. Классы могут содержать специальные процедуры Class_Initialize и Class_Terminate, которые фактически являются конструктором и деструктором.
+Объектно-ориентированное программирование
+Простое взаимодействие между объектами является одним из базовых составляющих парадигмы Visual Basic. Сам объект называют экземпляром класса. Объектная модель VB предоставляет различные классы для работы с формами, элементами управления, буфером обмена, коллекциями, экраном и т. д. Для взаимодействия с другими объектами класс предоставляет разработчику интерфейс, состоящий из свойств, методов и событий.
+
+Создание нового объекта из класса возможно ранним или поздним связыванием. Для раннего связывания используется ключевое слово New перед именем класса. Для позднего связывания используется функция CreateObject, возвращающая ссылку на созданный объект. Присваивание ссылок осуществляется в переменные с типом Object, используя оператор Set. Доступ к методам и свойствам класса происходит через оператор точку ., который ставится сразу после имени переменной объектного типа. Если класс содержит события, то переменные объявляются с ключевым словом WithEvents, тем самым будут доступны процедуры обработки событий.
+
+Пример показывает взаимодействие программы с библиотекой Microsoft Scripting Runtime, предоставляющей объекты для работы с файловой системой:
+
+Public Sub Main()
+    Dim objFSO As New FileSystemObject 'Создаём экземпляр класса, используя оператор New
+    Dim objWindows As Folder
+    
+    Set objWindows = objFSO.GetFolder(Environ("SYSTEMROOT")) 'Вызываем метод класса GetFolder и присваиваем ссылку на полученный объект
+    
+    MsgBox "Папка Windows: " & objWindows.Path 'Читаем свойства класса
+    MsgBox "Дата создания: " & Format(objWindows.DateCreated, "YYYY-MM-DD H:mm:ss")
+    
+    Dim sTextFilePath As String
+    Dim objTS As TextStream
+    
+    sTextFilePath = objFSO.BuildPath(Environ("TEMP"), "Тестовый файл.txt") 'Метод с двумя параметрам возвращает значение типа String
+    
+    Set objTS = objFSO.CreateTextFile(sTextFilePath, True)
+    objTS.Write "Привет, Википедия!"
+    objTS.Close
+        
+    objFSO.DeleteFile sTextFilePath, True
+    
+    Set objFSO = Nothing     'Присваивая Nothing, происходит освобождение ссылки, и объект может вызвать процедуру деструктора
+    Set objWindows = Nothing 'VB автоматически вызывает деструктор, если на объект больше не ссылаются
+    Set objTS = Nothing
+End Sub
+Visual Basic позволяет разработчику самому создавать новые классы. В отличие от других языков программирования, таких как Java и C++, Visual Basic имеет неполную поддержку ООП.
+
+Как известно, абстрактный класс необходим, чтобы предоставить шаблон для интерфейса другим классам. В Visual Basic классы имеющие члены класса, но не содержащие реализацию, можно использовать в качестве абстрактных классов, но фактически они ими не являются. Из классов Visual Basic всегда можно создать объекты, даже если они не содержат кода[4]
+
+Принцип инкапсуляции действует в Visual Basic. Чтобы разграничить доступ к членам класса, служат модификаторы Public, Private и Friend, используемые при описании процедур, функций, констант, переменных и пользовательских типов.
+
+Наследование реализации не поддерживается. Visual Basic обеспечивает только поддержку наследования интерфейса через оператор Implements. При наследовании интерфейса любой класс может действовать как базовый класс интерфейса. Вообще любой класс, может выступать как базовый класс интерфейса.
+
+Полиморфизм обеспечивается только через интерфейсы, так как наследование VB не поддерживает. Реализация полиморфизма показана на примере классов Автомобиль и Самолёт реализующие интерфейс класса Транспорт.
+
+'Класс ITransport.cls
+Public Function GetMaxSpeed() As Long
+End Function
+'Класс CAuto.cls
+Implements ITransport 'Наследуем интерфейс
+
+Private Function ITransport_GetMaxSpeed() As Long 'Реализация метода
+    ITransport_GetMaxSpeed = 240
+End Function
+'Класс CFly.cls
+Implements ITransport
+
+Private Function ITransport_GetMaxSpeed() As Long
+    ITransport_GetMaxSpeed = 700
+End Function
+'Стандартный модуль Program.bas
+Option Explicit
+
+Public Sub Main()
+    Dim T As ITransport 'Объявляем переменную с типом ITransport
+    
+    Set T = New cAuto
+    WhatTransportSpeed T 'Передаем ссылку в процедуру, которая вызовет нужный метод класса, в зависимости от реализации
+    
+    Set T = New cFly
+    WhatTransportSpeed T
+End Sub
+
+'Функция имеет аргумент, который принимает ссылку на объект, реализующий интерфейс ITransport
+Public Sub WhatTransportSpeed(Transport As ITransport)
+    MsgBox "Максимальная скорость: " & Transport.GetMaxSpeed()
+End Sub

+ 45 - 0
Лекции/Xamarin_Forms/Xamarin_Forms.md

@@ -0,0 +1,45 @@
+#xamarin_Forms
+
+Захарёнок Егор 47
+
+Xamarin.Forms — это платформа пользовательского интерфейса с открытым кодом. С помощью Xamarin.Forms разработчики могут создавать приложения для Xamarin.Android, Xamarin.iOS и Windows на основе общей базы кода.
+Xamarin.Forms позволяет разработчикам создавать пользовательские интерфейсы в XAML с помощью кода программной части в C#. Эти интерфейсы на каждой платформе подготавливаются к просмотру как собственные элементы управления.
+
+Оболочка
+
+Оболочка Xamarin.Forms упрощает разработку мобильных приложений, предоставляя основные возможности, которые необходимы для большинства приложений. Ниже приведены некоторые примеры функций, предоставляемых этой оболочкой:
+Общие возможности навигации
+Схема навигации на основе URI
+Обработчик интегрированного поиска
+
+Визуальный элемент материала Xamarin.Forms
+
+Визуальный элемент материала Xamarin.Forms используется для применения правил проектирования материалов к приложениям Xamarin.Forms. Визуальный элемент материала Xamarin.Forms использует свойство Visual для выборочного применения пользовательских отрисовщиков к пользовательскому интерфейсу, что обеспечивает единообразный внешний вид и поведение в iOS и Android.
+
+Преимущества Xamarin.Forms
+
+Во-первых, это всем нам хорошо знакомый C# и .NET. Если вы давно уже пишите на шарпах, то вам не надо тратить много времени на изучение нескольких новых фреймворков, а то и языков. Ну или, по крайней мере, в начале не надо, и вы можете достаточно быстро стартануть, используя свои текущие знания.
+Во-вторых, подход к созданию и работе с пользовательским интерфейсом близок к тому, к чему мы все привыкли в Windows. Особенно рады будут разработчики WPF, так как Xamarin Forms поддерживает работу с XAML, биндинги, темплейты, стили и прочие радости жизни. Думаю, понятно, что они несколько урезаны и не стоит ожидать всей мощи WPF, но все-таки удобства это добавляет.
+Так как это C#, то следующий плюс в том, что можно повторно использовать уже написанный код. В большей части он будет работать корректно. Есть у платформ ограничения, но они не столь велики. У нас получилось завести достаточно большой кусок из XtraGridControl-а, и это нам сильно помогло.
+Из того, что Xamarin.Forms схож с WPF, вытекает следующий плюс этой платформы: MVVM. Действительно, Xamarin.Forms имеет XAML, визуальные элементы имеют BindingContext (аналог DataContext в WPF), есть BindableProperty (аналог DependencyProperty). Таким образом, можно связывать View с ViewModel аналогично тому, как в WPF.
+Еще одно преимущество данной платформы в том, что так как UI описывается только в одном месте, то приложения под разными системами будут выглядеть очень похоже. Что может быть важно, например, в корпоративных разработках.
+
+Особенности и недостатки Xamarin.Forms
+
+Неполная реализация функционала WPF
+Компромиссные решения в реализации функционала, различающегося на разных платформах
+Различное поведение на разных платформах
+Производительность
+
+НЕПОЛНАЯ РЕАЛИЗАЦИЯ ФУНКЦИОНАЛА WPF
+Это первое, на что мы наткнулись. Xamarin.Forms имеет значительные ограничения в использовании темплейтов при разработке. Мне, как человеку, долго работавшему с WPF, этот инструмент очень нравится. Так как очень удобно, когда можно произвольно менять внешний вид контрола простым перекрытием темплейта. Однако, понятно, что в концепцию рендереров темплейты плохо вписываются, так как на конечных платформах подобное есть только в WinPhone.
+
+КОМПРОМИССНЫЕ РЕШЕНИЯ В РЕАЛИЗАЦИИ ФУНКЦИОНАЛА, РАЗЛИЧАЮЩЕГОСЯ НА РАЗНЫХ ПЛАТФОРМАХ
+Платформы порой различаются, и рендерерам приходится все эти различия сводить к какому-то единому механизму управления. Таким образом, приходится жертвовать какой-то функциональностью.
+
+РАЗЛИЧНОЕ ПОВЕДЕНИЕ НА РАЗНЫХ ПЛАТФОРМАХ
+Иногда поведение контролов может различаться на разных платформах. Как вы уже видели, в Xamarin.Forms пользовательский интерфейс описывается в общей для всех платформ части. И вполне ожидается, что в итоге он будет выглядеть одинаково на всех системах. Ну или хотя бы очень близко. Но это бывает не всегда. Давайте пройдемся по основным граблям, на которые наступали мы.
+
+Margins в WinPhone
+В WinPhone у некоторых контролов большие маржины, чего нет на остальных платформах (например, у Switch контрола). Таким образом, внешний вид приложения на нем может очень сильно отличаться от версий на Android и iOS, вплоть до полной неработоспособности (когда элементы просто не поместятся в видимой области).
+

BIN
Лекции/infinitywar/allgame.png


+ 33 - 0
Лекции/infinitywar/infinitywar.md

@@ -0,0 +1,33 @@
+#Infinity Ward
+
+Подготовил Захарёнок Егор
+****
+**Infinity Ward** — американская компания, специализирующаяся на разработке компьютерных игр. Основана в 2002 году. Важнейшим брендом компании является серия игр Call of Duty. Штаб-квартира компании расположена в Лос-Анджелесе, штат Калифорния.
+
+Компания Infinity Ward была основана в 2002 году двадцатью двумя бывшими сотрудниками компании 2015, Inc., которые участвовали в разработке шутера Medal of Honor: Allied Assault. В 2003 году компания была приобретена крупным американским издателем игр Activision.
+
+В 2005 году компания выпустила свою первую игру для консоли седьмого поколения Xbox 360 — Call of Duty 2. Игра стала очень популярной во время запуска этой консоли, продавшись тиражом более чем 250 тысяч экземпляров за первую неделю.
+
+После выхода чрезвычайно успешной Call of Duty 4: Modern Warfare в 2007 году руководители студии Джейсон Уэст и Винс Зампелла инициировали переговоры с материнской компанией Activision по поводу разработки Call of Duty: Modern Warfare 2 в обмен на значительные премии и обеспечения творческого контроля над серией Call of Duty. С этого момента Activision искала повод уволить Уэста и Зампеллу. В ответ Уэст и Зампелла начали искать способы вывести Infinity Ward из-под контроля Activision. В итоге это привело к тому, что Activision начала аудиторскую проверку студии в феврале 2010 года, а 1 марта Уэст и Зампелла были уволены из студии за «неподчинение». Премиальные, полагавшиеся по соглашению 2007 года за разработку Modern Warfare 2, выплачены не были. Уволенные Уэст и Зампелла в апреле 2010 года основали студию Respawn Entertainment, куда перешла значительная часть сотрудников Infinity Ward. 
+
+На позиции Уэста и Зампеллы были временно назначены выходцы Activision Стив Пирс и Стив Экрич. К ноябрю 2010 года Activision заменило весь управляющий состав студии своими людьми. Задержки в производстве проектов привели к тому, что франшиза Call of Duty была разделена между тремя студиями, включая недавно образованную Sledgehammer Games в главе с бывшим президентом Visceral Games Гленом Скофилдом.
+
+За громким скандалом с увольнением ключевых сотрудников Infinity Ward последовало несколько судебных исков, как от Уэста и Зампеллы к Activision (предметом иска являлось взыскание компенсации в размере 36 млн долларов за невыплаченные премиальные, которая к 2012 году выросла до суммы в 1 миллиард долларов), так и от Activision к Уэсту и Зампелле (позже к иску в качестве ответчика была также привлечена Electronic Arts) с требованием выплатить 400 млн долларов в качестве компенсации за нанесенный урон студии Infinity Ward. Также на Activision подала в суд группа бывших сотрудников Infinity Ward, которые также не получили премиальных за работу над Modern Warfare 2 общей суммой в размере 75-125 млн долларов плюс штраф в размере 75-500 млн долларов. В конце концов, в мае 2012 года иски и контриски между Уэстом, Зампелой и EA с одной стороны, и Activision с другой, были улажены в досудебном порядке. Детали урегулирования не разглашались. Иск от бывших сотрудников студии также был улажен в рамках досудебного соглашения, по которому Activision выплатила им 42 млн долларов.
+
+После увольнения Зампеллы и Уэста студия продолжила работу на играми серии Call of Duty. 3 мая 2014 года произошло объединение Infinity Ward и студии NeverSoft, работавшей над режимом Extinction для Call of Duty: Ghosts, в единую команду под именем Infinity Ward. Окончательное слияние студий завершено 11 июля 2014 года.
+
+**Игры компании**
+![11](allgame.png)
+
+**IW Engine**
+IW Engine  — игровой движок, созданный американской компанией Infinity Ward для использования в собственных разработках; также используется издательской компанией Activision. Технология применялась в серии игр Call of Duty и вошла в список лучших движков по мнению сайта IGN. В разных играх серии Call of Duty движок модифицировался студиями Treyarch и Sledgehammer Games.
+
+С каждой новой игрой у движка появлялась новая версия или модифицироваля старый.
+
+В первой игре студии, Call of Duty, использовался игровой движок id Tech 3 (Quake 3 Engine) компании id Software. Впоследствии движок был очень серьёзно переработан для игры Call of Duty 2; в него была добавлена поддержка функционала DirectX 9 и улучшены важнейшие визуальные аспекты. Например, добавлена работа с динамичным освещением и динамическими тенями, встроены различные пост-эффекты обработки изображения (такие как motion blur), рельефные текстуры и прочее. Также была проведена оптимизация, позволившая создавать открытые локации большого размера.
+
+Игра Call of Duty 4 была построена на улучшенной версии движка Call of Duty 2. В движок, помимо прочих улучшений, была добавлена глубина резко изображаемого пространства и High Dynamic Range Rendering. Игры компании-партнёра Treyarch — Call of Duty: World at War и Quantum of Solace — были также созданы на основе модифицированной версии движка Call of Duty 4.
+
+В Call of Duty: Modern Warfare 2 используется модифицированный движок игры Call of Duty 4, получивший название IW 4.0. Движок стал поддерживать DirectX 10 и технологию потоковых текстур, что позволяет создавать более открытые и крупные уровни. Была проведена серьёзная работа со светом. Кроме того, ещё большую роль играет оружейная баллистика: учитываются типы поверхности, формы объектов, разновидности гранат и т. д.
+
+