Контракт компонента в общем случае включает в себя: 1) набор тех функциональных возможностей (методов), которые компонент может получить от других компонентов (его права); 2) набор тех функциональных возможностей (методов), которые компонент обязан предоставить другим компонентам (его обязанности); 3) набор ограничений (предусловий и постусловий), которые должны быть выполнены при реализации п.1 и п. 2.
4. Дайте характеристику языка C# в сравнении с C++. Назовите основные различия.
Область | Различия между С# и С++ |
Глобальные элементы | C# является чистым объектно-ориентированным языком. Наличие глобальных переменных или методов не допускается. Все данные и методы должны содержаться в элементах class или struct. |
Указатели | Манипуляции с указателями и адресная арифметика допускаются в C# только в режиме unsafe (небезопасный режим). |
Управление памятью | В C++ полученная динамическая память должна высвобождаться явным образом. В C# выполняется автоматическая «сборка мусора». |
Шаблоны классов | В C# универсальные методы и типы поддерживают параметризацию типов приблизительно так, как это реализовано в шаблонах C++. |
Ввод/вывод | Службы ввода-вывода и форматирования в C# опираются на библиотеку времени выполнения платформы .NET Framework. |
Main | Метод Main в C# объявляется не так, как функция main в C++. Имя метода пишется с заглавной буквы, и этот метод является static. Доступна обработка аргументов командной строки. |
Импорт типов | В C++ типы, общие для нескольких модулей, помещаются в заголовочные файлы. В C# возможен контроль типов на этапе выполнения кода (рефлексия), для этого используются метаданные. |
STL | В C# имеется библиотека контейнерных классов (коллекций). Ключевое слово foreach позволяет выполнять итерацию массивов и коллекций. |
Наследование | В С# не разрешено множественное наследование от классов. От интерфейсов множественное наследование разрешено. Интерфейс не имеет свойств (т.е. не содержит данных), а описывает только методы. |
Массивы | В C++ массив задается адресом первого элемента. В C# массивы — это объекты, которые включают многие свойства и методы. |
Строки | В C++ строка — это массив символов. В C# строки — это сложные объекты с поддержкой методов поиска. |
Передача аргументов | В C++ аргументы передаются «по значению», если явным образом не использованы указатели или ссылочные типы. В C# аргументы передаются «по ссылке» (кроме структур), с модификаторами ref или out. |
Делегаты | В C# делегаты приблизительно схожи с указателями на функции в C++, являются строго типизированными и безопасными. |
Методы базового класса | В C# применяется ключевое слово base для вызова перекрытых членов базового класса из производных классов. Перекрытие виртуальных и абстрактных методов выполняется с помощью ключевого слова override. |
Обработка исключений | В C# предусмотрено ключевое слово finally для кода, который должен быть выполнен независимо от того, возникло ли исключение. |
5. Дайте характеристику языка Java в сравнении с C++. Назовите основные различия.
6. Как выглядит итерационная модель жизненного цикла ПО (рисунок, пояснения)?
Под жизненным циклом программного обеспечения (ПО) понимается период
разработки и эксплуатации ПО, в котором выделяют следующие этапы:
- Спецификация требований к ПО.
- Проектирование ПО.
- Реализация ПО (кодирование).
- Отладка и тестирование ПО.
- Внедрение ПО (ввод в эксплуатацию).
Эксплуатация и сопровождение ПО
7. Как выглядит спиральная модель жизненного цикла ПО (рисунок, пояснения)?
8. Проектирование ПО (определение). Проектирование выполняется на основе … чего?
Проектирование – это этап жизненного цикла ПО, во время которого разрабатывается структура и взаимосвязи элементов ПО. Результатом является проект, содержащий достаточное количество артефактов, необходимых для реализации ПО.
Проектирование выполняется на основе: моделей предметной области, требований к ПО, паттернов (шаблонов) проектирования, опыта проектировщиков.
9. Дайте определение UML. Как понимать формулу UML = нотация + семантика?
Unified Modeling Language – унифицированный язык моделирования, который предназначен для описания, визуализации и документирования объектно-ориентированных систем в процессе их анализа и проектирования.
Язык UML обеспечивает стандартный способ написания проектной документации для ПО, включая концептуальные аспекты (бизнес процессы, функции системы, др.), и конкретные аспекты (классы, объекты, выражения языков программирования, схемы баз данных, повторно используемые компоненты, др.).
Язык UML не является методологией, процессом, языком программирования или формальным языком. UML = нотация + семантика.
Здесь под нотацией понимается система условных обозначений для графического представления визуальных моделей. Семантика – это система правил и соглашений, определяющая смысл и интерпретацию конструкций языка.