Тайм-коды: ООП, Наследование, принципы S.O.L.I.D. 1:03 5 принципов создания классов: S.O.L.I.D. 4:36 принцип единственной ответственности классов 6:20 класс Пушка 8:48 иллюстрация на доске Пушка. Расширение функционала 11:03 несколько осей изменений не должны проходить через один класс 14:35 антипаттерн божественный объект GodObject. Шаблон проектирования программы 22:33 Иерархия 27:04 принцип подстановки Барбары Лисков 27:23 Подкласс (производный). Класс наследник. Надкласс (базовый) 30:37 Абстрактный класс 32:51 Ассоциация между классами 35:15 Наследование. Выстраивает иерархию типов 35:36 абстрактные методы 36:45 принцип инверсии зависимостей 40:24 принцип подстановки Барбары Лисков 48:33 код. Иерархия Hierarchy.py 50:03 явный вызов конструктора надкласса. Конструктор производного класса обязательно должен звать конструктор базового 53:37 метод super() - это функция, которая возвращает надкласс 57:38 gun.py 1:01:20 код 1:03:39 второй механизм в ООП как вести себя с множеством объектов 1:09:20 добавление в код иерархии 1:13:23 в конструкторе подкласса, при вызове super().__init__(), не нужно прописывать свойства конструктора надкласса, оно само 1:23:03 Агрегация. Класс-агрегат содержит в себе объекты других классов
У вас есть объект - Автомобиль. В нём есть метод -> Пуск ! Этот метод знает о классе -> Двигатель , и умеет его запустить. Класс Двигатель - имеет свойство - Температура , и исходя из значения этого свойства -> может обратиться к Классу -> Вентилятор , и вызвать у него метод ПУСК. При должной организации приватности - всё будет работать безопасно . Если вы всё напишите в одно ПОЛОТНО , или в одну функцию , помимо того , что будет сложно уследить\понять\изменять\ , то ещё и кто то сможет напрямую запустить вентилятор , или обратиться и изменить свойство двигателя - температура. Специально - или как бывает чаще - нечаянно .
Добавлю, что при увеличении детализации задачи, её более точного описания у вас будут появляться новые классы, а старые станут "вспомогательными". Если у вас есть не только датчик температуры, а датчик оборотов, датчик давления топлива в рампе, давления в турбине - это всё будут классы. Оперировать объектами этих классов из класса "двигатель" неправильно. Так у вас появится класс ЭБУ. В классе ЭБУ вероятно, понадобятся подклассы отвечающие за топливную смесь, трекшн контроль, распределение момента, и т.д. Старайтесь документировать каждый класс, каждый метод, даже если он ВАМ кажется простым и понятным. Это очень важный аспект, который отличает хороших программистов от говнокодеров.
Когда я изучал SOLID, для меня самым легким пунктом для запоминания был Open-Closed, именно второй, А LSP, наверное, самым трудным, который постоянно вылетал из головы.
Войти в режим редактирования: I или клавиша Insert Выйти из режима редактирования: Esc Записать и выйти из vim: :wq (двоеточие, write, quit) либо ZZ (shift + zz) Выйти без записи из vim: :q! либо ZQ (принцип с shift сохраняется) По vim много документации и видео по настройке
Кто-нибудь знает, можно ли исправить неправильную отрисовку графиков с помощью numpy? Можно взять к примеру график 1/x. Ветви гиперболы не уходят асимптотически вверх и вниз, вместо этого отрисовывается странный зигзак. Есть так же проблема с поиском предела. Я возможно, неправ, но lim ( x -> 0 ) 1/x не равен бесконечности, как об этом говорит sympy. Предел в любом случае не существует, но то, что в этой точке пределы слева и справа равны -оо и +oo, как я помню, не позволяют написать то, что lim ( x -> 0 ) 1/x = oo
Здравствуйте. У меня вопрос: есть три вида лекций Тимофея( практика программирования на пайтоне, алгоритмы на пайтоне и анализ данных на пайтоне). Я так понимаю, что это один курс по возрастанию сложности. я правильно понимаю? Как он проходит в университете? Я имею ввиду: по каким семестрам и на каких курсах?
И был класс Таргет. И не мог он двигаться. И тогда создал Бог класс МовинТаргет. Но так как был немного выпимши, то метод Мов прицепил к классу Таргет. Зачем он так сделал? Чтобы менеджер мог ДВИГАТЬ НЕПОДВИЖНЫЕ ТАРГЕТЫ!!! :facepalm:
Я бы сначала русскому языку научился. А так вбиваешь в поисковике «основы программирования», куча ссылок будет. Но я не советую тебе тратить на это время, если даже поиск в интернете у тебя вызывает трудности. Программистам часто приходится искать ответы на их вопросы в интернете и это уже не так просто найти, как основы.
Когда ООПу еще не учили, а его приходилось изучать самому, не было никаких СОЛИД. Были три принципа ООП: наследование, инкапсуляция, полиморфизм. Объекты не для хранения данных, они для исполнения определенного поведения! Координаты х и у никакого отношения к поведению не имеют. Это "коммерческая тайна" объектов как они будут реализовывать своё поведение. Поэтому писать под именем класса в первую очередь данные и лишь во вторую методы - не только не по ООПшному, но и вредно при объяснении ООП. Правильно было бы не координаты и скорость вписывать в прямокгольники классов, а вот как: - снаряд _появляется_ на экране, _перемещается_ по нему и в конце концов _исчезает_ - таргет _появляется_ на экране, _перемещается_ по нему, может _исчезнуть_ и _сбросить_ бонбу - бонба _появляется_ на экране, _перемещается_ по нему и в конце концов _исчезает_ - кэннон _появляется_ вместе с экраном, может _стрельнуть_ и может _исчезнуть_ - все объесты в любое время _показаны_ на экране
@GlazAlmaz фигню какую-то пишете, имхо. Вы в своих примерах вообще забыли про атрибуты классов и объектов. Судя по вашему комментарию, под классом вы понимаете ТОЛЬКО КОД(набор методов), при этом игнорируете атрибуты
@@ZZZ5204 Вы так восприняли мою "фигню" потому что не различаете проектирование и реализацию. Моя фигня - про проектирование. А ваша - про реализацию. И вот при реализации как раз и появляются атрибуты. А при проектировании про них не только можно, но и нужно забыть. Подумайте почему существуют чисто виртуальные классы (интерфейсы) и зачем бы они были нужны если у них нет атрибутов? В документации ни одной питоновской библиотеки я не встречал упоминание локальных данных (которые и есть атрибуты классов). Оказывается можно всё рассказать о поведении не упоминая реализацию!
нихера не понял .. про лизу эту .. тоесть есть сын который делает тоже самое .. плюс типа он делает это так же без дополнительных требований .. и ЧО ? в чем суть то ?? ну делает .. дальше ЧТО ? зачем об этом вааабще говорить .. может добавить еще требование что он в космос так же не летает ?
Тайм-коды: ООП, Наследование, принципы S.O.L.I.D.
1:03 5 принципов создания классов: S.O.L.I.D.
4:36 принцип единственной ответственности классов
6:20 класс Пушка
8:48 иллюстрация на доске Пушка. Расширение функционала
11:03 несколько осей изменений не должны проходить через один класс
14:35 антипаттерн божественный объект GodObject. Шаблон проектирования программы
22:33 Иерархия
27:04 принцип подстановки Барбары Лисков
27:23 Подкласс (производный). Класс наследник. Надкласс (базовый)
30:37 Абстрактный класс
32:51 Ассоциация между классами
35:15 Наследование. Выстраивает иерархию типов
35:36 абстрактные методы
36:45 принцип инверсии зависимостей
40:24 принцип подстановки Барбары Лисков
48:33 код. Иерархия Hierarchy.py
50:03 явный вызов конструктора надкласса. Конструктор производного класса обязательно должен звать конструктор базового
53:37 метод super() - это функция, которая возвращает надкласс
57:38 gun.py
1:01:20 код
1:03:39 второй механизм в ООП как вести себя с множеством объектов
1:09:20 добавление в код иерархии
1:13:23 в конструкторе подкласса, при вызове super().__init__(), не нужно прописывать свойства конструктора надкласса, оно само
1:23:03 Агрегация. Класс-агрегат содержит в себе объекты других классов
и сюда лайки накидайте) каждому 10му лайку питон в подарок
@@rioriocccp5929 )))
кто ждет новый выпуск? поставь лайк Тимофею! самый крутой бесплатный курс обучения.
К сожалению, у лайфхаков и котиков популярность выше(
Очень признателен вам, Тимофей, за ваш труд и старания! 👍
Как всегда - приятно слушать и смотреть)
У вас есть объект - Автомобиль. В нём есть метод -> Пуск ! Этот метод знает о классе -> Двигатель , и умеет его запустить. Класс Двигатель - имеет свойство - Температура , и исходя из значения этого свойства -> может обратиться к Классу -> Вентилятор , и вызвать у него метод ПУСК. При должной организации приватности - всё будет работать безопасно . Если вы всё напишите в одно ПОЛОТНО , или в одну функцию , помимо того , что будет сложно уследить\понять\изменять\ , то ещё и кто то сможет напрямую запустить вентилятор , или обратиться и изменить свойство двигателя - температура. Специально - или как бывает чаще - нечаянно .
Добавлю, что при увеличении детализации задачи, её более точного описания у вас будут появляться новые классы, а старые станут "вспомогательными". Если у вас есть не только датчик температуры, а датчик оборотов, датчик давления топлива в рампе, давления в турбине - это всё будут классы. Оперировать объектами этих классов из класса "двигатель" неправильно. Так у вас появится класс ЭБУ. В классе ЭБУ вероятно, понадобятся подклассы отвечающие за топливную смесь, трекшн контроль, распределение момента, и т.д.
Старайтесь документировать каждый класс, каждый метод, даже если он ВАМ кажется простым и понятным. Это очень важный аспект, который отличает хороших программистов от говнокодеров.
@@Deli_Berate разумеется - правильное проектирование архитектуры - как фундамент и высокого здания.
Прекрасная подача материала
Когда я изучал SOLID, для меня самым легким пунктом для запоминания был Open-Closed, именно второй, А LSP, наверное, самым трудным, который постоянно вылетал из головы.
56:05
Когда зашел в vim:
- Я не понимаю как мне теперь выйти
Войти в режим редактирования: I или клавиша Insert
Выйти из режима редактирования: Esc
Записать и выйти из vim: :wq (двоеточие, write, quit) либо ZZ (shift + zz)
Выйти без записи из vim: :q! либо ZQ (принцип с shift сохраняется)
По vim много документации и видео по настройке
качественный коммент
Нормально лекция началась: "Что-то я это не помню, да и хрен бы с ним" ))
Лучший!
Спасибо🙏
👍
Надо погуглить для нашего друга все заголовки принципа solid, гы гы гы..))
Подняли настроение прямо вначале.
Кто-нибудь знает, можно ли исправить неправильную отрисовку графиков с помощью numpy? Можно взять к примеру график 1/x. Ветви гиперболы не уходят асимптотически вверх и вниз, вместо этого отрисовывается странный зигзак. Есть так же проблема с поиском предела. Я возможно, неправ, но lim ( x -> 0 ) 1/x не равен бесконечности, как об этом говорит sympy. Предел в любом случае не существует, но то, что в этой точке пределы слева и справа равны -оо и +oo, как я помню, не позволяют написать то, что lim ( x -> 0 ) 1/x = oo
За электриков было обидно:))))
Я про момент с бутылкой водки)))
топ
дайте ссылку на GIT плз
Одобряю
Здравствуйте. У меня вопрос: есть три вида лекций Тимофея( практика программирования на пайтоне, алгоритмы на пайтоне и анализ данных на пайтоне). Я так понимаю, что это один курс по возрастанию сложности. я правильно понимаю? Как он проходит в университете? Я имею ввиду: по каким семестрам и на каких курсах?
Если еще нужно , то я так понял 1(возможно начало 2) семестр 1 курса
чтобы сделать матрешку надо сделать матрешку...
чтобы понять матрешку, надо мыслить как матрешка...
ПОдскажите а где все эти лекции посмотреть, в плейлисте пайтон 20202 только 1 лекция, а на транляции не успеваю никак(
Они остаются на этом канале
И был класс Таргет.
И не мог он двигаться.
И тогда создал Бог класс МовинТаргет.
Но так как был немного выпимши, то метод Мов прицепил к классу Таргет.
Зачем он так сделал? Чтобы менеджер мог ДВИГАТЬ НЕПОДВИЖНЫЕ ТАРГЕТЫ!!!
:facepalm:
Привет хочу научиться программирования, я запутался и не знаю с чего начинать, подскажите лекцию плз.
Я бы сначала русскому языку научился. А так вбиваешь в поисковике «основы программирования», куча ссылок будет. Но я не советую тебе тратить на это время, если даже поиск в интернете у тебя вызывает трудности. Программистам часто приходится искать ответы на их вопросы в интернете и это уже не так просто найти, как основы.
Можно просмотреть гарвардский курс CS50(th-cam.com/video/SW_UCzFO7X0/w-d-xo.html) в переводе от JavaRush, там как раз основы
Тимофей все отлично, спасибо! Но пожалуйста, крепите микрофон чуть пониже на грудь. Слышны все причмокивания, сглатывания слюны, дыхание и пр.
Вообще про ООП не понятно ничего
Когда ООПу еще не учили, а его приходилось изучать самому, не было никаких СОЛИД. Были три принципа ООП: наследование, инкапсуляция, полиморфизм. Объекты не для хранения данных, они для исполнения определенного поведения! Координаты х и у никакого отношения к поведению не имеют. Это "коммерческая тайна" объектов как они будут реализовывать своё поведение. Поэтому писать под именем класса в первую очередь данные и лишь во вторую методы - не только не по ООПшному, но и вредно при объяснении ООП.
Правильно было бы не координаты и скорость вписывать в прямокгольники классов, а вот как:
- снаряд _появляется_ на экране, _перемещается_ по нему и в конце концов _исчезает_
- таргет _появляется_ на экране, _перемещается_ по нему, может _исчезнуть_ и _сбросить_ бонбу
- бонба _появляется_ на экране, _перемещается_ по нему и в конце концов _исчезает_
- кэннон _появляется_ вместе с экраном, может _стрельнуть_ и может _исчезнуть_
- все объесты в любое время _показаны_ на экране
@GlazAlmaz фигню какую-то пишете, имхо. Вы в своих примерах вообще забыли про атрибуты классов и объектов. Судя по вашему комментарию, под классом вы понимаете ТОЛЬКО КОД(набор методов), при этом игнорируете атрибуты
@@ZZZ5204 Вы так восприняли мою "фигню" потому что не различаете проектирование и реализацию. Моя фигня - про проектирование. А ваша - про реализацию. И вот при реализации как раз и появляются атрибуты. А при проектировании про них не только можно, но и нужно забыть.
Подумайте почему существуют чисто виртуальные классы (интерфейсы) и зачем бы они были нужны если у них нет атрибутов?
В документации ни одной питоновской библиотеки я не встречал упоминание локальных данных (которые и есть атрибуты классов). Оказывается можно всё рассказать о поведении не упоминая реализацию!
что он пишет?) ввобще ничего не понятно что к чему)
про агрегирование .. так можно любую переменную за агрегирование подтянуть .. тоесть тот же вопрос И ЧО ?
нихера не понял .. про лизу эту .. тоесть есть сын который делает тоже самое .. плюс типа он делает это так же без дополнительных требований .. и ЧО ? в чем суть то ?? ну делает .. дальше ЧТО ? зачем об этом вааабще говорить .. может добавить еще требование что он в космос так же не летает ?