The OpenNET Project / Index page

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



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

Оглавление
Yahoo готовит платформу для создания универсальных мобильных..., opennews, 28-Янв-12, 22:45  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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