Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =) ✅Доступ к исходному коду и спонсорство www.patreon.com/SimpleCode ✅ donatepay.ru/don/SimpleCode ✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
@@saints_man никак не могу ввести в работу новые техники. Например, знаю про ООП и про делегаты с событиями и а начать их применять на автомате не получается. Крч нужно больше практики
Спасибо за уроки. Очень крутой преподаватель! Грустно, планы озвучены еще 2 года назад, но из-за сами знаете чего они пока не сбываются. Автор я надеюсь, с Вами и Вашей семьей все хорошо.
Большое спасибо за этот урок и все предыдущие уроки , все сделано с сердцем и это чувствуеться , что учителю не все равно поймешь ты или нет . От души благодарю !
Как понять когда выбирать abstract class, а когда просто класс от которого потом будем наследоваться? Разница лишь в том, что если я не сделаю override у наследника то класс родитель подставит СВОЮ РЕАЛИЗАЦИЮ методов, а абстрактный класс будет требовать чтобы обязательно было переопределение?
великолепно. И массив типов данных между делом, и сама выполненная реализация абстрактного класса. Похоже на централизованное управление наследниками с базового класса. Честно говоря и в ранее упомянутом Троелсоне и Шилдте такого уровня развёрнутых примеров не было, все как-то слишком академично, сухо, мало листингов. Поэтому особой пользы чтение этих книг не принесло (размазанная теория не давала точечно изучить и отладить изучаемые вещи). Здесь же дается самое главное, сам образ мышления программиста. Показана красота решения казалось бы простейшей задачи, так чтобы оно было легко управляемым и самое главное легко поддерживаемым. Что-то примерно подобное я встречал лишь в практикуме c# Зиборова, там тоже присутствует простота, эффективность и лаконичность кода.
Омг, ну наконец то кто-то додумался описать пример в таком виде) Респект) Смотрю первое видео чтобы восстановить знания и понимаю, что это лучший курс)
Изучив пример из книги Троелсена, про базовый класс Shape и производные Xehagon и Circle, понял что пример на Weapon, Gun и Bow получился не самый лучший для понимания со стороны применения и построение абстрактных классов, методов в дальнейшем.
А как наследовать конструктор от абстрактного класса? Я понимаю, что он не наследуется. А как его тогда переопределять? Я сейчас ни на одном сайте такой информации не нашел, а VS не делает это автоматически...
Здравствуйте Сергей! Я новичок и начал изучать С# по Вашим урокам. В принципе дается легко, думаю за 3-4 месяца осилю. Вопрос в том нужно ли после С# изучать еще языки или этого для начала будет достаточно чтобы начать что то зарабатывать и в процессе дальше учится? И еще: доступ к Вашему исходному коду сильно повлияет на процесс учебы? Заранее Спасибо!
не достаточно выучить просто синтаксис языка, надо, во первых, научиться решать поставленные задачи, и не важно что за язык вы учите, любую задачу можно решить с помощью множества разных языков программирования, тут уже вопрос удобства и рентабельности, во вторых, надо будет учить апи, фреймворки, паттерны, в зависимости от того какие задачи вы хотите решать с помощью c#
@@smaks7767 ее нет, чем вы собираетесь заниматься в дальнейшем? Вот с этого и начните, попробуйте написать какое-нибудь простое приложение, и углубляйтесь постепенно. Нету профессии просто программист, в любом случае нужна какая-то специализация
@@heymeepo1 Короче говоря изучаю дальше с# попутно вникая в нюансы разработки приложений. Язык для разработки WEB после изучения C# будет легче выучить?
@@smaks7767 у веба есть и бэк и фронт, смотря что тебе надо, можно и c# использовать для этих целей, если речь о js, то да, js очень похож визуально, и не только) на c#, его будет легко выучить
Еее, еще один топ видосик от топ человека!) Я как посмотрел твое видео про книги по с#, у меня в голове появился вопрос. Ты случаем не делаешь материал по книге Троелсена и Джепикса?)
доброго времени суток. что делать если win-defender (Smart screen) жалуется на то, что мои проги - вирусы. что на C#, что на C++. (не хотелось бы его отключать. может есть какой-то код или упаковщик и т.д)
Если хочешь по хардкору по можно и с code (очень много придется использовать командной строки). А вообще студия + решарпер самое удобное средство для быстрой работы.
в том, что абстрактный класс, это обычный класс, в котором можно делать все тоже самое, что и не в абстрактном, за исключением создания его экземпляра, а интерфейс может содержать только абстрактные методы, свойства и делегаты, и интерфейсы поддерживают множественное наследование, только еще 1 момент, что в C# 9 завезли возможность сделать базовую реализацию прямо в интерфейсе, но это не стоит использовать, если нету критической необходимости, в 99.9% случаев ее нет)
@@Crystal-kt3ig Не слушай всяких придурков в Интернете, открывай истину сам. Вообще говорят, что чтобы стать геймдевелопером надо школу закончить на одни пятерки.
Всё понятно. Но вот что я подумал .Класс предок ведь не имеет доступа к методам наследников. Тогда как, отправив объект класса Gun в параметр класса Weapon, ссылка типа Weapon имеет доступ к методу Fire наследника ? Почему при переопределении предки вдруг начинают иметь доступ к полям наследников? Кажется понял. Так как экземпляр объекта абстрактного класса создать нельзя ссылка этого класса каким-то образом может ссылаться на методы объектов наследников. А класс предок с виртуальным методом имеет доступ к переопределённым методам наследников потому что это как бы один общий метод . Но всё равно как-то странно.
Короче это только ссылка класса предка имеет доступ к полям наследников. А экземпляр предка не имеет доступ к полям наследников. В параметрах class Player { Shoot( Weapon weapon){} } Weapon weapon - это только ссылка, а не объект. Чтобы она стала объектом класса Weapon нужно сделать так Weapon weapon = new Weapon(); и теперь эта ссылка ссылается на объект типа Weapon. Если создать Gun gun = new Gun(); и отправить в параметры Shoot class Player { Shoot( Weapon weapon) { weapon.Shoot() } } то эта ссылка превращается Player player = new Player(); Player.Shoot(new Gun() ); Weapon Weapon = new Gun() // в это объект наследника можно создать через ссылку класса предка.
Спасибо за уроки! Пожалуйста, выкладывайте в 1080р (без 60 кадров). Очень грузит ноут, а хотелось бы еще и в VS сидеть одновременно. Поддержите лайком у кого слабый ПК!
я так и не понял в чем смысл его, ведь можно же насоздавать кучу конкретных методов и задействовать перегрузку. кода что так, что по-другому будет дофига, но в первом случае будет полный контроль над всеми данными.
Привет, слушай , можешь в каком-нибудь ролике уделить пару минут конкотенации строк с помощью "$", а то об этом остальные объясняют как-то непонятно... сложно что-ли)
Как-то непонятно всё равно. Зачем нам этот абстрактный класс, который по-сути ничего не делает, если мы всё равно создаём обыкновенный класс и всю логику пишем в нём?
Это конечно расходится с плюсами, но все же достаточно понятно. А вот вывод на консоль, все ни как не могу привыкнуть. Все какие то значки, фигурные скобочки... На плюсах лучше. Взяли изувечили... тьфу. Урок же отличный. Спасибо Сергей!
С выводом на консоль всё просто. Если просто текст в кавычках "text", то напечатается как текст. А вот если написать $ знак доллара перед первой кавычкой, то внутри текста можно в фигурных скобках выводить переменные. Например Console.Write($"Город {city}"); Это будет равнозначно Console.Write("Город" + city);
@@dzmitrystudy9514 Шутишь? В реальных проектах это используется постоянно. Запутывание только в маленькой программке, когда у тебя уже полноценная программа это наводит порядок и ее дальнейшее масштабирование, без этого твоя программа будет плохо читабельна и когда захочешь ее расширять столкнешься с массой проблема, почитай про паттерны, например SOLID.
Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)
✅Доступ к исходному коду и спонсорство www.patreon.com/SimpleCode
✅ donatepay.ru/don/SimpleCode
✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
Здравствуйте. Сколько всего уроков будет?
Будут ли отдельные видео по пятерному проектированию ?
Порождающие, Структурные, Поведенческие.
Паттерны разработки: MVC vs MVP vs MVVM vs MVI?
SOLID?
@@gupishayvi4341 DRY KISS YAGNI :)
отлично объяснил , даже пересматривать не пришлось , лайк бро
Восхищает не только отличная подача материала, но и Ваша точность в описании звуков разных видов оружия:D
Наоборот же не точно озвучил. Пыщ озвучил, как "пышч" :)
@@ravenempty3562 Так он из Украины, там щ читается как "шч", так что все точно
@@Remir_ понятно)
Лучшая часть понедельника
Спасибо!!! Ещё не дошёл до этого урока, но дорогу осилит идущий
Дошёл?)
@@youchinafriend естественно )) Но столкнулся с новой проблемой
)
@@slavaukharikkim4833 понятно))
@@slavaukharikkim4833 какая проблема?)
@@saints_man никак не могу ввести в работу новые техники. Например, знаю про ООП и про делегаты с событиями и а начать их применять на автомате не получается.
Крч нужно больше практики
Сергей, приветствую тебя!
Благодарю!
Сергей, огромное спасибо! Твои уроки это больше чем уроки..!
Спасибо большое!
Спасибо большое за урок!
Как всегда шикарно. Просто и понятно. Вы лучший.
Спасибо за уроки. Очень крутой преподаватель! Грустно, планы озвучены еще 2 года назад, но из-за сами знаете чего они пока не сбываются. Автор я надеюсь, с Вами и Вашей семьей все хорошо.
Спасибо огромное за полезнейшие уроки !!!
Сергей, вы гений в преподавании материала. Благодаря вам смог в короткий срок подготовится к экзамену по ооп c#. Большое вам спасибо ❤
Понял материал весьма абстрактно...
Подача материала отличная! Сергей, вы супер! Хотелось бы побольше домашних заданий на тему ооп, чтобы материал лучше усваивался =)
Спасибо тебе огромное, Сергей!
Благодарю за видео, как всегда лаконично и информативно.
Вкусный урок!!! Я наконец дошёл до него)) спасибо за книги, Шилдт помогает)
Спасибо за бесплатные и понятные уроки
Как вы понятно и доступно излагаете материал, огромное вам спасибо.
Охрененно! Как все красиво, логично и просто, если разобраться 😂
Спасибо, Сергей за отличную подачу 🙌🏻
Это гениально, а подача материала на высоте, как и всегда. Спасибо вам
Спасибо!
Весьма добротно, как всегда!
спасибо за уроки !
Большое спасибо за этот урок и все предыдущие уроки , все сделано с сердцем и это чувствуеться , что учителю не все равно поймешь ты или нет .
От души благодарю !
Поддерживающий комментарий для дальнейшего развития канала. Вы чрезвычайно понятно все объясняете
Благодарствую!
Очередной поддерживающий комментарий для развития канала. Сергей, безмерное спасибо за такую подачу материала, четко, ясно и понятно
Отличное видео!
Отличный урок! Выражаю огромную благодарность автору!
МОЛОДЕЦ ПРОДОЛЖАИИИИ ! ТЫ ПОМОЖЕН МНОООГИМ
Подача материала отличная! Сергей, вы супер! Хотелось бы побольше домаш
Сергей ты Супер, классный урок все четко обяснил, спасибо за урок
Лучший,спасибо!
пальцы вверх, спасибо!!!
Блин , оно всё понятно в начале урока , но когда добавляется больше строк , то немного всё равно путаюсь. Спасибо за урок! Крутая информация )
Просто класс👍
Как не зайдешь - всегда топовые примеры.
Дякую за урок)
Класс. Очень крутой урок получился.
Спасибо за отличные уроки!
Спасибо вам Сергей.
Ура!
Лучший!
Класс.
Больше уроков связаны с играми )))
*Очень хорошо обьяснил ! спасибо*
Спасибо за уроки! =)
Хорошие видео)
Отличное видео, спасибо!
Как понять когда выбирать abstract class, а когда просто класс от которого потом будем наследоваться?
Разница лишь в том, что если я не сделаю override у наследника то класс родитель подставит СВОЮ РЕАЛИЗАЦИЮ
методов, а абстрактный класс будет требовать чтобы обязательно было переопределение?
Верно. Ну и вообще нельзя сделать экземпляр абстрактного класса.
Лайк не глядя!
шутка, конечно же я посмотрел 🙃
великолепно. И массив типов данных между делом, и сама выполненная реализация абстрактного класса. Похоже на централизованное управление наследниками с базового класса. Честно говоря и в ранее упомянутом Троелсоне и Шилдте такого уровня развёрнутых примеров не было, все как-то слишком академично, сухо, мало листингов. Поэтому особой пользы чтение этих книг не принесло (размазанная теория не давала точечно изучить и отладить изучаемые вещи). Здесь же дается самое главное, сам образ мышления программиста. Показана красота решения казалось бы простейшей задачи, так чтобы оно было легко управляемым и самое главное легко поддерживаемым. Что-то примерно подобное я встречал лишь в практикуме c# Зиборова, там тоже присутствует простота, эффективность и лаконичность кода.
Программирование хобби, сильно помогли, сенк.
спасибо
Успехов вам, надеюсь что вы продолжаете вести свой канал
вы хороший 🥺
well done !
Замечательно
Спасибоо!
ждем теперь про интерфейсы)
Дуже класне пояснення матеріалу, все дуже доступно і зрозуміло.
Для полноты картины надо было еще в player добавить свойство health и метод hit {health - damage}
Омг, ну наконец то кто-то додумался описать пример в таком виде) Респект) Смотрю первое видео чтобы восстановить знания и понимаю, что это лучший курс)
Изучив пример из книги Троелсена, про базовый класс Shape и производные Xehagon и Circle, понял что пример на Weapon, Gun и Bow получился не самый лучший для понимания со стороны применения и построение абстрактных классов, методов в дальнейшем.
Абстрактные методы и в интерфейсах храняться.
И сделай сравнение абстрактных классов и интерфейсов.
С функциональной точки зрения, если не требуется никакие дополнительные данных в виде полей, конструкторов и т.д. - используются интерфейсы.
А как наследовать конструктор от абстрактного класса? Я понимаю, что он не наследуется. А как его тогда переопределять? Я сейчас ни на одном сайте такой информации не нашел, а VS не делает это автоматически...
Здравствуйте Сергей! Я новичок и начал изучать С# по Вашим урокам. В принципе дается легко, думаю за 3-4 месяца осилю. Вопрос в том нужно ли после С# изучать еще языки или этого для начала будет достаточно чтобы начать что то зарабатывать и в процессе дальше учится? И еще: доступ к Вашему исходному коду сильно повлияет на процесс учебы? Заранее Спасибо!
не достаточно выучить просто синтаксис языка, надо, во первых, научиться решать поставленные задачи, и не важно что за язык вы учите, любую задачу можно решить с помощью множества разных языков программирования, тут уже вопрос удобства и рентабельности, во вторых, надо будет учить апи, фреймворки, паттерны, в зависимости от того какие задачи вы хотите решать с помощью c#
@@heymeepo1 Так с чего вообще начать учится? Никто внятно не может объяснить. Есть какая нибудь пошаговая инструкция?
@@smaks7767 ее нет, чем вы собираетесь заниматься в дальнейшем? Вот с этого и начните, попробуйте написать какое-нибудь простое приложение, и углубляйтесь постепенно. Нету профессии просто программист, в любом случае нужна какая-то специализация
@@heymeepo1 Короче говоря изучаю дальше с# попутно вникая в нюансы разработки приложений. Язык для разработки WEB после изучения C# будет легче выучить?
@@smaks7767 у веба есть и бэк и фронт, смотря что тебе надо, можно и c# использовать для этих целей, если речь о js, то да, js очень похож визуально, и не только) на c#, его будет легко выучить
Еее, еще один топ видосик от топ человека!)
Я как посмотрел твое видео про книги по с#, у меня в голове появился вопрос. Ты случаем не делаешь материал по книге Троелсена и Джепикса?)
Спасибо вам за ваши отличные уроки!
Будут ли в уроки по WPF?
Си шарп плюшки
Console.WriteLine(GetType().Name+Damage); почему не сказать, что у гет тайп неявно вызывается экземпляр текущего класса для получения типа?
10:23 а как с помощью for это сделать?) Ведь item в foreach(т.е. его тип (var)) - это weapon, а в for переменная i это int
индексы у элементов массива целые
стрельба из лука - чпуньк! ну, очень враждебно и устрашающе)))))
Именно с таким звуком стреляют в Worms)
Также ржал от "пыщ-пыщ" в уроке про инкапсуляцию))
Я это на английском написал, и придумал "Shapuchak"😂
доброго времени суток. что делать если win-defender (Smart screen) жалуется на то, что мои проги - вирусы.
что на C#, что на C++.
(не хотелось бы его отключать. может есть какой-то код или упаковщик и т.д)
лично я отключаю
автор, возможно ли получить вашу консультацию?
Где же ваши уроки :(
Ребят, подскажите пожалуйста. Скачал VS Code вместо Visiol Studio 2019. Будет ли разница в изучении C#?
Если хочешь по хардкору по можно и с code (очень много придется использовать командной строки). А вообще студия + решарпер самое удобное средство для быстрой работы.
будет разница если комп слабый, на моём вижуал студио ОЧЕНЬ лагает, слишком ресурсоёмкая, в вскоде всё норм
Эх встретимся через неделю ((
Клёво) Нравится пояснение. НО сама тема... 2 раза пересмотрел видос. сложНААА!!!
Есть же интерфейсы?
Следующий урок будет по интерфейсам, получается.
в чем разница между абстрактным классом и интерфейсом?
в том, что абстрактный класс, это обычный класс, в котором можно делать все тоже самое, что и не в абстрактном, за исключением создания его экземпляра, а интерфейс может содержать только абстрактные методы, свойства и делегаты, и интерфейсы поддерживают множественное наследование, только еще 1 момент, что в C# 9 завезли возможность сделать базовую реализацию прямо в интерфейсе, но это не стоит использовать, если нету критической необходимости, в 99.9% случаев ее нет)
коммент для продвижения
Местами нужно скорость воспроизведения поставить 0.75
ну почему не вы преподаете у меня шарп :(
4:14 пздц 😅
Что делать если хочешь стать программистом(gamedev), но ненавидишь физику?
А физика тут причем?
@@ivankorchmit6893 ну тип в инете говорят то что физика нужна
@@Crystal-kt3ig Не слушай всяких придурков в Интернете, открывай истину сам. Вообще говорят, что чтобы стать геймдевелопером надо школу закончить на одни пятерки.
@@ivankorchmit6893 Ок
Всё понятно. Но вот что я подумал .Класс предок ведь не имеет доступа к методам наследников. Тогда как, отправив объект класса Gun в параметр класса Weapon, ссылка типа Weapon имеет доступ к методу Fire наследника ? Почему при переопределении предки вдруг начинают иметь доступ к полям наследников?
Кажется понял. Так как экземпляр объекта абстрактного класса создать нельзя ссылка этого класса каким-то образом может ссылаться на методы объектов наследников. А класс предок с виртуальным методом имеет доступ к переопределённым методам наследников потому что это как бы один общий метод . Но всё равно как-то странно.
Короче это только ссылка класса предка имеет доступ к полям наследников. А экземпляр предка не имеет доступ к полям наследников. В параметрах class Player
{
Shoot( Weapon weapon){}
}
Weapon weapon - это только ссылка, а не объект.
Чтобы она стала объектом класса Weapon нужно сделать так
Weapon weapon = new Weapon();
и теперь эта ссылка ссылается на объект типа Weapon.
Если создать Gun gun = new Gun();
и отправить в параметры Shoot
class Player
{
Shoot( Weapon weapon)
{
weapon.Shoot()
}
}
то эта ссылка превращается
Player player = new Player();
Player.Shoot(new Gun() );
Weapon Weapon = new Gun() // в это
объект наследника можно создать через ссылку класса предка.
Спасибо за уроки! Пожалуйста, выкладывайте в 1080р (без 60 кадров). Очень грузит ноут, а хотелось бы еще и в VS сидеть одновременно. Поддержите лайком у кого слабый ПК!
@@patrickowens7665 Спасибо, твоя поддержка хоть и не адекватная но может помочь )
@@patrickowens7665 может все таки тебя за щеку а не тебе за щеку? Смысл в корне меняется))))
@@patrickowens7665 так научись писать правильно
@@patrickowens7665 🤦🏻♂️
когда foreach
Что?
когда try catch
не сегодня ребят, не сегодня...
я так и не понял в чем смысл его, ведь можно же насоздавать кучу конкретных методов и задействовать перегрузку. кода что так, что по-другому будет дофига, но в первом случае будет полный контроль над всеми данными.
Когда новый программист решит добавить своё оружие, то он используя абстрактный класс сразу поймет, какие методы обязательны.
Почему решарпер не используете?
Привет, слушай , можешь в каком-нибудь ролике уделить пару минут конкотенации строк с помощью "$", а то об этом остальные объясняют как-то непонятно... сложно что-ли)
Просмотри плейлист, очень часто есть примеры использования, где все наглядно и понятно.
+
Боюсь скоро игры будем писать и наносить урон врагу.
Как-то непонятно всё равно. Зачем нам этот абстрактный класс, который по-сути ничего не делает, если мы всё равно создаём обыкновенный класс и всю логику пишем в нём?
Это конечно расходится с плюсами, но все же достаточно понятно. А вот вывод на консоль, все ни как не могу привыкнуть. Все какие то значки, фигурные скобочки... На плюсах лучше. Взяли изувечили... тьфу. Урок же отличный. Спасибо Сергей!
С выводом на консоль всё просто.
Если просто текст в кавычках "text", то напечатается как текст.
А вот если написать $ знак доллара перед первой кавычкой, то внутри текста можно в фигурных скобках выводить переменные. Например
Console.Write($"Город {city}");
Это будет равнозначно
Console.Write("Город" + city);
@@alexandervotyakov Круто спасибо
Можно ДЗ, пожалуйста.
Давай я свои скину как раз на эту тему хапхпах
Пока не понятно зачем именно использовать что-то абстрактное...
Да, думаю на реальных проектах при разработке это редко используется т.к. очень сильно запутывает код
@@dzmitrystudy9514 Шутишь? В реальных проектах это используется постоянно. Запутывание только в маленькой программке, когда у тебя уже полноценная программа это наводит порядок и ее дальнейшее масштабирование, без этого твоя программа будет плохо читабельна и когда захочешь ее расширять столкнешься с массой проблема, почитай про паттерны, например SOLID.
У твоих уроков один минус, слишком быстро кончаются
Огромное спасибо за урок!!
спасибо за урок!