Lect05
.pdfДругиеразновидностидрузей
void MyClass2::FriendMethod(MyClass classParam) {
classParam.x = 3; classParam.y = 4;
}
void FriendFunction(MyClass classParam)
{
classParam.x = 3; classParam.y = 4;
}
Выводы
Друзьяпозволяютобеспечитьклассу, функцииилиметодудоступковсейобласти дружественногоимкласса.
Использованиедрузейоправдано,еслиэто даетсущественнуюоптимизацию.
Друзьяэтоотносительнобезопасное нарушениеинкапсуляциикласса.
Анарушатьинкапсуляциюплохо!
Наследование
Наследование- этоупорядочивание абстракций,расположениеихпоуровням.
Производныйклассобладаетвсемнабором свойствиметодовбазовогокласса,оних
унаследовал.
Производныйкласс,всвоюочередь,может служитьбазовымдлядругихклассов, поэтомуиерархияможетбытьскольугодно глубокой,исодержатьпрямыхикосвенных потомковбазовогокласса.
Обозначениенаследования
Млекопитающее
Отношениеобобщения
Заяц Медведь
Основнойвидиерархии:«is-a»
Принятоговорить,чтобазовыйкласс обобщаетпроизводный.
НаследованиевC++
class Derived : <модификатор> Base { //...
};
Например:
class Rabbit : public Mammal { // ...
};
Пример:библиотечнаясистема
class Item { // единица хранения public:
Item();
~Item();
//истина, если на руках bool IsTaken() const;
//истина, если имеется в библиотеке bool IsAvailable() const;
//инвентарный номер
long GetInvNumber() const; void SetInvNumber(long inv);
Спасибозавнимание!