Учусь в престижном IT университете, но на лекциях фиг что поймешь по объяснениям преподов, только ты и выручаешь) Спасибо тебе огромное! Даешь больше знаний, чем универ)
Классный урок! Для любителей Д/З: Напишите метод для класса Human. Суть которой заключается в том что бы дать команду для human, что бы он поменял кепку на кепку другого цвета... =)) Если покажется задание простым, то реализуйте метод что бы human взял кепку с манекена, а свою повесил на манекен. Сергей! давненько от вас не было Д/З. А ведь именно Д/З порождает дискуссию среди абитуриентов. Тем самым поднимая популярность канала. =)
Как говорил мой преподаватель: "Ваша задача, как профессиональных специалистов, объяснить человеку простым языком, чтобы он понял как работают сложные механизмы." Вы с этим справляетесь на все 100% )))
Гениальные примеры! Большое спасибо за креативный подход к уроку, было реально интересно и полезно посмотреть =) Правда, просто гениально! (и главное, что понятно даже с первого раза)
КОМПОЗИЦИЯ(агрегирование по значению) - более строгий вариант агрегирования, когда включаемый объект может существовать только как часть контейнера.Если контейнер будет уничтожен, то и включённый объект тоже будет уничтожен. class Human { public: void Think() { brainobject.Think(); } private: class Brain { public: void Think() { std::cout
"По сути мы используем объект класса кепка и в маникене, и в человеке" - ты используешь 2 разных объекта. И каждый из них не может существовать без объекта, в котором объявлен, т.е. если уничтожить манекен, то уничтожится и его кепка, а если уничтожить человека, то уничтожится кепка человека - это композиция. Если бы у манекена и у человека было по одному указателю на кепку, то после уничтожения манекена, кепка бы осталась и эту самую кепку можно было бы надеть на человека - это агрегация.
Все он правильно сказал, "объект класса кепка" не значит "один и тот же объект класса кепка". А в композиции, к примеру как в описанной в видео ситуации, невозможно создать объект класса мозг в манекене. В агрегации же можно создать объект класса кепка в любом другом классе, включая манекен.
@@dirakon8819 различие агрегации и композиции в том как созданные объекты соотносятся по времени жизни. Оба приведенных примеров являются примерами композиции.
5 лет спустя, знаю. Разве суть не в том, что при уничтожении объекта человек, мы уничтожаем и класс который в нём описали (тобиж мозг), а класс кепки остался?
Можно написать в классе cap friend Human. Тогда ты кепка подружилась с мозгом) А вообще Страуструп говорил, что нужно заводить, как можно меньше другой в программировании) Спасибо за уроки!)
5:03 Напомнило примечание из одной книге по ООП: Вы, возможно, решите, что имеет смысл присоединить класс Head к классу Mammal, а не к классу Dog, поскольку в реальной жизни у всех млекопитающих вроде бы имеется го- лова. В этой модели я использовал класс Dog как центральный элемент примера, в силу чего и прикрепил Head к Dog. Даже потешно стало немного)
Сергей, спасибо за Ваш труд! Есть один вопрос. Очень часто у вас названия пересекаются. В предыдущих роликах это было когда вы объясняли this->value= value. Тут тоже: Think - два разных класса. Почему нельзя сразу разделять названия например так "Think" и "Think _". В программе это работает. Это какое то правило/культура правильного писания кода, которое в поможет правильно понять другие темы? Мне например, проще разделять дополнительными знаками, что бы разделить переменные/методы/и т.д.
1. 'void function GetColor should not return a value" (стр. 391): пришлось сменить тип функции GetColor с void на string 2. "Use of non-static data member 'cap' of 'Human' from nested type 'Brain' (стр. cout
Пример обалденный, но очень просится добавить одну вещь, реализацию которой никак не могу придумать. Суть такая, ведь по сути человек не может ничего сказать, пока не подумает, ну то есть он может сказать «я думаю», но метод с фразой типа «кепка на месте, она красного цвета» не должен вызываться, пока человек не скажет «я думаю», то есть пока не запустит свой мозг. Как это реализовать????? Подскажите кому не лень🙏🏻
А разве можно инициализировать поле color в его описании? Специально перепроверил- билдер выдаёт ошибку E2233 Cannot initialize a class member here. Ведь оно и понятно. Инициализация должна происходить в конструкторе. В чем тут нюанс? В msvs?
нужно видео начинать типа "Если вы смотрите это видео, то рекомендую вам поставить сразу лайк, потому что из-за радости что вы все поняли можете забыть:)"
Когда время жизни объекта human закончится, то и кепка ему уже не понадобиться. А так... один и тот же класс кепка используется и на манекене и на человеке. (в виде двух экземплярах одного и того же класса) И это всё таки агрегация... =)
Сергей, 1:16 - определение Агрегация, так и не понял слово, "Агрегация позволяет использовать тот класс, который мы включаем в другой класс хххххххх и в других местах" Что за слово вместо хххххх ? Ошибка при монтаже или что это?
Не самые лучшие примеры. Примеры композиции в жизни: 1.Машина содержит в себе двигатель. Взорвал машину- взорвал двигатель. (Композиция) 2.Человек носит кепку. Порвал в мясо человека- кепка осталась. Взял надел ее на другого. (Агрегация) Если ты одним из полей класса делаешь объект другого класса, то при вызове деструктора уничтожается внутренний и внешний объекты. Если же ты одним из полей класса делаешь указатель на объект другого класса ,и при вызове деструктора объект хранящийся по этому указателю не уничтожается, то он внутренний объект(кепка) остается существовать в памяти после вызова деструктора внешнего (в мясо человека).
Подскажет кто? У меня 3 класса, 1 основной ,2-й внутри 1-го и 3-й во 2-м. В функциях ввожу числа, а на выводе получаю совсем другие.. По заданию нужно наследовать из 3-го класса во второй, ввод и вывод осуществляется только в последнем в 3 классе
Приклад цікавий, але може дещо заплутувати, особливо в тому, що стосується агрегації. 1. Композиція НЕ вимагає, щоб один клас був інкапсульованим(внутрішнім) в інший клас, достатньо контролю над його об'єктом. Тобто, ми можемо знати, що в людини є мозок (що є такий клас; що людина має такий об'єкт), але доступ до нього контролює об'єкт людини. 2. При композиції, життєвий цикл об'єкта-"частини" залежить від об'єкта-"цілого". Фактично, це те, що відбувається з об'єктом brain, що і є правильно сказано в відео. Але це також і відбувається з шапочкою, оскільки кожен новий об'єкт людини матиме свій власний об'єкт шапочки. Виходить, що приклад з шапочкою це також композиція. Просто можуть бути шапочки, які є частиною людини і ті, які не є частиною. Приклад(мінімалістичний), чому воно не працюватиме: //я зробив змінну cap публічною, щоб мати доступ до неї int main() { Human* h1 = new Human; Cap& cap = h1->cap; delete h1; std::cout cap = ∩ delete h1; std::cout
Композиция класс: "кароче сорян дорогуши я только с одной этой классоткой мучу" Агрегация класс: "кароче классотки я для всех свободен и мутить могу с вами всеми одинаково )"
Учусь в престижном IT университете, но на лекциях фиг что поймешь по объяснениям преподов, только ты и выручаешь) Спасибо тебе огромное! Даешь больше знаний, чем универ)
Пожалуйста! =)
Ну и что ты забыл в престижном вузе если он тебе ничего не даёт?
@@llllNEOllllchannel Наверное, дает только престиж. Ох уж эти ярлыки...
@@llllNEOllllchannel а что делать? Бросать? Сам, блять, учишься в пту, небось?
@@Ouroboros2291 ГЫ
за мемчик можно и лукас)
Лучшие уроки по C++, спасибо Вам!
Мега классное объяснение!
Спасибо Вам большое за урок!
Лучшее объяснение композиции на русско- и англо- язычном UA-cam.
Пожалуйста!
"Мозг инкапсулирован в человека":)))
Чертовски понятный и забавный пример!
#агрегация #композиция #ООП #SimpleCode #урокипрограммирования
шаг за шагом мы всё ближе к цели) благодарю Вас, добрый человек)
как успехи? цель достигнута?
а какая у нас цель?
@@naotomo2160 по ходу, выучить С++ .
наверняка за 3 года он уже достиг ее))))
Очень радует что все идет постепенно и подробно, не летит все аля потом расскажу, а все поэтапно. С П А С И Б О
Урок ОГОНЬ спасибо Сергей!
Пожалуйста!
Очень классно подобранный пример с Человеком и мозгом, я за жизнь слышал очень много объяснений, твое лучшее
Спасибо! На хорошем очень понятном примере все объяснил.
Пожалуйста!
Урок супер-доходчивый до мозга человечьего. За что и Супермегаогромное Спасибо!
Просто лучшее объяснение! Спасибо за ваш труд!
Классный урок! Для любителей Д/З: Напишите метод для класса Human. Суть которой заключается в том что бы дать команду для human, что бы он поменял кепку на кепку другого цвета... =)) Если покажется задание простым, то реализуйте метод что бы human взял кепку с манекена, а свою повесил на манекен.
Сергей! давненько от вас не было Д/З. А ведь именно Д/З порождает дискуссию среди абитуриентов. Тем самым поднимая популярность канала. =)
абитуриентов? мы куда-то поступаем?
@@naotomo2160 на дату смотрите? Или нет? Уже все давно поступили.
@@BrownAleks так куда?
@@naotomo2160 военкомат
Спасибо. Примеры легко доступны для понимания.
Блестяще!!!! Сергей, у Вас дар объяснения!!!! )))))
Как говорил мой преподаватель: "Ваша задача, как профессиональных специалистов, объяснить человеку простым языком, чтобы он понял как работают сложные механизмы."
Вы с этим справляетесь на все 100% )))
Спасибо за урок.
прекрасная реализация, а главное доходчиво, спасибо)
Хочу выразить огромную признательность:)
Гениальные примеры! Большое спасибо за креативный подход к уроку, было реально интересно и полезно посмотреть =)
Правда, просто гениально! (и главное, что понятно даже с первого раза)
Отличный урок, с юмором, спасибо большое бро!)
Лаконично, понятно и без лишней воды.
Мозг жестко инкапсулирован в человека XDD
И? Ебать, что каждое школоло считает нужнум постить любую хуйню? ПНаХ!
Вся суть ООП в одной фразе xD
@@yuriytheone где ты тут школоло нашёл, дятел?
но не во всех людей )
Ты точно стал программистом, юмор у тебя ху.евый
Спасибо за урок, как всегда очень интересно!
Благодарю за бесценную работу!
Очень доходчивое объяснение. Спасибо.
Фантастика! Серёженька, Вы гений!!
привет из 2023. Спасибо за уроки!
Спасибо вам Сергей!!!!!!!!!!!!
КОМПОЗИЦИЯ(агрегирование по значению) - более строгий вариант агрегирования, когда включаемый объект может существовать
только как часть контейнера.Если контейнер будет уничтожен, то и включённый объект тоже будет уничтожен.
class Human {
public:
void Think() {
brainobject.Think();
}
private:
class Brain {
public:
void Think() {
std::cout
Мы добавили человеку мозг . Спасибо большоеза ваши труды все предельно ясно
Спасибо
Лукас Скайвокер тебе за старания.
Спасибо! Очень доходчиво и понятно!
Грамотно объесняеш респект!!!
"По сути мы используем объект класса кепка и в маникене, и в человеке" - ты используешь 2 разных объекта. И каждый из них не может существовать без объекта, в котором объявлен, т.е. если уничтожить манекен, то уничтожится и его кепка, а если уничтожить человека, то уничтожится кепка человека - это композиция.
Если бы у манекена и у человека было по одному указателю на кепку, то после уничтожения манекена, кепка бы осталась и эту самую кепку можно было бы надеть на человека - это агрегация.
Все он правильно сказал, "объект класса кепка" не значит "один и тот же объект класса кепка". А в композиции, к примеру как в описанной в видео ситуации, невозможно создать объект класса мозг в манекене. В агрегации же можно создать объект класса кепка в любом другом классе, включая манекен.
@@dirakon8819 различие агрегации и композиции в том как созданные объекты соотносятся по времени жизни. Оба приведенных примеров являются примерами композиции.
5 лет спустя, знаю.
Разве суть не в том, что при уничтожении объекта человек, мы уничтожаем и класс который в нём описали (тобиж мозг), а класс кепки остался?
@@KarKoun класс точно не уничтожает. Создаём и уничтожает только объекты
Спасибо.
Можно написать в классе cap friend Human. Тогда ты кепка подружилась с мозгом)
А вообще Страуструп говорил, что нужно заводить, как можно меньше другой в программировании)
Спасибо за уроки!)
объяснение огонь маникен и мозг.
Мозг кайфует от такого урока :)
Спасибо большое!!
5:03
Напомнило примечание из одной книге по ООП:
Вы, возможно, решите, что имеет смысл присоединить класс Head к классу Mammal, а не
к классу Dog, поскольку в реальной жизни у всех млекопитающих вроде бы имеется го-
лова. В этой модели я использовал класс Dog как центральный элемент примера, в силу
чего и прикрепил Head к Dog.
Даже потешно стало немного)
Спасибо!!!
Спасибо большое
Спасибо за урок)))
Хотелось бы более практичный пример композиции потому что иначе как для наглядности композиция не особо нужна
Првосходный препод! Аналоги пока не встречались нигде.
довольно иронично, что мне этот урок помог, хотя я вообще на питоне пишу
Разве в случае с кепкой это не ассоциация??
ЛУЧШИЙ
прикольно даже звучит) хДД
Подскажите, как называется ситуация, когда вложенный класс будет описан в public секции ?
Пиздец...Иначе не скажешь
Дам подсказку. Если класс описан в привате то это композиция. Ну дальше сам думай.
Сергей, спасибо за Ваш труд! Есть один вопрос. Очень часто у вас названия пересекаются. В предыдущих роликах это было когда вы объясняли this->value= value. Тут тоже: Think - два разных класса. Почему нельзя сразу разделять названия например так "Think" и "Think _". В программе это работает. Это какое то правило/культура правильного писания кода, которое в поможет правильно понять другие темы? Мне например, проще разделять дополнительными знаками, что бы разделить переменные/методы/и т.д.
1. 'void function GetColor should not return a value" (стр. 391): пришлось сменить тип функции GetColor с void на string
2. "Use of non-static data member 'cap' of 'Human' from nested type 'Brain' (стр. cout
объясни пожалуйста,как повлияло static,а во вторых кепка никак не влияет на мозг,твой метод записан в классе Brain а не в классе Human
Сидел...думал..думал и понял что моя кепка красного цвета!!
Лайк за мемасик
Пример обалденный, но очень просится добавить одну вещь, реализацию которой никак не могу придумать. Суть такая, ведь по сути человек не может ничего сказать, пока не подумает, ну то есть он может сказать «я думаю», но метод с фразой типа «кепка на месте, она красного цвета» не должен вызываться, пока человек не скажет «я думаю», то есть пока не запустит свой мозг. Как это реализовать????? Подскажите кому не лень🙏🏻
Можно сделать чтобы human унаследовал кепку. Это всё что ему досталось в наследство, red кепка
2:19 надо ещё создать класс человека, только без мозга, ибо не у всех он есть
А разве можно инициализировать поле color в его описании? Специально перепроверил- билдер выдаёт ошибку E2233 Cannot initialize a class member here.
Ведь оно и понятно. Инициализация должна происходить в конструкторе. В чем тут нюанс? В msvs?
И то и это композиция. При агрегации объект создаётся снаружи, а агрегирующий объект содержит указатель
То есть композиция подразумевает использования объектов только вложенного класса? Других случаев на эту тему нет?
нужно видео начинать типа "Если вы смотрите это видео, то рекомендую вам поставить сразу лайк, потому что из-за радости что вы все поняли можете забыть:)"
Раскручивай канал, рекламируй, ты хорошо преподаешь, людям понравится
Гуд!
То есть я понимаю что нужна проверка на то, вызвана эта функция или нет, как эту проверку сделать?
Так у тебя время жизни поля кепка всеравно зависит от времени жизни обекта Human -> композиция получается
Когда время жизни объекта human закончится, то и кепка ему уже не понадобиться. А так... один и тот же класс кепка используется и на манекене и на человеке. (в виде двух экземплярах одного и того же класса) И это всё таки агрегация... =)
Орнул чутка) спасиб) (шутка про мозг)
Сергей, 1:16 - определение Агрегация, так и не понял слово,
"Агрегация позволяет использовать тот класс, который мы включаем в другой класс хххххххх и в других местах"
Что за слово вместо хххххх ? Ошибка при монтаже или что это?
"Ещё"
👍
Агрегация это и есть включение?
Давайте человеку добавим мозг!!! Если б это было так просто:-)
А ведь можно сделать из Think класс, и Human будет думать про кепку через think а не через "человека"
А если описать класс кепка внизу, то уже возникнет ошибка, и что делать?
В таком случае нужно прописывать прототип функции. На этом канале есть материал на эту тему и ответ на вопрос.
Не самые лучшие примеры. Примеры композиции в жизни:
1.Машина содержит в себе двигатель. Взорвал машину- взорвал двигатель. (Композиция)
2.Человек носит кепку. Порвал в мясо человека- кепка осталась. Взял надел ее на другого. (Агрегация)
Если ты одним из полей класса делаешь объект другого класса, то при вызове деструктора уничтожается внутренний и внешний объекты.
Если же ты одним из полей класса делаешь указатель на объект другого класса ,и при вызове деструктора объект хранящийся по этому указателю не уничтожается, то он внутренний объект(кепка) остается существовать в памяти после вызова деструктора внешнего (в мясо человека).
не самые гуманные примеры=)
Подскажет кто? У меня 3 класса, 1 основной ,2-й внутри 1-го и 3-й во 2-м. В функциях ввожу числа, а на выводе получаю совсем другие.. По заданию нужно наследовать из 3-го класса во второй, ввод и вывод осуществляется только в последнем в 3 классе
Красавела
А кто-нибудь пробовал прописывать конструктор класса Cap и присваивать через этот конструктор цвет кепки?
а ты пробовал?
А почему он методы с великой буквы пишет? это так в с++ договорились?
Так получается Агрегация и композиция это не наследование)))
Это как сложносочинённые и сложноподчинённые предложения в Русском языке:))
Мозг инкапсулирован в человека xD
Приклад цікавий, але може дещо заплутувати, особливо в тому, що стосується агрегації.
1. Композиція НЕ вимагає, щоб один клас був інкапсульованим(внутрішнім) в інший клас, достатньо контролю над його об'єктом.
Тобто, ми можемо знати, що в людини є мозок (що є такий клас; що людина має такий об'єкт), але доступ до нього контролює об'єкт людини.
2. При композиції, життєвий цикл об'єкта-"частини" залежить від об'єкта-"цілого".
Фактично, це те, що відбувається з об'єктом brain, що і є правильно сказано в відео.
Але це також і відбувається з шапочкою, оскільки кожен новий об'єкт людини матиме свій власний об'єкт шапочки.
Виходить, що приклад з шапочкою це також композиція. Просто можуть бути шапочки, які є частиною людини і ті, які не є частиною.
Приклад(мінімалістичний), чому воно не працюватиме:
//я зробив змінну cap публічною, щоб мати доступ до неї
int main()
{
Human* h1 = new Human;
Cap& cap = h1->cap;
delete h1;
std::cout cap = ∩
delete h1;
std::cout
Впервые слышу о том что композиция, это объект вложенного класса. По какому учебнику осваивалась данная тема автором?
Tolyan991 он разве так говорил?
Spsb
Сложно**
up
Унаследуем мозги другого класса человека xD
так и не понял в чем суть урока
дошло, нет?
Это что-то вроде дружественности, но через объекты.
Лучше назвать функцию ConnectTheCap();
Композиция класс: "кароче сорян дорогуши я только с одной этой классоткой мучу"
Агрегация класс: "кароче классотки я для всех свободен и мутить могу с вами всеми одинаково )"
Благодарю за урок.
Спасибо за урок!
спасибо
Спасибо