Jarkko 21.02.2011 17:46 Okami

Первотег видит разницу между объектом и экземпляром класса.

1. arts 21.02.2011 18:06

И правильно делает.

2. Jarkkoarts /1 21.02.2011 18:07 Okami

Всегда это было одно и то же.

3. artsJarkko /2 21.02.2011 18:09 nedobook

В жабаскрипте, например, и класс объект, и экземпляр класса тоже объект, и массив, и словарь.

4. Jarkkoarts /3 21.02.2011 18:11 Okami

Мы об ООП, а не о сомнительных его реализациях в JS или PHP.

5. artsJarkko /4 21.02.2011 18:15 nedobook

Понятно. Кроме говножабки и плюсцов ничего не видели и видеть не хотим.

6. Jarkkoarts /5 21.02.2011 18:17 Okami

Я писал в объектно-ориентированном стиле на JS. О каком ООП может идти речь без инкапсуляции, например?

7. artsJarkko /6 21.02.2011 18:20 nedobook

Есть там инкапсуляция. Подход немного отличается, но она там есть, так что не пизди.

8. Jarkkoarts /1 21.02.2011 18:22 Okami

"A class is used to create new instances (objects) by instantiating the class."
instance — это экземпляр

9. Jarkkoarts /7 21.02.2011 18:24 Okami

Ок, почитаю справку. Мб, улучшу стиль своего js-кода, ибо многие поля хотелось сделать приватными

10. jtootf 22.02.2011 00:30 legendre

этот тред делает меня грустной пандой. я хочу дожить до тех времён, когда людей, утверждающих что инкапсуляция — это квалификатор private, будут линчевать на глазах у ликующей толпы

11. Jarkkojtootf /10 22.02.2011 07:05 Okami

свойство объекта быть чёрным ящиком же

12. jtootfJarkko /11 22.02.2011 09:59 legendre

да, вот это верно

13. Jarkkojtootf /12 22.02.2011 10:28 Kitsune

спасибо [табличка: сарказм]

14. jtootfJarkko /13 22.02.2011 10:37 legendre

не за что. если что, единственным ключевым аспектом ООП является ad-hoc полиморфизм, всё остальное варьируется: вместо классов может быть прототипная система (Io, Self), вместо наследования может быть делегирование (Snit), вместо вызовов методов может быть отправка сообщений (Smalltalk, Erlang), вместо виртуальных функций может быть паттерн Visitor (Haskell, F#). и, вообще говоря, наиболее кривая реализация ООП как раз в C++ (ну и PHP), объектная модель JS вполне себе консистентна [табличка: недовольство, свирепость, но в то же время грусть и недоумение]

15. Jarkkojtootf /14 22.02.2011 10:51

Ну тогда уж и полиморфизм необязателен. Это всё в теории.
На практике бессмыссленно использовать ООП без инкапсуляции и наследования с полиморфизмом.
Впрочем, спорить с ФП-фагом я не буду. ФП накладывает неизгладимый отпечаток...

16. jtootfJarkko /15 22.02.2011 10:58 legendre

нет, без ad-hoc полиморфизма не будет позднего связывания, и не будет возмозможности трактовать объекты как чёрные ящики. я не буду отвечать на выпады ad hominem. удачи тебе и побольше практики — особенно той, в которой нет разницы между объектами и экземплярами классов, а так же полиморфизм необязателен для реализации ООП

17. Jarkkojtootf /16 22.02.2011 11:19 Kitsune

#hsifo/8 — это по сабжу
Ну и как ты себе представляешь чёрный ящик без инкапсуляции? Это уже не черный ящик, а серый или даже прозрачный.

18. jtootfJarkko /17 22.02.2011 11:28 legendre

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

19. ElemirJarkko /15 12.04.2012 04:43

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

20. ElemirJarkko /17 12.04.2012 04:49

В рамках твоего примитивного мирка можно привести такой пример:
struct A {
Integer a;
A(Integer _a) { a = _a; }
Integer getA() { return a; }
}
interface IA {
Integer getA();
}

IA ia = new A(10);

Тогда работа с ia a priori скрывает внутреннее содержимое A несмотря на то, что оно не инкапсулировано.

Do you really want to delete ?