singalen: (Default)
[personal profile] singalen
Коля Голубев ([livejournal.com profile] nickolaygolubev) и Вова Байда ([livejournal.com profile] vbayba) продолжают потихоньку ковырять Python, в отличие от меня.
Оказывается, дельфин и не рыба вовсе там метод __init__ - не конструктор, а нечто, что вызывается "после коструирования" пустого объекта. Разница, как на меня, отсутствует. Тем более что только __init__ создаёт все поля класса.
Это значит, если вы хотите пронаследоваться от другого класса, нужно вызвать его __init__ из своего. А последнее значит, что конструктор вашего класса может сам выбирать, от какого класса ему наследоваться. Забавно, factory прямо в конструкторе.

Недавно думал, по какой книжке учить студентов ООП. И обнаружил, что не знаю.
Да, "Рефакторинг" содержит много хороших и вдохновляющих идей, но они там размазаны.
Буч слишком толстый, на C++, да его и не рекомендовал [livejournal.com profile] alf_kadett. Рекомендовал Бадда, видимо, "An Introduction to Object-Oriented Programming".
Программу по ООП отлично составил Богдан Пришедько. Он взял:
  • описание АТД
  • естественно, три кита - инкапсуляцию, наследование, полиморфизм... кстати, а кто выделил именно эти три? Я не нашёл;
  • coupling and cohencion;
  • семь приципов: Open Closed (откуда бишь это?), Liskov substitution, Dependency Inversion, Interface Segregation, Composite Reuse, Least Knowledge
  • признаки "вони" кода у Фаулера;
  • Рекомендации по АТД и проектироваанию классов у МакКоннелла;
Получилось хорошо.
Сергей ([livejournal.com profile] salpaev) сказал, что Буч действительно плох.
Рекомендовал:
  • 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#.

(no subject)

24/5/07 07:29 (UTC)
Posted by [identity profile] nponeccop.livejournal.com
http://en.wikipedia.org/wiki/Open/closed_principle

Вы пробовали реализовывать Open/Closed на практике? Мне кажется, это будет сплошной Copy/Paste и overengineering.

(no subject)

24/5/07 08:22 (UTC)
Posted by [identity profile] catty-ua.livejournal.com
>>без IDE с code completion и рефакторинга хотя бы на уровне move method порог изучения языка гораздо выше - 100 % . Всё, что я знаю сейчас - благодаря тому, что когда-то на первой у работе меня был оочень тормознючий комп, и подсказки и code completion пришлось нафик отключить. Многое подсознательно запомнилось, потому что лень было каждый раз лазить в хелп...

З. Ы. >> что нас ждёт нашествие блондинок со знанием C# - бу-го-га, дык... я - первая ласточка ? :-D

(no subject)

24/5/07 08:53 (UTC)
Posted by [identity profile] alf-kadett.livejournal.com
Именно его, Бадд хороший. С примерами на Objective C, C++, Java, Smalltalk.

(no subject)

24/5/07 11:34 (UTC)
Posted by [identity profile] its-probably-me.livejournal.com
Под Руби уже есть пара плагинов к Эклипсу и Нетбинсам, плюс платная IDEA и еще что-то. Ну и Borland/CodeGear обещают что-то летом выкатить.

(no subject)

24/5/07 19:47 (UTC)
Posted by [identity profile] aleksijb.livejournal.com
Ставя себя на место студентов. Мне бы например подошло все что связано с решением конкретных задач, пусть даже упрощенных. Например такое:
Fowler Analysis patterns
GOF Пример в начале
Дизайн хороших библиотек, например HotDraw
ИМХО человек должен полюбить процесс создания дизайна, после такой зацепки дальше сам разберется.

(no subject)

24/5/07 19:57 (UTC)
Posted by [identity profile] aleksijb.livejournal.com
Еще один взгляд на ОО дизайн:

http://ru.smalltalk.wikia.com/wiki/ПРИНЦИПЫ_ОО_ДИЗАЙНА
Posted by (Anonymous)
Здравствуйте.

Я - начинающий брейкдансер. Хочу посмотреть новые элементы брейкданса.

Где и как это можно сделать, цена?