- •1. Основные операции языка Си.
- •3. Язык Си: указатели и массивы. Определения, примеры.
- •4. Язык Си: объявления функций, передача аргументов. Примеры.
- •5. Язык Си: строки и указатели. Определения, примеры.
- •8. Язык Си: структуры. Пример.
- •9 . Язык Си: битовые поля и объединения. Примеры.
- •10. Язык Си: оператор определения типа. Примеры.
- •11.Язык Си: препроцессор. Директивы препроцессора, примеры
- •12.Язык Си: программный стек. Пример работы стека.
- •13. Линейные списки. Операции с линейными списками.
- •14 Hash-таблицы
- •15 Двоичные деревья
- •17. Язык Си: ссылочные типы. Пример.
- •18. Язык Си: защита указателей и объектов, неявное изменение объектов.
- •19. Язык Си: организация ввода/вывода. Пример: слияние файлов. Организация ввода/вывода
- •Открытие файла
- •Закрытие файла
- •Ввод из файла
- •Вывод в файл
- •Особые ситуации
- •Пример: слияние файлов
- •20. Язык Си: произвольный доступ к файлам. Пример.
- •22. Язык Си: примеры реализаций функций ввода/вывода (getc,putc).
- •23. Язык Си: примеры реализаций функций ввода/вывода (fgets, fputs).
- •24. Язык Си: работа с файловой системой. Пример.
- •25. Основные понятия ооп: абстракция, инкапсуляция, наследование, полиморфизм.
- •27. Объекты классов: статические,автоматические, динамические. Примеры.
- •28. Управление доступом к элементам классов. Пример.
- •29. Шаблоны функций и шаблоны классов. Примеры.
- •30. Наследование. Пример.
- •31. Множественное наследование. Пример.
- •П оскольку классы-потомки наследуют все данные и методы классов-предков, в итоге имеем следующую картину:
- •32. Виртуальные функции. Раннее и позднее связывание.
- •33. Абстрактные классы. Их назначение, пример.
- •34. Полиморфный контейнер (пример).
- •36. Конструкторы, их виды, примеры. Вызов конструкторов при наследовании.
- •37. Деструкторы. Их назначение, примеры.
- •39. Перегруженные операции. Примеры.
- •40. Обработка нештатных ситуаций. Объекты-исключения. Примеры.
- •Вопрос 1: какова дальнейшая судьба этих ресурсов, будут ли они освобождены?
- •Вопрос 2: как распознавать подобные ситуации и корректно их обрабатывать?
- •41. Модели жизненного цикла программного обеспечения. Модели жизненного цикла по
- •Спиральная модель жизненного цикла по.
- •42. Проектирование программного обеспечения и uml.
- •Uml (основные понятия)
- •Канонические диаграммы языка uml 2.X
- •43. Диаграммы прецедентов. Нотация, семантика, примеры.
- •Основные обозначения на диаграммах прецедентов:
- •44. Сценарии выполнения прецедентов (пример).
- •45. Диаграммы классов. Нотация, семантика, отношения.
- •46. Атрибуты на диаграммах классов. Нотация и семантика. Примеры.
- •47. Операции на диаграммах классов. Нотация и семантика. Примеры.
- •48. Отношения ассоциации на диаграммах классов.
- •Отношения ассоциации
- •Предприятие
- •Сотрудник
- •Отношения обобщения
- •Отношения композиции
- •53. Язык c#: сборки, манифесты, домены, компоненты.
- •55. Java как язык ооп для машинно-независимых приложений.
- •56. Обзор Java-технологий NetBeans ide.
- •57. Компонентные технологии разработки программного обеспечения.
- •59.Обёртки в языках c# и Java.
- •60. Архитектурный паттерн mvc. Область применения, схема взаимодействия.
53. Язык c#: сборки, манифесты, домены, компоненты.
Сборкой (assembly) называется единица развертывания управляемого кода. Сборку можно представить как коллекцию фрагментов кода, типов, ресурсов. Сборка обеспечивает управление версиями. Повторное использование кода и безопасность приложений, созданных на основе .NET Framework. Стандартные сборки .NET имеют форму исполняемого файла (exe) или динамической библиотеки (dll). Динамические сборки могут состоять из нескольких файлов. Сборки могут содержать один или несколько модулей. Модуль – это отдельно компилируемая единица исходного кода. Манифест сборки содержит следующие метаданные: требования к версиям, удостоверения безопасности, определения области действия сборки, разрешения ссылок на ресурсы и классы. Манифест сборки может храниться в файле exe, файле dll, или в отдельном файле.
Пример сборки из одного файла:
MyAssembly.dll
Манифест сборки
Метаданные типов
MSIL-код
Ресурсы
Пример сборки из нескольких файлов:
MyAssembly.dll Util.netmodule
Манифест сборки ---------------------🡪Метаданные типов
Метаданные типов | MSIL- код
MSIL-код |
|
| Graphic.bmp
-----------🡪Ресурсы
Операционные системы и среды выполнения обычно содержат средства изоляции приложений друг от друга (например, в Windows - это процессы).
Домены приложений создают изолированные области для обеспечения безопасности, надежности, управления версиями и размещения сборок.
Код, используемый одним приложением, не может иметь непосредственного доступа к коду или ресурсам другого приложения. В среде CLR эта изоляция реализована за счет запрета прямых вызовов между объектами в различных доменах приложений. Объекты, передаваемые от домена к домену, копируются или взаимодействуют через представителей объектов (proxy).
Термином «компонент» обычно обозначают объект, который может быть использован повторно и может взаимодействовать с другими объектами.
Объект становится компонентом, если он соответствует принятому стандарту взаимодействия. В .NET Framework этот стандарт реализуется с помощью интерфейса IComponent. Любой класс, реализующий интерфейс Icomponent является компонентом .NET Framework. Компоненты обладают свойствами:
1. Могут самостоятельно явным образом управлять внешними ресурсами.
2. Поддерживают визуальное проектирование. Компонент можно добавить на панель элементов Visual Studio или перетащить на любую готовую форму.
3. Могут размещаться в контейнерах и осуществлять пересылку объектов через границы доменов приложений, процессов и компьютеров (маршалинг).
54. Обзор различий между языками C# и С++.
Область |
Различия между С# и C++ |
Наследование |
В С# не разрешено множественное наследование классов. От интерфейсов множественное наследование разрешено. Интерфейс не имеет свойств (т.е. не содержит данных), а описывает только методы. |
Массивы |
В С++ массив задаётся адресом первого элемента. В С# массивы – это объекты, которые включают многие свойства и методы. |
Строки |
В С++ строка – это массив символов. В С# строки – это сложные объекты с поддержкой методов поиска. |
Передача аргументов |
В С++ аргументы передаются «по значению», если явным образом не использованы указатели или ссылочные типы. В С# аргументы передаются «по ссылке» (кроме структур), с модификаторами ref или out. |
Делегаты |
В С# делегаты приблизительно схожи с указателями на функции в С++, являются строго типизированными и безопасными. |
Методы базового класса |
В С# применяется ключевое слово base для вызова перекрытых членов базового класса из произвольных классов. Перекрытие виртуальных и абстрактных методов выполняется с помощью ключевого слова override. |
Обработка исключений |
В С# предусмотрено ключевое слово finally для кода, который должен быть выполнен независимо от того, возникло ли исключение. |
Глобальные элементы |
С# является чистым объектно-ориентированным языком. Наличие глобальных переменных или методов не допускается. Все данные и методы должны содержаться в элементах class или struct. |
Указатели |
Манипуляции с указателями и адресная арифметика допускаются в C# только в режиме unsafe (небезопасный режим). |
Управление памятью |
В С++ полученная динамическая память должна высвобождаться явным образом. В С# выполняется автоматическая «сборка мусора». |
Шаблоны классов |
В С# универсальные методы и типы поддерживают параметризацию типов приблизительно так, как это реализовано в шаблонах С++. |
Ввод/вывод |
Службы ввода-вывода и форматирования в С# опираются на библиотеку времени выполнения платформы .NET Framework. |
Main |
Метод Main в С# объявляется не так, как функция main в С++. Имя метода пишется с заглавной буквы, и этот метод является static. Доступна обработка аргументов командной строки. |
Импорт типов |
В С++ типы, общие для нескольких модулей, помещаются в заголовочные файлы. В C# возможен контроль типов на этапе выполнения кода (рефлексия), для этого используются метаданные. |
STL |
В С# имеется библиотека контейнерных классов (коллекций). Ключевое слово foreach позволяет выполнять итерацию массивов и коллекций. |