Статические (static) члены класса. Назначение. Синтаксис. Пример.



Можно объявить элемент класса (данные или функцию) как статический. Статический элемент данных является по существу глобальной переменной с областью действия в классе и разделяется всеми представителями класса. Он только один, вне зависимости от того, сколько объектов имеет класс. На самом деле статический элемент данных существует даже в том случае, когда никаких представителей класса не создано. Помимо объявления в определении класса, статический элемент данных должен еще и определяться вне класса или в инициализаторе конструктора: class SomeClass {static int iCount;}; int SomeClass::iCount = 0;

Обращаться к открытым статическим элементам класса можно либо через любой его представитель операциями “.” и “->”, либо с помощью операции разрешения области действия (SomeClass::iCount). Последний способ предпочтительнее, так как показывает, что элемент не связан с конкретным объектом.

Статические элементы-функции. Функция класса, объявленная с модификатором static, не связывается ни с какими его конкретными представителями. Другими словами, ей не передается указатель this в качестве скрытого параметра. Это означает, что: статическая функция-элемент может вызываться, даже если никаких объектов не создано; статическая функция-элемент может обращаться только к статическим элементам данных класса и вызывать только другие статические функции-элементы класса; такая функция не может быть объявлена виртуальной.

37. Неизменяемые (immutable) члены-функции класса. Назначение. Проблемы и решения. Пример на С++.

В некоторых случаях требуется использовать классификатор const для функций-членов класса, чтобы показать, что она не должна изменять состояния класса (например: int get_value() const {};). Но иногда все-таки приходится снимать идентификатор const для заполнения некоторых членов путем приведения типов const_cast<>(). Для того чтобы явно указать какие члены может изменять функция с идентификатором const необходимо пометить эти поля идентификатором mutable: class Date { mutable bool cache; void get_cache() const {… cache = true; …}};

Этапы развития индустрии программного обеспечения. Современный метод управления разработкой.

В ходе эволюционного развития теории проектирования ПО, сложились три основные модели ЖЦ, которые выражают последовательность этапов ЖЦ ПО.

Первой, по времени появления являлась каскадная модель:

Модель предполагает следующие свойства взаимодействия этапов: модель состоит из последовательно расположенных этапов; каждый этап полностью заканчивается до того как начнется следующий; этапы не перекрываются во времени (следующий этап не начинается, пока не завершится предыдущий); возврат к предыдущим этапам не предусматривается или крайне ограничен; результат появляется только в конце разработки; только на стадии тестирования происходит устранение и выявление ошибок.

Следующей явилась итерационная модель. Это модель разработки ПО с обратными связями м/у этапами. На каждом из этапов проводятся проверки и корректировки разрабатываемой ИС. Это позволяет существенно снизить трудоемкость отладки по сравнению с каскадной моделью. При нахождении ошибки производится повторная проверка

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

Дайте сравнительную характеристику основным моделям ПО: функциональная, структурная, объектно-ориентированная.

Функциональная декомпозиция: требования к системе определяются исходя из функций системы. (Винер).Структурная декомпозиция: определение требований к системе определяются на основе данных обрабатываемых системой. (Йордан, Майерс).ООП: Процесс разбиения системы на части, соответствующие классам и объектам предметной области.

К ОО моделям относятся: статическая логическая модель (описывает классы системы), логическая динамическая модель (модель объектов системы и их взаимодействие), физическая статическая модель (Архитектура модулей программной системы; архитектура аппаратного обеспечения), физическая динамическая модель (архитектура процессов системы).

Объектная декомпозиция уменьшает размер программных систем за счет повторного использования общих механизмов, что приводит к существенной экономии выразительных средств. О-о системы более гибки и проще эволюционируют со временем. Объектная декомпозиция существенно снижает риск при создании сложной программной системы.


Дата добавления: 2018-04-15; просмотров: 371; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!