- •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. Область применения, схема взаимодействия.
57. Компонентные технологии разработки программного обеспечения.
Компонент есть автономная структурная единица ПО с четко определенным интерфейсом. Компонент может быть независимо добавлен в состав уже работающего ПО, удален из состава ПО или модифицирован. Рисунок:
Важнейшие понятия компонентной технологии разработки ПО:
Компонент (bean) есть самостоятельная единица развертывания ПО, и поэтому может разрабатываться и продаваться отдельно от других компонентов ПО. В общем случае, компоненты не являются ни объектами классов, ни программными модулями, ни законченными программными продуктами.
Контракт компонента в общем случае включает в себя:
набор тех функциональных возможностей (методов), которые компонент может получить от других компонентов (его права)
набор тех функциональных возможностей(методов), которые компонент обязан предоставить другим компонентам(его обязанностей)
набор ограничений (предусловий и постусловий), которые должны быть выполнены при реализации п.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 (видим всем в пакете). |