- Наследование (является-отношением)
- Композиция (имеет связь / также называется вложением)
Код: Выделить всё
class File
{
public:
void GetFileSize() { /* Implementation */ }
};
class BMPFile :public File {};
class TextFile:public File {};
Код: Выделить всё
File
Это базовая возможность повторного использования кода с использованием наследования.
Для композиции один может иметь связь между каталогом и файлами.
Код: Выделить всё
class Directory
{
std::list list_of_files;
}
a) Какова связь между каталогом и подкаталогом?
b) Поскольку каталог содержит подкаталог, он определенно является композицией. Правильно ли я понимаю?
c) Поскольку подкаталог обладает всеми свойствами каталога, он также является наследованием. Правильно ли я понимаю?
d) Я считаю, что подкаталог имеет отношения наследования с каталогом из-за следующей аналогии.
Допустим, я хочу иметь каталог< /code> класс со следующим поведением/свойствами
Код: Выделить всё
class Directory
{
public:
bool HasSubDirectory {/*Implementation code*/}
void CreateSubDirectory(){/*Implementation code*/}
void DeleteSubDirectory(){/*Implementation code*/}
std::list ListAllSubDirectories{/*Implementation code*/}
};
e) В Gang of Четвертый — это связь между древовидной структурой. Является ли приведенный выше пример хорошим кандидатом на шаблон проектирования композиции?
Я могу получить пример наследования/композиции. Но мне нужен пример, который содержит и то, и другое. Поэтому я хотел знать, хороший ли это кандидат.
Подробнее здесь: https://stackoverflow.com/questions/791 ... nheritance