Имя: Пароль:
1C
 
ООП на v8
0 acsent
 
25.01.06
14:58
родилась идея
Использовать обработки в качестве хранилища классов.
Так например сделаны БухгалтерскиеИтоги в БП.

Конечно получается обрезанное ООП, без наследования, но все же лучше чем ничего.

Хотелость бы услышать доводы за и против
1 АперБот
 
25.01.06
15:05
Я просыпаюсь каждые 5-10 минут и поднимаю ветки, потом опять засыпаю. Неудивительно, что при таком режиме работы и сна меня часто мучают кошмары...
2 Волшебник
 
модератор
25.01.06
15:07
(0) идея у него родилась, в 2006 году.

Обрати внимание на ДАТЫ:
10.11.2002 | №15 | Черты объектно-ориентированного подхода в версии 8.0
http://www.mista.ru/subscribe/15.htm
3 Vozhd
 
25.01.06
15:09
(0) ООП без наследования? Это как? Зачем тогда такое "ООП" нужно?
4 Парижская фанера
 
25.01.06
15:13
(3) Чтобы комплексы не мучали. Еще когда все поголовно будут писать по английски вообще всё круче Java будет.
5 Волшебник
 
модератор
25.01.06
15:15
6 vasinok
 
25.01.06
15:54
http://itland.ru/forum/index.php?showtopic=8332
пожалуйста, объясните по-простому что имеется в виду
7 Волшебник
 
модератор
25.01.06
15:56
(6) Что именно тебе непонятно?
8 vasinok
 
25.01.06
16:05
(7) что означает
"Использовать обработки в качестве хранилища классов.
Так например сделаны БухгалтерскиеИтоги в БП. "?
как это можно использовать?
по ссылке из (6) слова вроде русские, но до сознания никак не доходят

пожалуйста, на пальцах, на простом басяцком языке и карандашными набросками (с)ПЗ.
нутром чую что это что-то интересное, но никак не осилю
9 acsent
 
25.01.06
18:08
(8) Там же (6) выложил пример класса: таблица группировок
10 Волшебник
 
модератор
25.01.06
18:11
(8) Мне кажется, ты не понимаешь каких-то основ и поэтому тебе непонятно все остальное. Ты понимаешь, что такое класс, объект, метод, инкапсуляция?
11 Vozhd
 
25.01.06
18:15
(10) А я не понимаю зачем это нужно в бухгалтерских программах. Может кто прояснит?
12 Волшебник
 
модератор
25.01.06
18:20
(11) Что ты имеешь в виду под словом "бухгалтерские программы"? Обработка БухгалтерскиеИтоги тебя не впечатляет?
13 Парижская фанера
 
25.01.06
18:21
(11) Хочешь сказать ты при кодировании в 1С ни классами, ни объектами, ни методами и инкапсуляцией не пользуешься?

(12) Меня нет. Я ее не видел. Денег на нее не дам.
14 Волшебник
 
модератор
25.01.06
18:23
(13) Она встроена в конфигурацию.
15 Vozhd
 
25.01.06
18:24
(12) Предпочитаю запросы.
(13) Классами и инкапсуляцией не пользуюсь. Разницы между методами и процедурами не вижу. А объектом можно назвать все что угодно.
16 Волшебник
 
модератор
25.01.06
18:25
(15) Она и организована на запросах.
17 Asmody
 
25.01.06
18:26
ну, если обратиться к классике, то ООП базируется на 3х принципах: инкапсуляция, наследование и полиморфизм.
и если с инкапсуляцтей в v8 все в порядке, то с остальными двумя полный швах. не так-ли?
18 Парижская фанера
 
25.01.06
18:29
(15)
>>Классами и инкапсуляцией не пользуюсь.

Умеешь писать в 1С без СоздатьОбъект? Тебе доступен код методов? Научи как?

>>Разницы между методами и процедурами не вижу.

Я думаю что она там всё-таки есть.

(17) Почему? Наследование в какой-то мере тоже есть.

Класс Справочник.Клиенты является наследником от абстактного класса Справочник. Как и все остальные справочники. Тоже самое с документами.
19 Волшебник
 
модератор
25.01.06
18:30
(18) В падаваны, однозначно.
20 Vozhd
 
25.01.06
18:36
(18) СоздатьОбъект не использую (не могу вспомнить случаев его использования), да и не понятно каким образом это относится к ООП.

Если есть разница между методами и процедурами, то не могли бы Вы озвучить Ваше понимание этой разницы?

А Вы знаете, что в случае со Справочник.Клиенты может использоваться не наследование, а агрегация? Или лексическое замыкание? Или что-то еще? Допустим, что Справочник.Клиенты является наследником абстактного класса Справочник, почему тогда это наследование не нашло своего отражения в таблицах? Неужели эта денормализация сделана для ускорения? А как тогда работать с приведением типов к родительскому классу?
21 OOP-A
 
25.01.06
18:41
(18) Тока вот не сделать свои наследники от своих справочников. А потому ООП и 1С три разных слова.
22 ООА-Р
 
25.01.06
18:42
(20) А тип СправочникСсылка нафига ? Тока один эс(х) полиморфизм не работает..
23 Волшебник
 
модератор
25.01.06
18:48
(20) Процедура/функция - это подпрограмма, которая имеет собственный контекст (область видимости), локальные переменные. Предназначена для решения небольшой задачи, вызывается из других мест программы (других процедур/функций), с передачей параметров. Функция отличается от процедуры тем, что имеет возвращаемое значение (одно). Параметры по ссылке позволяют и процедуре возвращать результат своей работы или иметь несколько таких результатов.

Метод - это понятие более высокого порядка. Метод - это процедура/функция (т.е. все сказанное выше верно и для метода), принадлежащая классу, реализующая функциональность объектов этого класса (или самого класса). Метод обладает всеми свойствами процедуры, но для него важны другие характеристики: область видимости этого метода (public, protected, private); реализован он в данном классе или является "чистым", абстрактным и подлежит реализации в классах-потомках и др.
24 Волшебник
 
модератор
25.01.06
18:49
(22) см. метод Печать для документов. Чистый полиморфизм.
25 Kstn12
 
25.01.06
18:56
(24) Один абстрактный метод.. И то впяный.
26 Парижская фанера
 
25.01.06
18:56
(20)

>>Допустим, что Справочник.Клиенты является наследником абстактного класса Справочник, почему тогда это наследование не нашло своего отражения в таблицах? Неужели эта денормализация сделана для ускорения? А как тогда работать с приведением типов к родительскому классу?

А зачем отражать наличие абстактного класса-родителя в БД? В чем выражена денормализация? Зачем приводить тип к родительскому если вы и так выполняете его конструктор и методы?
27 Asmody
 
25.01.06
18:57
(24) ай, молодца :)
осталось еще наследование расколоть и будет всем щасте :)
28 Kstn12
 
25.01.06
18:59
(26) Во-во, если бы ещё править конструктор и методы - было б щасте, но не полное.
29 Волшебник
 
модератор
25.01.06
18:59
(26) Класс (экземпляр) вообще не обязан находить отражение в БД. Например, отчеты и обработки. Так что этот критерий предлагаю отбросить.

(27) Про наследование читай (18)

(28) Заведи свой конструктор, назови его Init и вызывай его при создании объекта. Будет тебе Delphi.
30 Волшебник
 
модератор
25.01.06
19:00
(28) Какой именно стандартный метод ты собрался подправить? Что-то работает неправильно?
31 Kstn12
 
25.01.06
19:02
(30) Не править а добавить. В том случае если при создании/любомдругомметоде любого дока должно выполнятся некоторое действие.
32 Asmody
 
25.01.06
19:03
(29) ну ты же понимаешь, что (18) это не совсем "то" наследование :)
33 Kstn12
 
25.01.06
19:05
Хотя без возможности создавать свои абстрактные классы от базового и уже их наследовать (множественно) (31)- много не внесет...
34 Волшебник
 
модератор
25.01.06
19:08
(32) Конечно. Именно поэтому я утверждаю, что 1С имеет ЧЕРТЫ объектно-ориентированного подхода. И если его ООП рассматривать именно как ОРИЕНТАЦИЮ, т.е. направление, стремление, то 1С 7.7/8.0 объектно-ориентирована примерно в такой же степени, как VB6, где классы тоже создаются только в конфигураторе (ихнем). А если сравнить штатные возможности 7.7 и 8.0 (без учета 1С++), то 8.0 БОЛЕЕ объектно-ориентирована, чем 7.7.

Если же ООП рассматривать как БАРЬЕР, то здесь нужно четко определить КРИТЕРИИ. И тогда ответ скорее всего будет "нет", хотя все зависит от четкости критериев. Например, если критерием будет "наличие полиморфизма", то 1С 8.0 его в каком-то смысле поддерживает (функция Печать для документов). Более четкая формулировка будет такая: "наличие полиморфизма для штатных методов объектов", тогда ответ "нет"
35 Vozhd
 
25.01.06
21:29
(26) Зачем нужно наследование, если нельзя привести тип объекта к родительскому типу?
36 Elkmor
 
25.01.06
21:42
В 1С8 есть ООП.

Только не такое, как в нормальных языках (С++, Delphi, Java, C#), вот и все.
37 Vozhd
 
25.01.06
21:51
(36) А почему именно ООП, а не компонентное программирование, например, как COM?
38 acsent
 
26.01.06
04:53
Почему при слове ОПП у большинства адынэсников возникает ассоциация НАФИК?
39 acsent
 
26.01.06
04:56
Хотелость бы услышать доводы НЕ за и против ОПП, а за и против такого метода создания классов (скорость и т.д.)
40 Elkmor
 
26.01.06
08:26
(39) Неудобно. ООП - это же для удобства. А если удобства нет, то нафик каму нада эта ООП?

(37) А какая разница как это назвать? Компоненты - частный случай ООП.
41 acsent
 
26.01.06
08:34
(40) Неудобно что?
Я например на 77 много классов использую. практически все классы stand-alone
42 Vozhd
 
26.01.06
09:37
(41) И какое здесь удобство? Если все классы stand-alone, то зачем вообще это оформлять как класы? Ведь обычные процедуры проще (как минимум для них не нужна декларация классов).
43 Парижская фанера
 
26.01.06
09:43
(42) Прикольно. 1С - язык описания слоя бизнесс-логики по сути. Если вместо бизнесс объектов использовать непонятные процедуры - это будет не код, а винигрет.
44 Vozhd
 
26.01.06
09:59
(43) Винегрет возникает не от использования процедур или объектов, а от "непонятные" (как Вы правильно отметили). Если систему тщательно проектировать, то результат будет высокого качества вне зависимости от используемого инструмента. Кстати на западе есть интересные учетные системы, которые написаны на функциональных языках, структура которых в корне отличается от ООП или стурктурного подхода, используемого в 1С.
45 acsent
 
26.01.06
10:16
Например есть какое-нибудь действие: 2 процедуры + 2 переменные, итого получаем класс.
Смотри пример ТаблицаГруппировок в (6)
46 France
 
26.01.06
10:23
куплю себе жигуль, поставлю знак мерса и буду говорить, что моя машина стремится в среду элитных автомобилей...
47 Парижская фанера
 
26.01.06
10:29
(44) ИМХО Дорогой, ресурсоемкий подход. Реальных преимуществ - ноль. Не взлетит.
48 Волшебник
 
модератор
26.01.06
10:32
(46) По сравнению с Окой и жигуль будет элитным автомобилем. Все познается в сравнении.
49 France
 
26.01.06
10:34
(48) я о ярлыках..
50 Херрес
 
26.01.06
10:42
Я считаю отсутствие ООП в 1С в классическом виде её достоинством.
Только благодаря этому программа становится проще в написании, понимании и исправлении.
Утверждение: назначение и работу абстрактной процедуры легче проследить по цепочке вызовов глобальным поиском, чем работу высокоабстрактного класса, имеющего целую толпу родителей (при множественном наследовании)
51 Херрес
 
26.01.06
10:50
А представьте теперь, какая беспорядочная система классов царила бы при такой модели разработки, когда центральная фирма не делает отраслевых решений. Более того - в одном решении просматриваются разные подходы к написанию процедурного кода. А решения партнёров вообще страдают плохим качеством кода.
И вот учи теперь - классы 1С, классы Раруса, классы Акселота и.т.п.
52 Парижская фанера
 
26.01.06
10:51
(48) Ну дак переходи с Сузики. Поддержи отечественного производителя ;)

(50) >>назначение и работу абстрактной процедуры легче проследить по цепочке вызовов глобальным поиском

Фигня. Чем работа глобальника отличается от работы статического класса-обертки?

>>работу высокоабстрактного класса, имеющего целую толпу родителей (при множественном наследовании)

Фигня. Решается нормальным проектированием и неиспользованием/отсутсвием множ. наследия (C#).

Просто в 7.7 много тупого секса из-за неразвитости методов имеющихся классов.
53 Парижская фанера
 
26.01.06
10:53
(51)
>>А представьте теперь, какая беспорядочная система классов царила бы при такой модели разработки, когда центральная фирма не делает отраслевых решений.

Центральная фирма может выпустить свою стандартную библиотеку классов. Остальные наследуются от нее.
54 Херрес
 
26.01.06
11:20
(53) Она и так выпустила стандартную библиотеку классов. От какого класса тебе хотелось бы наследоваться ?
55 Vozhd
 
26.01.06
11:21
(47) Безумно убедительная аргументация. Предлагаю эту тему закрыть, в любом случае все останутся "при своих".
56 Херрес
 
26.01.06
11:29
От ограниченности списка стандартных объектов и стандартности поведения нахожу 1С изумительно простой и понятной.
Достаточно взглянуть на любой документ УПП и его поведение ясно. Что где хранится, что откуда берётся и куда деваются. Все документы действуют одинаково !
И посмотрите на аксапту с её свободными классами. Полнейший бардак ! Какие-то формочки, из каких-то табличек берут данные в какие-то кладут... В библиотеке классов большая часть представляет из себя совсем не бизнес-объекты, а сервисные классы, сущность которую они представляют не понять без специальной подготовки
57 vasinok
 
26.01.06
15:49
(9),(45) где в ссылке (6) посмотреть пример ТаблицаГруппировок?
58 France
 
26.01.06
15:50
(57) пральный вапрос..
59 France
 
26.01.06
15:50
+58 - пример доступен только ООП разработчикам в среде V8
60 vasinok
 
26.01.06
16:05
(59) ?
Программист всегда исправляет последнюю ошибку.