The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Yahoo готовит платформу для создания универсальных..."
Отправлено Аноним, 29-Янв-12 13:04 
Это странно, но люди тут говорят об ООП и даже не понимают значения инкапсуляции, наследования и полиморфизма. Объясню на пальцах.
Инкапсуляция это, грубо говоря, абстрагирование свойств объекта от "сырых" значений, в которых они могут хранится. Например, у класса Окружность могут быть свойства: радиус, диаметр, длина и площадь. Но все, что нужно хранить (инкапсулировать) классу это радиус, потому что диаметр это удвоенный радиус, длина это диаметр помноженный на пи, а площадь это квадрат радиуса помноженный на пи. Не надо путать инкапсуляцию с ограничением доступа (типа private, protected, public). Так вот встроенного механизма ограничения доступа в JS нет (хотя, можно кривовато реализовать), а инкапсуляция это сам по себе паттерн проектирования, а не фича языка.
Наследование все более-менее понимают. Животное, Собака и т.д. - ОК. Однако, возможности наследования в JS даже несколько больше, чем в том же C++, который обычно приводят как пример "нормального ООП". В отличие от крестов, в JS, например, можно наследовать только часть свойств. Ну а об интроспекции даже говорить нечего!
И наконец, полиморфизм. Это, как и инкапсуляция, скорее паттерн, чем часть языка. Это понятие ведь относится к интерфейсу (в широком смысле), который просто имеет несколько реализаций в виде разных объектов. И этот паттерн в JS реализуется крайне просто - определением свойств с нужными именами у любого объекта или "класса". Не надо путать полиморфизм с интерфейсами (как сущность в языке) или виртуальными классами. То и другое это необходимые для реализации полиморфизма механизмы в языках со статической типизацией.
В широком же смысле интерфейс это описание свойств объекта. И их в JS тоже можно использовать! Однако, проверка интерфейса будет динамической, а не статической, как в Java. Да, в принципе это минус в производительности. Но можно свести количество проверок в рантайме к необходимому минимуму или вовсе делать это только в режиме отладки или тестовых прогонов.
Так что запомните: JS это абсолютно объектно-ориентированный язык. И в чем-то он справляется с этой парадигмой гораздо лучше C++ и Java.
 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру