Модераторы: Се ля ви
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ООП: class-based против prototype-based, когда что использовать? 
:(
    Опции темы
setq
Дата 16.2.2008, 00:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Если существует и то и другое, то оно кому-то нужно и кто-то находит оба подхода удобными. И всё-таки может быть есть задачи для которых например prototype-based OOP подходит лучше чем class-based и наоборот. Вот хотелось бы узнать вставал ли кто-нибудь перед выбором между этими подходами и к каким выводам пришёл. Спасибо.
  Вверх
NumLock
Дата 1.4.2008, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 30.7.2006
Где: Иркутск

Репутация: нет
Всего: нет



Могу выразить свое мнение: подход ставит перед разработчиком, как факт, язык программирования. А язык программирования выбирается в зависимости от задачи. Так что проблема выбора подхода, IMHO, встать не может.
PM MAIL ICQ Skype Jabber   Вверх
vtk13
Дата 12.6.2008, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 20.5.2007

Репутация: нет
Всего: нет



Я думаю вот это http://htmlcoder.visions.ru/JavaScript/?3 - хороший пример чем prototype-based отличается от class-based.
Суть примера в том, что можно изменить поведение уже существующего класса подключением стороннего модуля, как такое провернуть в class-based языке, я не представляю.
Буду рад, если поделитесь мыслями по поводу java или php аналогий javascript-овскго "SomeClass.prototype.myMethod=function(){...}".

PM MAIL   Вверх
Се ля ви
Дата 9.7.2008, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 6
Всего: 127



setq, вопрос интересный.

Лично мне кажется, что prototype-based наследование уместно в проектах мелкого уровня, когда есть человек, который держит программу в голове и у него, возможно, есть один-два помощника. Т.е. эти проекты трудно-масштабируемы. И это встаёт проблемой когда мы пытаемся создать большое приложение со сложной логикой.

Главная проблема мне видится в инкапсуляции, которую не учитывает prototype-based наследование. Её можно добиться на простейшем уровне (напр. в JavaScript - c использованием closure), но протащить её через prototype-based наследование весьма затруднительно. Я поставил такую задачу и это сделал для JavaScript (в этой теме), но получившийся в итоге паттерн оказался довольно громоздким, на гране пригодности из-за своей сложности.

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


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Lazin
Дата 10.7.2008, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 1
Всего: 154



Вот наследование как раз очень вредит инкапсуляции =)
А с масштабируемостью у такого подхода как раз лучше, расширяемость проще, меньше связей между разными частями системы и тд...
Хуже то, что объекты существуют только во время выполнения программы, это усложняет ее тестирование так как корректность программы написанную на java или С++ можно проверить до запуска, так как есть информация о типах, а программу на lua или Io для этого нужно запустить...
PM MAIL Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила раздела "Философия программирования":
Се ля ви

Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО:

• вопросы перспективного развития методов написания ПО;

• изменяющиеся языки и методологии программирования;


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Философия программирования | Следующая тема »


 




[ Время генерации скрипта: 0.0437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.