
- •Oop и типы данных. Основные особенности ооп.
- •Инкапсуляция. Классы и структуры.
- •9.Подходы к выделению объектов, их свойств и методов оперирования.
- •10. Уточнение характеристик объектов и редактирование их определений.
- •11. Образцы и типовые проекты при ооп.
- •12. Именование объектов и методов. Коллекции отлаженных заготовок.
- •14. Компоненты: объекты, субъекты, аспекты.
- •15. Подходы к декомпозиции программ и накоплению компонент программ
- •16. Контекст исполнения многократно используемых компонент.
- •17. Проблема версифицирования программы в процессе разработки
- •18. Перенос компонент в разные системы //возможно предыдущее подойдет
- •19. Факторизация программ и программных компонент
- •20. Жизненный цикл программ (жцп). Фазы, этапы и стадии разработки программ
- •Сопровождение
- •Классические схемы жцп. Последовательная модель жцп
- •Каскадная модель жцп. Условия завершения фаз жцп
- •Табличная модель Хантера совмещения фаз жцп.
- •Uml. Диаграммы объектов и диаграммы размещения
- •Термины и понятия
- •Общие свойства
- •Содержание
- •Uml. Временные диаграммы
- •Технологичные последовательности и техника самодокументирования.
- •Основные идеи экстремального программирования
- •Многократность и рефакторинг при разработке программ. Многократность
- •Рефакторинг
- •«Парный» эффект и обе5спечение устойчивости разработки.
- •Коллективное владение
- •2. Ссылки, указатели и переменные – отличия при использовании
- •4. Зачем нужны описатели public и private?
- •5. Перегрузка операций. Пример.
- •6. Роль ссылок в борьбе за эффективность. Пример.
- •7. Инициализация объектов. Варианты конструкторов. Пример
- •8. Указатели и вектора. Сравнение стиля доступа к компонентам
- •9. Что дает использование inline?
- •10. Производные классы. Наследование.
- •11. Деструкторы. Зачем они нужны?
- •12. Друзья
- •13. Левосторонние значения (lvalue)
- •14. Описатель const. Его влияние на присваивание значений. Пример
- •15. Объединение типов данных. Пример полезного применения
- •16. Управление видимостью членов класса и доступам к элементам объекта.
- •17. Ссылка на себя //this
- •18. Освобождение памяти от лишних объектов
- •19. Порядок выполнения конструкторов и деструкторов
2. Ссылки, указатели и переменные – отличия при использовании
Передача параметров по ссылке в Си++
В Си++ можно передавать параметры по ссылкам. Пример из предыдущего абзаца теперь выглядит так:
void foo (int& x)
{
x = 17;
}
int main ()
{
int z = 5;
foo (z); // теперь z=17
}
Однако, в таком варианте использования ссылок программисту приходится быть осторожным при передаче значений в функцию стороннего разработчика, если не планируется изменение передаваемой переменной: только функции с прототипом
void foo (const int& x);
гарантируют неизменность передаваемого значения.
int const *foo
Указатель на const int. Значение указателя изменить можно (так, чтобы он указывал на что-нибудь другое), а вот значение переменной, на которую он указывает, менять нельзя.
3. Классы и структуры в С++. Доступ по умолчанию.
В C++ структуры формально отличаются от классов лишь тем, что по умолчанию члены и базовые классы у структуры публичные, а у класса — собственные.
Классы в языке C++
Класс в языке C++ создаётся следующим образом:
class MyClass: public ParentClass // ParentClass — класс-предок, если таковой имеется
{
public:
// элементы в этой секции доступны из любой части программы
MyClass(); // конструктор
~MyClass(); // деструктор
protected:
// элементы в этой секции доступны из класса и его потомков
private:
// элементы в этой секции доступны только из класса; это область доступа по умолчанию
};
После своего создания класс считается полноценным типом данных и, следовательно экземпляры класса создаются следующим образом:
MyClass myinstance;
Обращение к членам класса:
myinstance.classmember
Уничтожается экземпляр класса, как и любая переменная, только в случае, если функция, в которой он был создан, завершила работу или если была принудительно освобождена динамическая память, выделенная под класс.
4. Зачем нужны описатели public и private?
Спецификаторы доступа public и private управляют видимостью элементов класса. Элементы, описанные после служебного слова private, видимы только внутри класса. Этот вид доступа принят в классе по умолчанию. Интерфейс кламма описывается после спецификатора public. Действаие любого спецификатора распространяется до следующего спецификатора или до конца класса. Можно задавать несколько секций public и private,порядок их следования не имеет значения.
5. Перегрузка операций. Пример.
C++ позволяет переопределить действие большинства операций так, чтобы они при использовании с объектами конкретного класса они выполняли заданные функции. Это дает возможность использовать собственные типы данных так же, как стандартные. Обозначения собственных операций вводить нельзя. Можно перегружать любые операции, существующие в C++, за исключением:
. .* ?: :: # ## sizeof
перегрузка операций осществляется с помощью методов специального вида(функций-операций) и подчиняется следующим правилам:
а)при перегрузке операций сохраняются количество аргументов, приоритеты операций и правила ассоциации (справа налево и слева направо), используемые в стандартных типах данных
б)для стандартных типов данных переопределять операции нельзя
в)функции-операции не могут иметь аргументов по умолчанию
г)функции-операции наследуются(за исключением =)
д)функции-операции не могут определяться как static
Функция-операция определяется либо как метод класса, либо дружественная функция, либо обычной функцией
Пример(при определении внутри класса):
class monstr{
...
bool operator > (const monstr &M){
if(health>M.health) return true;
return false;
}
};