2020 Практика программирования на Python, лекция №9

preview_player
Показать описание
Рекомендации по теме
Комментарии
Автор

Тайм-коды: ООП, Наследование, принципы 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 Агрегация. Класс-агрегат содержит в себе объекты других классов

iritaka
Автор

Очень признателен вам, Тимофей, за ваш труд и старания! 👍

ДобродейНиколай
Автор

Как всегда - приятно слушать и смотреть)

fortnitelifechannel
Автор

кто ждет новый выпуск? поставь лайк Тимофею! самый крутой бесплатный курс обучения.

expertkmsdv
Автор

Когда я изучал SOLID, для меня самым легким пунктом для запоминания был Open-Closed, именно второй, А LSP, наверное, самым трудным, который постоянно вылетал из головы.

phat
Автор

У вас есть объект - Автомобиль. В нём есть метод -> Пуск ! Этот метод знает о классе -> Двигатель, и умеет его запустить. Класс Двигатель - имеет свойство - Температура, и исходя из значения этого свойства -> может обратиться к Классу -> Вентилятор, и вызвать у него метод ПУСК. При должной организации приватности - всё будет работать безопасно . Если вы всё напишите в одно ПОЛОТНО, или в одну функцию, помимо того, что будет сложно уследить\понять\изменять\, то ещё и кто то сможет напрямую запустить вентилятор, или обратиться и изменить свойство двигателя - температура. Специально - или как бывает чаще - нечаянно .

crissquest
Автор

Кто-нибудь знает, можно ли исправить неправильную отрисовку графиков с помощью numpy? Можно взять к примеру график 1/x. Ветви гиперболы не уходят асимптотически вверх и вниз, вместо этого отрисовывается странный зигзак. Есть так же проблема с поиском предела. Я возможно, неправ, но lim ( x -> 0 ) 1/x не равен бесконечности, как об этом говорит sympy. Предел в любом случае не существует, но то, что в этой точке пределы слева и справа равны -оо и +oo, как я помню, не позволяют написать то, что lim ( x -> 0 ) 1/x = oo

ВикторБородин-рс
Автор

56:05
Когда зашел в vim:
- Я не понимаю как мне теперь выйти

vi__kawaii
Автор

Нормально лекция началась: "Что-то я это не помню, да и хрен бы с ним" ))

nikprilutskiy
Автор

ПОдскажите а где все эти лекции посмотреть, в плейлисте пайтон 20202 только 1 лекция, а на транляции не успеваю никак(

АлександрВалерьевич-цщ
Автор

За электриков было обидно:))))
Я про момент с бутылкой водки)))

dutik
Автор

Привет хочу научиться программирования, я запутался и не знаю с чего начинать, подскажите лекцию плз.

xvaleriuc
Автор

Надо погуглить для нашего друга все заголовки принципа solid, гы гы гы..))
Подняли настроение прямо вначале.

Tubikbubik
Автор

Здравствуйте. У меня вопрос: есть три вида лекций Тимофея( практика программирования на пайтоне, алгоритмы на пайтоне и анализ данных на пайтоне). Я так понимаю, что это один курс по возрастанию сложности. я правильно понимаю? Как он проходит в университете? Я имею ввиду: по каким семестрам и на каких курсах?

ВалерийКетрис
Автор

чтобы сделать матрешку надо сделать матрешку...

ПетрНестерович-ея
Автор

И был класс Таргет.
И не мог он двигаться.
И тогда создал Бог класс МовинТаргет.
Но так как был немного выпимши, то метод Мов прицепил к классу Таргет.
Зачем он так сделал? Чтобы менеджер мог ДВИГАТЬ НЕПОДВИЖНЫЕ ТАРГЕТЫ!!!
:facepalm:

glazalmaz
Автор

Тимофей все отлично, спасибо! Но пожалуйста, крепите микрофон чуть пониже на грудь. Слышны все причмокивания, сглатывания слюны, дыхание и пр.

МаксимНиколаевичЧубин
Автор

Когда ООПу еще не учили, а его приходилось изучать самому, не было никаких СОЛИД. Были три принципа ООП: наследование, инкапсуляция, полиморфизм. Объекты не для хранения данных, они для исполнения определенного поведения! Координаты х и у никакого отношения к поведению не имеют. Это "коммерческая тайна" объектов как они будут реализовывать своё поведение. Поэтому писать под именем класса в первую очередь данные и лишь во вторую методы - не только не по ООПшному, но и вредно при объяснении ООП.
Правильно было бы не координаты и скорость вписывать в прямокгольники классов, а вот как:
- снаряд _появляется_ на экране, _перемещается_ по нему и в конце концов _исчезает_
- таргет _появляется_ на экране, _перемещается_ по нему, может _исчезнуть_ и _сбросить_ бонбу
- бонба _появляется_ на экране, _перемещается_ по нему и в конце концов _исчезает_
- кэннон _появляется_ вместе с экраном, может _стрельнуть_ и может _исчезнуть_
- все объесты в любое время _показаны_ на экране

glazalmaz
Автор

что он пишет?) ввобще ничего не понятно что к чему)

v_potoke