Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Когда нужно использовать ООП?   Найти похожие ветки 

 
leklerk ©   (2012-05-28 18:52) [0]

Добрый день! Интересно было бы услышать мнения о том, когда нужно использовать ООП в delphi, какие-то примеры. Поделитесь своими соображениями и опытом!


 
robt   (2012-05-28 19:04) [1]

ООП это просто "помогалка для програмиста" типа чтобы меньше букв писать
существующая только в редакторе кода и больной фантазии компилятора поэтому,хош пользуй,хош не пользуй


 
Медвежонок Пятачок ©   (2012-05-28 20:29) [2]

ооп следует применять сразу после того как начнешь писать нормальный процедурный код.


 
ProgRAMmer Dimonych ©   (2012-05-29 10:48) [3]

А не слишком ли расплывчатая формулировка вопроса? Ведь формы с их методами и свойствами - тоже ООП.


 
Ega23 ©   (2012-05-29 10:52) [4]

Добрый день! Интересно было бы услышать мнения о том, когда нужно пользоваться посудой для приготовления пищи, какие-то примеры. Поделитесь своими соображениями и опытом!


 
ProgRAMmer Dimonych ©   (2012-05-29 10:55) [5]

> [4] Ega23 ©   (29.05.12 10:52)

А не слишком ли расплывчатая формулировка вопроса? Ведь солдатская каска с её формой и термоустойчивостью - тоже посуда.


 
Ega23 ©   (2012-05-29 10:58) [6]


> Ведь солдатская каска с её формой и термоустойчивостью - тоже посуда.


Для начала рекомендую каску в костёр поставить и посмотреть что будет.


 
ProgRAMmer Dimonych ©   (2012-05-29 11:08) [7]

> [6] Ega23 ©   (29.05.12 10:58)

Так можно и с одноразовым пластиком (тарелки, стаканчики) поступить. Хотя да, про термоустойчивость это я [внимание!] погорячился :)


 
Anatoly Podgoretsky ©   (2012-05-29 11:14) [8]

> Ega23  (29.05.2012 10:52:04)  [4]

Да запросто, например когда готовишь шашлык посуда не нужна. Теперь в
предметной области property posuda: boolean ...


 
AV ©   (2012-05-29 11:16) [9]

Когда писать придется много.
Помнится, читая примеры, не понимал, зачем это все они делают? Тут же две строки написать, если не ООП делать.
А когда писать приходится 10 000 строк, а потом делать что-то похожее, немного изменив начальное, тут и приходит ООП. Делаешь базовый класс, определяешь его самые общие св-ва/методы, потом только расширяешь.
А найдя ошибку логики/ заточив под новые требования, не переписываешь кучу программ/программок/утилит. А только _перекомпилируешь,  поправив базу.

зы
да нет проблем,  надо просто котелок использовать как головной убор :)


 
ProgRAMmer Dimonych ©   (2012-05-29 11:18) [10]

> [9] AV ©   (29.05.12 11:16)

А ещё, если котелок варит, можно не прятать его под головным убором :)


 
Ega23 ©   (2012-05-29 11:18) [11]


> Так можно и с одноразовым пластиком (тарелки, стаканчики)
> поступить. Хотя да, про термоустойчивость это я [внимание!
> ] погорячился :)


Не в термоустойчивости дело. Каска в этом плане вполне нормальная. просто она покрашена. Задолбаешься краску с неё обжигать, прежде чем что-то готовить :)

Но мы отвлеклись от темы. Можно приготовить пожрать, не используя всякие кастрюли, котелки и сковородки? Можно. Но с ними - удобнее и быстрее.
Вот ровно то же самое и с ООП.


 
oldman ©   (2012-05-29 12:07) [12]


> Можно приготовить пожрать, не используя всякие кастрюли,
>  котелки и сковородки? Можно. Но с ними - удобнее и быстрее.


А бутерброды?
Быстро, удобно, без кастрюли.


 
Ega23 ©   (2012-05-29 13:06) [13]


> А бутерброды?
> Быстро, удобно, без кастрюли.


А ООП - это не панацея от всех бед. Равно как и кастрюли-сковородки. Где-то вообще не нужно ("бутерброды"), где-то унылый костыль ("шашлык"). Где-то epic win ("щи" и "утка по-пекински").


 
Anatoly Podgoretsky ©   (2012-05-29 13:22) [14]

> Ega23  (29.05.2012 13:06:13)  [13]

От щей и утки не отказужусь


 
RWolf ©   (2012-05-29 13:25) [15]

«и того, и другого! и можно без хлеба»


 
stas ©   (2012-05-29 15:21) [16]

leklerk ©   (28.05.12 18:52)
Если Вы понимаете ООП Вы таких вопросов задавать не будете, если нет, то какой смысл Вам объяснять.


 
AV ©   (2012-05-29 16:14) [17]


> stas ©   (29.05.12 15:21) [16]

нет-нет.
Когда изучали ООП нам Федосин приводил примеры разные.
Вроде делаем объект1, объект2(объект1), объект3(объект1)
в объекте1 есть св-во Color.
Далее любому объекту говорим цвет = зеленый. Оп-па, и он зеленый.

И вот тут именно, надо сразу оговорится, что на простых примерах это не наглядно. Потому что всегда думал - сколько же ты понаписал тут..class virtual, override, а почему бы не вызвать закраску по региону нужным цветом - ну строка кода всего-то..
Ну и для объект2 и объект3 повторил. Все равно меньше, раза в 2, выходит писанины.
А потому что кода больше 2-3 000 строк не видел еще в глаза тогда :)


 
stas ©   (2012-05-29 16:57) [18]

Весь прикол ООП не в том что меньше писанины, а в том что, есть возможность объявить  О:Объект1 и где-то в коде присвоить ему color, и без разницы О это будет Объект1 или Объект2,Объект3.
в коде это будет выглядеть так

procedure paintToRed (O:TObject1)
begin
O.color = clred;
end;

....
Var O1, O2 :TObject1;
O3:Tobject3;
....
O1:=TObject1.Create();
O2:=TObject2.Create();
O3.TObject3.Creatte()
....
paintToRed(O1);
paintToRed(O2);
paintToRed(O3);


 
stas ©   (2012-05-29 16:58) [19]

*O3:=TObject3.Create()


 
Медвежонок Пятачок ©   (2012-05-29 17:03) [20]

вообще это прикол не ОПП, а всего лишь полиморфизма прикол.


 
stas ©   (2012-05-29 17:14) [21]

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


 
MonoLife ©   (2012-05-29 17:32) [22]


> От щей и утки не отказужусь
... «и того, и другого! и можно без хлеба»

ща "давайте будем жрать!" придет и всё съест))


 
stas ©   (2012-05-29 17:37) [23]

stas ©   (29.05.12 17:14) [21]
Хотя возможно перегрузка функций это в какой-то степени тоже полиморфизм.


 
Медвежонок Пятачок ©   (2012-05-29 17:37) [24]

Да но полиморфизм ....

Ага.
Но ты-то сказал, что ВСЯ фишка ооп - это твой прикол с полиморфной обработкой объектов.


 
stas ©   (2012-05-29 21:39) [25]

Медвежонок Пятачок ©   (29.05.12 17:37) [24]
Ну, да. А без полиморфизма мало толку от ООП.


 
Ega23 ©   (2012-05-29 21:45) [26]


>  А без полиморфизма мало толку от ООП.


Это ещё почему?


 
Loginov Dmitry ©   (2012-05-29 21:50) [27]

Кто-нибудь обращал внимание, какое определение инкапсуляции (важнейшего правила ООП) дает Википедия?
http://clck.ru/W/19Vrx
И это у них очень давно. А ведь это первое, что выдают поисковые машины.
:(


 
Ega23 ©   (2012-05-29 21:53) [28]


> Кто-нибудь обращал внимание, какое определение инкапсуляции
> (важнейшего правила ООП) дает Википедия?


А что там не так?


 
Медвежонок Пятачок ©   (2012-05-29 21:54) [29]

Ну, да. А без полиморфизма мало толку от ООП.


не надо вихлять задом.
ты сказал чушь про всю фишку ооп.


 
Loginov Dmitry ©   (2012-05-29 21:59) [30]


> Хотя возможно перегрузка функций это в какой-то степени
> тоже полиморфизм.


Полиморфизм - это когда методы с одним и тем же именем у разных наследников делают разные вещи.
А всякие фишки типа virtual / override и прочее - это уже дополнительные навороты (правда, поддерживаемые единообразным способом всеми языками).


 
Медвежонок Пятачок ©   (2012-05-29 22:01) [31]

для него полиморфизм - это или ругательство или просто непонятное иностранное слово. отсюда и путает он перегрузку и сам полиморфизм.


 
Loginov Dmitry ©   (2012-05-29 22:01) [32]


> А что там не так?


Все так, но после прочтения становится абсолютно непонятно, что же такое инкапсуляция.
У этой статьи есть англоязычная версия, и там-то как раз все понятно, но вот наши языковеды-программисты решили перевести (на свой лад).


 
Loginov Dmitry ©   (2012-05-29 22:06) [33]


> Когда нужно использовать ООП?


ООП упрощает программирование в десятки / сотни / тысячи раз (в зависимости от сложности проекта).
Использовать его нужно при разработке более-менее сложных программных проектов.


 
Медвежонок Пятачок ©   (2012-05-29 22:06) [34]

по моему все там понятно.
но написано с точки зрения не того, кто инкапсулирует, а с точки зрения того, кто пользуется инкапсулированным.

а суть проста - сокрытие реализации.


 
Loginov Dmitry ©   (2012-05-29 22:10) [35]


> по моему все там понятно.


Для кого понятно?
Мы и так знаем, что такое инкапсуляция и не пойдем все это читать.
А что, если человек не знает и хочет понять? В англоязычной версии четко говорится, что есть 2 определения инкапсуляции, а в нашей версии оба определения слили в одно, мол сами разберетесь, люди добрые.


 
oxffff ©   (2012-05-29 22:16) [36]

полиморфизм и его виды
http://en.wikipedia.org/wiki/Polymorphism_(computer_science)


 
Медвежонок Пятачок ©   (2012-05-29 22:27) [37]

и чего конкретно здесь может быть непонятно для того, кто не знает что такое инкапсуляция?

Инкапсуля́ция — свойство языка программирования, позволяющее пользователю не задумываться о сложности реализации используемого программного компонента (то, что у него внутри), а взаимодействовать с ним посредством предоставляемого интерфейса (публичных членов — методов, данных etc.), а также объединить и защитить жизненно важные для компонента данные. При этом пользователю предоставляется только интерфейс — спецификация объекта.

как минимум понятно, что есть объект, объект может быть непростым, но мне как его пользователю повезло, так как автор объекта скрыл от меня все сложности, оставив только понятные свойства и методы.


 
Loginov Dmitry ©   (2012-05-29 22:34) [38]


> и чего конкретно здесь может быть непонятно для того, кто
> не знает что такое инкапсуляция?

Куча незнакомых терминов:
- программный компонент;
- интерфейс;
- члены ("публичные" конечно же);
- "жизненно важные для компонента данные";
- спецификация объекта;
- etc.

Так на кого рассчитано подобное определение?


 
Медвежонок Пятачок ©   (2012-05-29 22:40) [39]

Для кого незнакомых?

Для незнакомого с программированием сферического коня ?

Ну таки да, куча.
А оно для него написано?
А может оно написано для того, кто процедурным уже владеет и хочет перейти на ООП?

Для этого какие термины в непонятной куче окажутся?


 
Loginov Dmitry ©   (2012-05-29 22:50) [40]


> А может оно написано для того, кто процедурным уже владеет
> и хочет перейти на ООП?


Вряд ли процедурное программирование здесь чем-то поможет.
Какие именно термины являются понятным для человека, владеющего процедурным программированием?



Страницы: 1 2 3 4 вся ветка

Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.062 c
2-1337886159
novichek
2012-05-24 23:02
2013.03.22
FilterGraph Яркость


2-1331501068
Дмитрий
2012-03-12 01:24
2013.03.22
Сохранение файла из потока


2-1332848600
Zheksonz
2012-03-27 15:43
2013.03.22
Приоритет выполнения программы.


15-1347981872
dm_member
2012-09-18 19:24
2013.03.22
(Специфичный случай) Сохранение строк в байтовом формате


2-1340704805
ford
2012-06-26 14:00
2013.03.22
проверить переменную типа Variant





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский