LINUX.ORG.RU
 

[С головного мозга] Посоветуйте литературу по ООП


0

1

Я не знаю в чем причина: привычка к чистому С, неправильное структурное мышление, еще что-то. Но я никак не могу вкурить ООП на Python. Все время хочется забить на классы, наследования ит.д. и просто написать пару глобальных функций. Пишу очередной класс и ловлю себя на мысли: а без класса вышло бы раза в два короче.

Посоветуйте годной литературы по теории ООП, применимости к разным задачам. Еще желательно почитать про грамотное проектирование GUI вообще и на GTK в частности. Потому что например про callback-функции я узнал не из туториалов, а случайно и из википедии.


[#]  

> Пишу очередной класс и ловлю себя на мысли: а без класса вышло бы раза в два короче.

Классы нужны там, где предполагается их использование в виде экземпляров.

** ()
[#]  
yoghurt
>>-----Цитата---->>

Я не знаю в чем причина: привычка к чистому С, неправильное структурное мышление, еще что-то. Но я никак не могу вкурить ООП на Python

<<-----Цитата----<<

А ООП на Си вкурил? Если нет, то вот этот креатив ждет тебя!

***** ()
[#]  
yoghurt
>>-----Цитата---->>

про callback-функции я узнал не из туториалов, а случайно и из википедии.

<<-----Цитата----<<

А пишешь, будто на чистом Си горы сворачивал)

***** ()
[#]  
ae1234

если на чистом Си было бы в разы кароче и понятнее - то и ненадо туда никаких классов
дело то в обратной схеме - когда с классами было бы лучше

пихать классы куда не глядя - не особо и хорошо

* ()
[#]  

Просто попробуй написать большую библиотеку со сложным, но удобным API. Или поизучай уже написанную.

Возможно, твои задачи действительно не требуют ООП.

** ()
[#] Ответ на: комментарий от yoghurt 16.12.2011 17:24:02  
>>-----Цитата---->>

А пишешь, будто на чистом Си горы сворачивал)

<<-----Цитата----<<

Не сворачивал. Я просто любитель-самоучка) Ну и люблю Си.

()
[#] Ответ на: комментарий от ae1234 16.12.2011 17:31:14  
>>-----Цитата---->>

пихать классы куда не глядя - не особо и хорошо

<<-----Цитата----<<

Просто питон весь из себя на ООП в каждой дырке. В результате приходится выбирать между чисто ООП кодом и смесью с функциональной парадигмой.

()
[#] Ответ на: комментарий от yoghurt 16.12.2011 17:22:56  
>>-----Цитата---->>

А ООП на Си вкурил?

<<-----Цитата----<<

А креативчик-то интересный... Спасибо за пдфку, будет что почитать зимними вечерами)

()
[#]  
OldFatMan

Object-Oriented Software Construction - 2nd ed. - Bertrand Meyer

Иан Грэхем "Объектно-ориентированные методы. Принципы и практика"

// Грэди Буча уже посоветовали - плюсую. Но на мой вкус - несколько "тяжелочитаемая" книга, тем не менее полезная.

# ()
[#] Ответ на: комментарий от Gregon 16.12.2011 17:54:04  

> В результате приходится выбирать между чисто ООП кодом и смесью с функциональной парадигмой.

То, о чем ты говоришь, больше напоминает процедурную парадигму.

anonymous ()
[#] Ответ на: комментарий от anonymous 16.12.2011 20:21:24  
>>-----Цитата---->>

То, о чем ты говоришь, больше напоминает процедурную парадигму.

<<-----Цитата----<<

+1. О том же хотел написать. Уж очень часто в последнее время путают эти две парадигмы.

anonymous ()
[#] Ответ на: комментарий от yoghurt 16.12.2011 17:22:56  

Автора этого креатива явно Страуструп покусал - автор пытается имплементировать на C убогий С++ ООП. Книга давно устарела, сплошные void* - никто сейчас так не пишет. Пример правильного С - код ядра Linux. Никаких void*, все строго типизировано, даже касты элементов списков через контролируемые CONTAINER_OF().

anonymous ()
[#] Ответ на: комментарий от anonymous 17.12.2011 1:31:39  
>>-----Цитата---->>

все строго типизировано, даже касты элементов списков через контролируемые CONTAINER_OF().

<<-----Цитата----<<

Ололо. CONTAINER_OF "типизруем" через gcc-ишный typeof, который в других компиляторах отсутствует более чем полностью. Так что

>>-----Цитата---->>

сплошные void* - никто сейчас так не пишет.

<<-----Цитата----<<

4.2

См. sqlite к примеру.

**** ()