OOП, немного Python и Ruby
24/5/07 08:08![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Коля Голубев (
nickolaygolubev) и Вова Байда (
vbayba) продолжают потихоньку ковырять Python,
в отличие от меня.
Оказывается,дельфин и не рыба вовсе там метод __init__
- не конструктор, а нечто, что вызывается "после коструирования"
пустого объекта. Разница, как на меня, отсутствует. Тем более что
только __init__ создаёт все поля класса.
Это значит, если вы хотите пронаследоваться от другого класса, нужно вызвать его __init__ из своего. А последнее значит, что конструктор вашего класса может сам выбирать, от какого класса ему наследоваться. Забавно, factory прямо в конструкторе.
Недавно думал, по какой книжке учить студентов ООП. И обнаружил, что не знаю.
Да, "Рефакторинг" содержит много хороших и вдохновляющих идей, но они там размазаны.
Буч слишком толстый, на C++, да его и не рекомендовал
alf_kadett.
Рекомендовал Бадда, видимо, "An Introduction to Object-Oriented Programming".
Программу по ООП отлично составил Богдан Пришедько. Он взял:
Сергей (
salpaev) сказал, что Буч действительно плох.
Рекомендовал:
Сергей же снова вернулся к скриптовым языкам и сказал, что без IDE с code completion и рефакторинга хотя бы на уровне move method порог изучения языка гораздо выше. Он бы выучил Ruby, если бы не приходилось каждый раз лазить в доку, чтобы узнать, какие методы есть в классе Array или HashTable.
И сделал вывод, что нас ждёт нашествие блондинок со знанием C#.
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Оказывается,
Это значит, если вы хотите пронаследоваться от другого класса, нужно вызвать его __init__ из своего. А последнее значит, что конструктор вашего класса может сам выбирать, от какого класса ему наследоваться. Забавно, factory прямо в конструкторе.
Недавно думал, по какой книжке учить студентов ООП. И обнаружил, что не знаю.
Да, "Рефакторинг" содержит много хороших и вдохновляющих идей, но они там размазаны.
Буч слишком толстый, на C++, да его и не рекомендовал
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Программу по ООП отлично составил Богдан Пришедько. Он взял:
- описание АТД
- естественно, три кита - инкапсуляцию, наследование, полиморфизм... кстати, а кто выделил именно эти три? Я не нашёл;
- coupling and cohencion;
- семь приципов: Open Closed (откуда бишь это?), Liskov substitution, Dependency Inversion, Interface Segregation, Composite Reuse, Least Knowledge
- признаки "вони" кода у Фаулера;
- Рекомендации по АТД и проектироваанию классов у МакКоннелла;
Сергей (
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Рекомендовал:
- Rebecca Wirfs-Brok: "Designing Object-Oriented Software" - у неё он нашёл объяснения многим своим, как он когда-то считал, неправльным решениям - data object, stateless objects, объекты-методы и т.п. Она же критикует design patterns, например, рассматривает случаи, когда вроде бы под ситуацию неплохо подходит паттерн из GoF, а если подумать - получается совсем другой дизайн. Ну, в последний случай я не очень верю, думаю, если присмотреться, там будет либо не очень паттерновая ситуация, либо новое решение тоже окажется паттерном :)
- Лармана - "Applying UML and design patterns", только не 3е издание, а раньше. В 3м тот приплёл буззворды вроде "agile development", что не пошло книге на пользу;
- DDD - Domain-driven design Эванса, в обязательном порядке;
- Майерс "Effective C++" тоже сильно помог понять ООП, показал много новых приёмов типа двойной диспетчеризации.
Сергей же снова вернулся к скриптовым языкам и сказал, что без IDE с code completion и рефакторинга хотя бы на уровне move method порог изучения языка гораздо выше. Он бы выучил Ruby, если бы не приходилось каждый раз лазить в доку, чтобы узнать, какие методы есть в классе Array или HashTable.
И сделал вывод, что нас ждёт нашествие блондинок со знанием C#.
Tags:
(no subject)
24/5/07 07:29 (UTC)Вы пробовали реализовывать Open/Closed на практике? Мне кажется, это будет сплошной Copy/Paste и overengineering.
(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
Posted by(no subject)
24/5/07 08:22 (UTC)З. Ы. >> что нас ждёт нашествие блондинок со знанием C# - бу-го-га, дык... я - первая ласточка ? :-D
(no subject)
Posted by(no subject)
Posted by(no subject)
24/5/07 08:53 (UTC)(no subject)
24/5/07 11:34 (UTC)(no subject)
24/5/07 19:47 (UTC)Fowler Analysis patterns
GOF Пример в начале
Дизайн хороших библиотек, например HotDraw
ИМХО человек должен полюбить процесс создания дизайна, после такой зацепки дальше сам разберется.
(no subject)
24/5/07 19:57 (UTC)http://ru.smalltalk.wikia.com/wiki/ПРИНЦИПЫ_ОО_ДИЗАЙНА
Посоветуйте сайт с музыкой для начинающего рэппера
19/1/08 04:32 (UTC)Я - начинающий брейкдансер. Хочу посмотреть новые элементы брейкданса.
Где и как это можно сделать, цена?
(no subject)
Posted by