Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Итоговый конспект Тельнов.docx
Скачиваний:
10
Добавлен:
07.04.2023
Размер:
7.75 Mб
Скачать

57. Компонентные технологии разработки программного обеспечения.

Компонент есть автономная структурная единица ПО с четко определенным интерфейсом. Компонент может быть независимо добавлен в состав уже работающего ПО, удален из состава ПО или модифицирован. Рисунок:

Важнейшие понятия компонентной технологии разработки ПО:

Компонент (bean) есть самостоятельная единица развертывания ПО, и поэтому может разрабатываться и продаваться отдельно от других компонентов ПО. В общем случае, компоненты не являются ни объектами классов, ни программными модулями, ни законченными программными продуктами.

Контракт компонента в общем случае включает в себя:

  1. набор тех функциональных возможностей (методов), которые компонент может получить от других компонентов (его права)

  2. набор тех функциональных возможностей(методов), которые компонент обязан предоставить другим компонентам(его обязанностей)

  3. набор ограничений (предусловий и постусловий), которые должны быть выполнены при реализации п.1 и п.2

Компонентная модель - это набор правил (стандартов), для спецификации интерфейсов компонентов и для их реализации. Корректно взаимодействовать друг с другом могут только компоненты, принадлежащие одной компонентной модели. Компонентная модель есть тот “язык”, на котором компоненты общаются друг с другом.

Базовые службы включают в себя сетевые протоколы, средства управления процессами и потоками, механизмы синхронизации и обеспечения безопасности, средства поиска и взаимодействия для удаленных объектов и др.

Компонентная среда = компонентная модель + Базовые службы.

Примеры компонентных сред: .Net Framework, NetBeans IDE.

58. Обзор различий между языками Java и C++.

Область

Различия между Java и С++

ООП

Java - “чистый” строго типизированный ОО-язык. Все является объектом. С++ - это гибридный язык. Неизвестно, что лучше.

Наследование

В Java не разрешено множественное наследование от классов. От интерфейсов множественное наследование разрешено.

Препроцессор

В Java нет препроцессора. Но есть определенные соглашения насчет именования классов и файлов, в которых эти классы полностью описаны. А так же есть аналоги пространств имен - пакеты.

Структура кода

Java - динамичный язык. Исполняемый код на С++ представляет собой один большой монолитный exe-файл(плюс, возможно, dll-файлы). Исполняемый код на Java существует в виде отдельных компонентов, которые подключаются на этапе исполнения по мере необходимости.

Многопоточность

В Java(как и в С#) многопоточность встроена в сам язык. В С++ для организации многопоточности необходимо использовать классы MFC.

Сетевой обмен

Java изначально предназначен для сети, в его API встроены механизмы взаимодействия с сетью. В С++ нужно пользоваться услугами .NET

Указатели

В Java нет прямого доступа к памяти и нет адресной арифметики.

Операции

В Java нет перегруженных функций.

Методы базового класса

В С++ для указания нужного класса можно использовать операцию(::). В Java можно получить доступ только к непосредственному предку класса через ключевое слово super.

Обработка исключений

В Java механизм похож на С++, но нет автодеструкции и очистки программного стека,т.к. в программном стеке не бывает объектов.

Позднее связывание

В С++ позднее связывание доступно только для виртуальных методов. В Java все методы используют позднее связывание по умолчанию, если только вы не отметите их явно как final.

Совместимость подтипов

В С++ правила совместимости подтипов справедливы только для указателей и ссылок, но не для обычных объектов. В Java, благодаря ссылочно-объектной модели, совместимость подтипов возможна для каждого объекта. Более того, все объекты совместимы по типу с TOobject.

Контроль типов

С++ допускает свободное преобразование типов. Java строго контролирует типы, Проверка типов во время выполнения(рефлексия).

Описание классов

В Java все методы класса необходимо полностью определить в этом же классе. Нет возможности описать методы как inline-функции. Классы в Java становятся весьма громоздкими, Все данные в Java-классе инициализировать нужно обязательно.

Модификатор доступа

В Java модификатор доступа public, protected, и private повторяется для каждого элемента класса. По умолчанию - friendly (видим всем в пакете).