
- •1 Раздел
- •1. Описание цикла жизни по. Проблема типовых элементов в программировании.
- •Этапы программного обеспечения.
- •Подготовка
- •Проектирование
- •Создание
- •Поддержка
- •2. Стадии разработки по.
- •1.Анализ
- •2.Проектирование
- •3.Кодирование
- •4.Тестирование и откладка
- •5.Внедрение
- •6.Заключение
- •3. Модели и методологии разработки по.
- •Основные модели разработки по
- •4. Каскадная модель разработки по. V-образная модель разработки по. Waterfall (каскадная модель, или «водопад»)
- •Incremental Model (инкрементная модель)
- •5. Инкрементная, итеративная, спиральная модель разработки по.
- •Incremental Model (инкрементная модель)
- •Iterative Model (итеративная модель)
- •Что такое Agile?
- •Spiral Model (спиральная модель)
- •6. Тестирование. Назначение, основные понятия.
- •Уровни Тестирования
- •1. Модульное тестирование (Unit Testing)
- •2. Интеграционное тестирование (Integration Testing)
- •3. Системное тестирование (System Testing)
- •4. Операционное тестирование (Release Testing).
- •5. Приемочное тестирование (Acceptance Testing)
- •7. Виды тестирования.
- •Функциональные тестирования
- •Нефункциональные виды
- •Тестирования связанные с изменением вида текста
- •2 Раздел
- •1. Основные принципы ооп.
- •Инкапсуляция
- •Наследование
- •Полиморфизм
- •2. Понятие класса. Инкапсуляция.
- •3. Конструкторы и деструкторы. Конструкторы
- •Конструктор по умолчанию
- •Конструкторы экземпляров
- •*Ключевое слово this
- •Инициализаторы
- •Деструкторы
- •4. Шаблоны классов.
- •5. Наследование. Иерархия наследования классов.
- •Доступ к членам базового класса из класса-наследника
- •Ключевое слово base
- •Конструкторы в производных классах
- •6. Виртуальные базовые классы. Состав класса.
- •Общая форма определения класса
- •Данные-члены
- •Функции-члены
- •7. Полиморфизм. Виртуальные методы классов.
- •Интерфейс
- •Сравнение абстр. Класса и интерфейса
- •3 Раздел
- •1. Определения графов. Элементы графов. Направленные орграфы и сети. Представление графов в компьютере: требования к представлению графов, матрица смежности, матрица инциденций.
- •Способы представления графа
- •2. Представление графов в компьютере: списки смежности, массив дуг. Обход графов.
- •4. Кратчайшие пути. Длина дуги. Алгоритм Флойда. Алгоритм Флойда-Уоршелла
- •5. Бинарные деревья, основные понятия: дерево, корень, предок, потомок, лист, высота дерева, упорядоченное дерево.
- •Узлы avl - дерева
- •Вставка ключа
Деструкторы
https://ravesli.com/urok-120-destruktory/
Деструктор — это специальный тип метода класса, который выполняется при удалении объекта класса. В то время как конструкторы предназначены для инициализации класса, деструкторы предназначены для очистки памяти после него.
Когда объект автоматически выходит из области видимости или динамически выделенный объект явно удаляется с помощью ключевого слова delete, вызывается деструктор класса (если он существует) для выполнения необходимой очистки до того, как объект будет удален из памяти. Для простых классов (тех, которые только инициализируют значения обычных переменных-членов) деструктор не нужен, так как C++ автоматически выполнит очистку самостоятельно.
Однако, если объект класса содержит любые ресурсы (например, динамически выделенную память или файл/базу данных), или, если вам необходимо выполнить какие-либо действия до того, как объект будет уничтожен, деструктор является идеальным решением, поскольку он производит последние действия с объектом перед его окончательным уничтожением.
Имена деструкторов
Так же, как и конструкторы, деструкторы имеют свои правила, которые касаются их имен:
деструктор должен иметь тоже имя, что и класс, со знаком тильда (~) в самом начале;
деструктор не может принимать аргументы;
деструктор не имеет типа возврата.
Из второго правила вытекает еще одно правило: для каждого класса может существовать только один деструктор, так как нет возможности перегрузить деструкторы, как функции, и отличаться друг от друга аргументами они не могут.
4. Шаблоны классов.
ЕГО ВРОДЕ НЕ НАДО
5. Наследование. Иерархия наследования классов.
ВСЕ НАПИСАННОЕ СПРАВЕДЛИВО ДЛЯ ЯЗЫКА С#
Наследование (inheritance) является одним из ключевых моментов ООП. Благодаря наследованию один класс может унаследовать функциональность другого класса.
Пусть у нас есть следующий класс Person, который описывает отдельного человека:
Но вдруг нам потребовался класс, описывающий сотрудника предприятия - класс Employee. Поскольку этот класс будет реализовывать тот же функционал, что и класс Person, так как сотрудник - это также и человек, то было бы рационально сделать класс Employee производным (или наследником, или подклассом) от класса Person, который, в свою очередь, называется базовым классом или родителем (или суперклассом):
После двоеточия мы указываем базовый класс для данного класса. Для класса Employee базовым является Person, и поэтому класс Employee наследует все те же свойства, методы, поля, которые есть в классе Person. Единственное, что не передается при наследовании, это конструкторы базового класса.
Таким образом, наследование реализует отношение is-a (является), объект класса Employee также является объектом класса Person:
И поскольку объект Employee является также и объектом Person, то мы можем так определить переменную: Person p = new Employee().
По умолчанию все классы наследуются от базового класса Object, даже если мы явным образом не устанавливаем наследование. Поэтому выше определенные классы Person и Employee кроме своих собственных методов, также будут иметь и методы класса Object: ToString(), Equals(), GetHashCode() и GetType().
Все классы по умолчанию могут наследоваться. Однако здесь есть ряд ограничений:
Не поддерживается множественное наследование, класс может наследоваться только от одного класса.
При создании производного класса надо учитывать тип доступа к базовому классу - тип доступа к производному классу должен быть таким же, как и у базового класса, или более строгим. То есть, если базовый класс у нас имеет тип доступа internal, то производный класс может иметь тип доступа internal или private, но не public. Однако следует также учитывать, что если базовый и производный класс находятся в разных сборках (проектах), то в этом случае производый класс может наследовать только от класса, который имеет модификатор public.
Если класс объявлен с модификатором sealed, то от этого класса нельзя наследовать и создавать производные классы. Например, следующий класс не допускает создание наследников:
Нельзя унаследовать класс от статического класса.