|
OFF: Полиморфизм, инкапсуляция, наследование | ☑ | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
0
nikitka55
11.06.12
✎
13:45
|
Делфи как известно объектно ориентированные программирование, а 1С какое?
на другом форуме написали что это предметно-ориентированный язык, согласны ли Вы с этим? |
||||||||||
34
sergey yevsenya
11.06.12
✎
16:36
|
новая партия студентов выпустилась
КГ/АМ |
||||||||||
35
ChAlex
11.06.12
✎
18:38
|
(0) Оба-на, а с каких это пор 1С стала языком программирования? Ну тогда можно заодно проголосовать и к AMP-проигрываетелю
|
||||||||||
36
izekia
11.06.12
✎
18:52
|
(0) и всем ответившим про предметно-ориентированное:
вы реально считаете, что все эти костыли придуманные 1С - это способ облегчить программирование? Я имею в виду дерево метаданных, чем по сути регистры сведений отличаются от справочников, неужели для того чтобы соорудить некое подобие никому не нужной параметризации в 1С нужен был костыль типа ПВХ? я уже не опускаюсь до регистров расчетов и регистров бухгалтерии |
||||||||||
37
rphosts
11.06.12
✎
18:53
|
Безусловно предметно-ориентированная платформа 1С, нацеленая на решение учётных задач разного плана.
Предметно-ориентированное |
||||||||||
38
rphosts
11.06.12
✎
18:54
|
(36) для тех кто в танке: это сделано для того что-бы разработчик уделял больше внимания бизнес-логике а не кодированию.
|
||||||||||
39
izekia
11.06.12
✎
18:57
|
(38) тем кто в танке следовало бы перечитать и попытаться осмыслить то что я написал
ПВХ новый где-то в своих решениях использовал? |
||||||||||
40
rphosts
11.06.12
✎
19:00
|
(39) ПВХ - конечно, есть краска и её всего 100 кг по бухии и есть спецодежда сапоги которых 30 пар, а для снабженцев то-же самое но краска жёлтая 50 кг, краска зелёная 10 кг и т.п., сапоги 40размер 3 пары и т.д.
|
||||||||||
41
izekia
11.06.12
✎
19:04
|
(40) лол, ну ка расскажи как ты используя пвх это реализовал?
|
||||||||||
42
ErrorEd88
11.06.12
✎
19:08
|
|||||||||||
43
rphosts
11.06.12
✎
19:12
|
(41) может ещё всю базу вугрузить? ПВХ для того и нужен что-бы можно было разным элементам объекта (апример элементам справочника) назначать разные наборы свойств. Разве нет?
|
||||||||||
44
DGorgoN
11.06.12
✎
19:12
|
Дотянем 1000 постов: 1С не язык программирования!
КГ/АМ |
||||||||||
45
rphosts
11.06.12
✎
19:15
|
(44) ага, это больше среда разработки с частичной поддержкой WYSIWYG
|
||||||||||
46
IamAlexy
11.06.12
✎
19:24
|
ООП в 1С ненужно!
|
||||||||||
47
rphosts
11.06.12
✎
19:30
|
(46) угу и без этого *омно-кода хватает!
|
||||||||||
48
experimentator76
11.06.12
✎
19:36
|
(47) можно было бы в зависимости от уровня разработчика открывать
новые объекты метаданных для работы ) на 12-м уровне позволяется работать с ООП, создавать свои объекты конфы и т.п. |
||||||||||
49
IamAlexy
11.06.12
✎
19:37
|
не поверю что ООП нужно пока не будет приведен практический пример задачи, которая с ООП решается а без ООП не решается.
|
||||||||||
50
izekia
11.06.12
✎
19:47
|
(43) чем регистр "свойства объектов" реализованный через пвх, отличается от регистра реализованного через перечисление или справочник?
тем что пользователь может добавить дополнительную категорию? так это скорее зло, чем добро |
||||||||||
51
izekia
11.06.12
✎
19:53
|
(49) даже на асме можно изобразить подобие ООП
но: это будет раза в три больше кода, плюс минимум наглядности |
||||||||||
52
izekia
11.06.12
✎
19:55
|
(49) если хочешь можешь изобразить подобие старого баяна типа "Нужно ли ООП в 1С", и я с удовольствием поучаствую и приведу живые примеры где это просто необходимо
|
||||||||||
53
DGorgoN
11.06.12
✎
19:55
|
(52) Я жду
|
||||||||||
54
rphosts
11.06.12
✎
20:02
|
(50) нашим юзерам это нравится, мы на это не отвлекаемся - это благо!
|
||||||||||
55
rphosts
11.06.12
✎
20:04
|
(51) можно и на асме, но куча сил уйдет на интерфей, структуры хранения данных и т.п. но оно нам надо?
(52)я-б посмотрел... |
||||||||||
56
DGorgoN
11.06.12
✎
20:05
|
(52) Ну!!!
|
||||||||||
57
NcSteel
11.06.12
✎
20:08
|
(56) Что ну? Балобол он.
|
||||||||||
58
IamAlexy
11.06.12
✎
20:11
|
хм.. пока нет ни одного примера.
вывод: ООП ненужен. что и требовалось доказать.. |
||||||||||
59
rphosts
11.06.12
✎
20:13
|
(58) ну в итоге все эти ООП транслируются в исполняемый код, который можно и на асме нарисовать, но как было ранее сказано не так наглядно.
Для учётных задач 1С впоне сбалансированная система, не без вопросов к ней но сбалансированная. |
||||||||||
60
DGorgoN
11.06.12
✎
20:16
|
(59) Да норм ваще - не нравилось бы пошел куда либо в другое =)
|
||||||||||
61
izekia
11.06.12
✎
21:01
|
(58)(59)(60) гундосы, сегодня не смогу, если только после футбола
как пример - юнит-тестирование, нереализуемо |
||||||||||
62
izekia
11.06.12
✎
21:11
|
я не про пример ооп, а про нерабочие структуры от 1С
примеров ооп может быть много, тупо мне нужно заполнить общие реквизиты: каким костылем мне нужно пользоваться? |
||||||||||
63
izekia
11.06.12
✎
21:11
|
и мне нужно каждый раз помнить про этот костыль, когда я добавляю новый "класс"
|
||||||||||
64
Jolly Roger
11.06.12
✎
22:47
|
(58) ага. а тараканы слышат ногами...
|
||||||||||
65
Лефмихалыч
11.06.12
✎
23:37
|
(62), (63) подписька есть, чтобы не помнить
|
||||||||||
66
experimentator76
11.06.12
✎
23:41
|
дада и там флажочег на Документы чтобы не помнить что его туда надо добавить)
|
||||||||||
67
mikeA
11.06.12
✎
23:53
|
(58) если так рассуждать, нет ни одной задачи, которая решается на 1С, но не решается, на С++, хотя бы потому, что 1С написана на С++. и какой отсюда следует вывод?
КГ/АМ |
||||||||||
68
IamAlexy
11.06.12
✎
23:57
|
(67) нет.
речь не об этом. речь о том что есть песочница. в ней копаются дети с совочками и лопаточками иногда в нее ссут кошки иногда там играют в машинки каждую весну привозят новый песочек.. иногда меняется мода и розовые лопатки меняются на зеленые а тут приходит взрослый дядя и пытается всех убедить что детские совочки это все фуфло и в песочнице позарез нужен карьерный экскаватор... от сюда вопрос к взрослому дядечке: пусь он хотя бы приведет пример хотя бы одной задачи которые решаются в этой самой песочнице которые с помощью лопатки и ведерка решить нельзя а вот с помощью карьерного эксковатора можно.. |
||||||||||
69
ХочуСказать
11.06.12
✎
23:58
|
опять?
как же надоела школота КГ/АМ |
||||||||||
70
gr0ck
12.06.12
✎
00:54
|
Это риторический вопрос, ответ должен быть тоже риторическим
|
||||||||||
71
izekia
12.06.12
✎
02:41
|
(66) на все документы? мне надо только на наследуемые
|
||||||||||
72
rphosts
12.06.12
✎
05:14
|
(71) офигенная задача которая только под силу ООП!
Делаешь заготовку документа со всем кодом в т.ч. заполнение значений, а все требуемые документы делаешь копированием этого шаблоа с последующим переименованием и дописыванием функционала... в шаблон ваставить комент что сделано на основе такого-то шаблона. Но это не совсем верный подход, правиьтный в 1С будет такой: вызов из этого шаблона 1 метода общего модуля, который делает всё что требуется. Офигенный пример! Я просто валяюсь. Дайте примеров ищё! |
||||||||||
73
МастерВопросов
12.06.12
✎
06:32
|
1С строго соответствует определению:
wiki:Предметно-ориентированный_язык_программирования Предметно-ориентированное |
||||||||||
74
МастерВопросов
12.06.12
✎
06:44
|
(1) еще бы кто-нибудь объяснил 1С никам что это такое.
Инкапсуляция, наверное, есть - мы же можем через точку от внешней компоненты писать скрипты на других языках. |
||||||||||
75
Рэйв
12.06.12
✎
07:23
|
(74) А причем тут инкапсуляция?
|
||||||||||
76
skunk
12.06.12
✎
07:26
|
(75)есть объект документ ... а есть объект документ.приходнаянакладаная ... который наследует все свойства объекта документ ... неа?
КГ/АМ |
||||||||||
77
Рэйв
12.06.12
✎
07:28
|
(76)Неа..Это наследование:-)
В чистом виде инкапсуляции в 1С нет. Самый простой пример - получение/установка публичными методами приватных переменных класса. Ну еще много ньюансов разных привести наверное можно. |
||||||||||
78
skunk
12.06.12
✎
08:45
|
у ссылочных объектов есть реквизит ГУИД ... который от пользователя скрыт ... его значение и установку осуществляет через специальный процедуры объекта
|
||||||||||
79
Рэйв
12.06.12
✎
08:51
|
(78)Ну да. Это оно и есть. Только это все предопределенные платформой вещи . Самому такую схему организовать вряд ли удастся.
|
||||||||||
80
SnarkHunter
12.06.12
✎
08:55
|
Любители ч0тких определений вызывают идиосинкразию своим редкостным занудством...
КГ/АМ |
||||||||||
81
Gobseck
12.06.12
✎
09:18
|
Очень простой язык программирования был одним из преимущств 1С 7.7. В первом приближении этот язык можно было освоить за 1 месяц. Просто почитать руководство и покопаться в типовых конфигурациях. Простой язык программирования 7.7 оставлял время на изучение предметной области.
Когда я увидел 1С 8, то был поначалу огорчен и разочарован. Этот инструмент гораздо сложнее и за 1 месяц его освоить нереально. Постепенно более или менее разобрался и успокоился. Поклонникам ООП могу посоветовать пользоваться другими средствами разработки. Благо их предостаточно. Предметно-ориентированное |
||||||||||
82
Рэйв
12.06.12
✎
09:33
|
(81)+1 И то верно. С чего вдруг не объектно ориентированный язык не считается кошерным? чистый асм - вообще спокойно живет без объектной модели и никто не посмеет его назвать ущербным. ООП - это просто один из прикладных стилей.Не стоит делать из него икону.
|
||||||||||
83
Рэйв
12.06.12
✎
09:38
|
+(82)Другое дело что программер должен все таки знать основы ООП, т.к. это напрямую влияет на качество кода.
|
||||||||||
84
quest
12.06.12
✎
09:47
|
Задолбало.
Глупая тема. КГ/АМ |
||||||||||
85
Рэйв
12.06.12
✎
09:49
|
(84):-) Еще не и не два увидим. Эта тема - вечная как птица Феникс!:-)
|
||||||||||
86
Рэйв
12.06.12
✎
09:50
|
*не раз
|
||||||||||
87
quest
12.06.12
✎
10:16
|
да лучше бы про использование goto спросили. Срача было бы больше. Или про декларативное программирование в 1С. Тоже было бы над чем поржать...
А так баян. уже даже не прикольный |
||||||||||
88
skunk
12.06.12
✎
11:15
|
гоуту уже направо и лево распилили давно ...
|
||||||||||
89
cViper
12.06.12
✎
11:25
|
(1) Инкапсуляция есть, а вот полиморфизма с наследованием нет.
|
||||||||||
90
Рэйв
12.06.12
✎
12:08
|
(89)Пример в студию.
|
||||||||||
91
Рэйв
12.06.12
✎
12:09
|
(89)+ А в связи с не жесткой типизацией переменных полиморфизм реализован самой платформой.
|
||||||||||
92
МастерВопросов
12.06.12
✎
12:13
|
(75) ну типа методами ВК мы можем пользоваться, а редктировать саму DLL-ку нет.
|
||||||||||
93
Рэйв
12.06.12
✎
12:14
|
(92)о как повернул! :))
|
||||||||||
94
МастерВопросов
12.06.12
✎
12:19
|
(93) или тема с DLL не имеет отношения к ООП?
//как оно там в настоящих языках программирования, расскажите хоть. |
||||||||||
95
quest
12.06.12
✎
12:56
|
(94) да почитал бы что ли букварь, а?
|
||||||||||
96
Web00001
12.06.12
✎
13:23
|
годный, качественный вброс, вызывает бурление СамиЗнаетеЧего, в то время как 1С как была самым популярным продуктом на рынке последние лет 10 так и остается, на фоне криков "недоязык" и тд, собака лает караван идет. А на тему "как мне сделать так что б заполнялся реквизит у конкретно взятых наследуемых документов" тут я согласен в одном случае из тысячи пдатформа может быть неудобна, так вы не забивайте гвозди отверткой и надобности утяжелять отвертку не появится. Регистры сведений, ПВХ и иже с ним дают +100500 к разработке задач на тему автоматизации бизнеса. Так что (52) все замерли в ожидании.
|
||||||||||
97
rphosts
12.06.12
✎
13:33
|
(96) он не в первой ветке машет руками... недождёшься!
|
||||||||||
98
cViper
12.06.12
✎
13:43
|
(91) Какое это имеет отношение к программированию на встроенном языке 1с?
(90) Пример: самописный документ (обработка) с реализованными экспортными и не экспортными функциями. Экспортные функции определят интерфейс, который смогут использовать другие разработчики. Что внутри функций никого не волнует. Есть корректно работающий интерфейс, вызывай метода на здоровье. Предметно-ориентированное |
||||||||||
99
Рэйв
12.06.12
✎
13:48
|
(98) >>Какое это имеет отношение к программированию на встроенном языке 1с?
Такое, что повезло пользоваться всеми прелестями полиморфизма, не реализовывая его вручную:-) ... Ну да. В таком ключе похоже на инкапсуляцию:-) |
||||||||||
100
Нуф-Нуф
12.06.12
✎
13:48
|
сотыганах
|
||||||||||
101
bizon2008
12.06.12
✎
13:49
|
Это фреймворк.
|
||||||||||
102
xenos
12.06.12
✎
13:58
|
Наследование:
1-го уровня Есть класс справочников, документов. У них есть подклассы конкретные виды документы. Для них можно создать общие реквизиты, и есть общие методы типа "Записать". 2. Инкапсуляция: экспортные процедуры функции. 3. Полиморфизм(как я его понимаю): Подписка на события. |
||||||||||
103
Рэйв
12.06.12
✎
14:06
|
(102) 3 - неверно.
Примерно так: ... А=Сложить(2,5); Б=Сложитть("2","5"); ... Функция Сложить(П1,П2) Вохврат П1+П2; КонецФункции //---------- На сях например пришлось бы перегружать функцию Сложить() под каждый тип параметров |
||||||||||
104
xenos
12.06.12
✎
14:12
|
(103) Твой пример можно наверное на любом языке сделать. Полиморфизм он вроде как скорее к объектам относится.
|
||||||||||
105
Рэйв
12.06.12
✎
14:17
|
(104)Не на любом. На бейсике например не получится:-)..
А на тех которые поддерживают на каждую пару типов придется продублировать реализацию. Это в 1С красота- один раз написал и успокоился:-) |
||||||||||
106
Рэйв
12.06.12
✎
14:17
|
(104) Полиморфизм как раз к функциям относится.
Разные типы парамтров при одноименном вызове. |
||||||||||
107
Рэйв
12.06.12
✎
14:18
|
хотя нет..На бейсике тоже можно будет:-)
|
||||||||||
108
Рэйв
12.06.12
✎
14:18
|
+ и количество параметров тоже может быть разным.
|
||||||||||
109
xenos
12.06.12
✎
15:03
|
(108) Что то я совсем плохо понимаю, что такое полиморфизм.
|
||||||||||
110
Рэйв
12.06.12
✎
15:10
|
(109)В типизированных языках праметрам функции непрменно придется указывать ожидаемый тип.
То есть при А=Сложить(2,5); функция Сложить() определялась бы как int Сложить(int a,int b) { return a+b; } Если бы ты попробовал Б=("2","5") оно бы тебя послало, пот ому что ожидаются числа. И тогда тебе пришлось бы для сложения тебе писать функции СложитьЧисла() СложитьСтроки() А если учесть что типов чисел тоже приличная кучка(float,doble и т.д) то для их сложения тебе тоже пришлось бы называть функцию уникальным именем. Поэтому придумали паерегрузку функций. Ты пишешь столько вариантов функции сложить сколько вариантов сложения имеешь, а потом просто пишешь Б=Сложить("2","5"); и компилятор сам найдет подходящую реализацию с правильными параметрами. Это и называется полиморфизм. |
||||||||||
111
Рэйв
12.06.12
✎
15:11
|
Если бы ты попробовал
Б=("2","5") = Если бы ты попробовал Б=Сложить("2","5") |
||||||||||
112
xenos
12.06.12
✎
15:15
|
(110) А блин, я привык что в 1С можно без этого.
|
||||||||||
113
Рэйв
12.06.12
✎
15:17
|
(112)Вот я и говорю, что в 1С мы имеем все прелести полиморфизма без ручной реализации:-)
|
||||||||||
114
Loyt
12.06.12
✎
15:17
|
(110) Вот, кстати, всегда интересовал практический смысл таких перегрузок. В языках с не жёсткими типами. Как пример для изучения ООП - нормально, а кроме?
|
||||||||||
115
Loyt
12.06.12
✎
15:18
|
(113) Вопрос запоздал. :)
|
||||||||||
116
Loyt
12.06.12
✎
15:25
|
(113) Ну и, кстати, ручная реализация-таки требуется. Просто не переопределением функции.
|
||||||||||
117
Рэйв
12.06.12
✎
15:32
|
(116) Мне кажется что внутри на каждая наша функция на встроенном языке при компиляции кода перегружается под все возможные в системе типы:-)
ВСе таки платформа то на плюсах написана. |
||||||||||
118
Loyt
12.06.12
✎
15:46
|
(117) С точки зрения программиста это уже не имеет никакого значения.
|
||||||||||
119
qwerty09
12.06.12
✎
15:53
|
(17) валяюсь xD
|
||||||||||
120
quest
12.06.12
✎
16:58
|
(114) смысл перегрузки сделать поведение зависящее от типа аргумента.
К примеру если бы 1С могла бы делать определение типов и вызывать функцию с соовтетствующей сигнатурой тебе не пришлось бы в коде писать Если ТипЗнч(Параметр) = тип("тут тип") тогда... А просто определелил бы функцию которая перегружает интерфейсную функцию реализацией понимающей нужный тип. к пример тот же сложить для массивов мог бы выглядеть так Сложить(а как Массив, б как Масив) - и внутри уже работаешь гарантированно с массивами. (113) полиморфизма в 1С нет. Есть общий тип, от которого наследуются конкретные типы - число, строка, дата, справочникссылка и т.д. Все что ты имеешь - это неявное преобразование от одного типа к другому. И на этом все. Если тебе требуется полиморфизм то реализовываешь его сам. Ручками. Через if. |
||||||||||
121
veressk
12.06.12
✎
17:00
|
ное.
КГ/АМ |
||||||||||
122
quest
12.06.12
✎
17:00
|
(117) тебе не правильно кажется. Для каждого набора типов не происходит перегрузки написаной тобой функции. Происходит вызов перегруженных функций входящих в класс отвечающий за хранение переменной.
|
||||||||||
123
Loyt
12.06.12
✎
17:03
|
(120) Не, это понятно, но писанины-то остаётся столько же, если не больше. Разве что всё принадлежащее конкретному классу запихивается в этот конкретный класс, а не где-то в общих модулях валяется.
|
||||||||||
124
qwerty09
12.06.12
✎
17:21
|
(110) Садись два!
То что расписал это и близко не перегрузка методов - это просто методы с различными сигнатурами, перегрузка это когда метод, дочернего класса наследует метод родительского класса, при этом изменяя его функционал. И какой из методов вызвать компилятор не решает, это зависит от того с какого объекта ты его вызываешь. |
||||||||||
125
Steel_Wheel
12.06.12
✎
17:55
|
(124) >> перегрузка это когда метод, дочернего класса наследует метод родительского класса, при этом изменяя его функционал.
Садись, 2. Не путай oveкload (перегрузку) с override (то, что ты написал) |
||||||||||
126
andrewks
12.06.12
✎
18:24
|
то, что описано в (110), имеет место быть, за поправкой:
1. это (перегрузка функций, function overloading) одно из проявлений полиморфизма, наряду с перегрузкой методов (method overloading) и переопределением методов (method overriding). 2. подходящую реализацию перегруженных функций определяет компилятор и статически линкует, в случае же с перегруженными методами это определяется динамически прямо в рантайме так что никто не двоечник, никто не отличник |
||||||||||
127
cViper
13.06.12
✎
10:03
|
(110) Нет. Ты не прав.
Приведу элементарный пример полиморфизма: Родитель: public abstract class Animal { public abstract void Say(); } Дети: public class Dog extends Animal{ @Override public void Say() { System.out.println("Gav-Gav"); } } public class Cat extends Animal{ @Override public void Say() { System.out.println("Meow-meow"); } } Программа: public class Animals { public static void main(String [] args){ List<Animal> animalList = new LinkedList<Animal>(); animalList.add(new Cat()); animalList.add(new Dog()); for (Animal animal : animalList) { animal.Say(); } } } Помещает в коллекцию с типом родителя разных детей и потом вызывает родительский метод у объектов коллекции. Происходит позднее связывание и вызываются методы конкретных классов, а не родителя. Поли - много, морф - форма. полиморфизм - способность принимать много форм. Вывод данных в консоли: Meow-meow Gav-Gav |
||||||||||
128
izekia
13.06.12
✎
12:32
|
(72) просили пример наглядный, я его написал
проблема в том, что в зависимости от типа документа в конечном итоге тебе придется помнить обо всех этих общих методах и тп, далее если у тебя будет несколько уровней, то для каждого придется писать расширенный метод инициализации, и соответственно помнить об этом все остальные примеры они более более специализированы суть в том, что мне нужно держать в голове кучу вещей, которая по сути мне не нужна, если бы в 1С был реализован ооп |
||||||||||
129
izekia
13.06.12
✎
12:57
|
(127) полиморфизм не обязательно может быть выражен через наследование, так же можно использовать параметризацию, о чем и шла речь в (110) правда немного не в таком виде, а что-то вроде описания функции:
takeElem :: Int -> [a] -> a и соответственно реализация: takeElem :: Int -> [Int] -> Int takeElem :: Int -> [Char] -> Char |
||||||||||
130
godmod80
13.06.12
✎
15:01
|
(0) 1c программа на ООПе, свои произвольные классы нельзя создавать, только для задач и проблем учета в табличках, но в части языка имеет признаки ООП
Предметно-ориентированное |
||||||||||
131
Тактик
13.06.12
✎
15:32
|
А что есть сомнения? 1С разве годится на что нибудь кроме автоматизации учета?
Предметно-ориентированное |
||||||||||
132
CaptanG
13.06.12
✎
16:06
|
(0)Было уже
КГ/АМ |
||||||||||
133
izekia
13.06.12
✎
16:12
|
(102)
3 - мимо 1 - наследование, сложно таковым назвать, так как наследуется поведение объекта, которое нельзя переопределить и определенный интерфейс с уже реализованными заглушками мы не можем ни расширить ни переопределить заданное поведение 2 - инкапсулировать мы можем только поведение объекта, но не его состояние, соответственно это тоже не работает можно конечно вспомнить про неэкспортные переменные модуля, но так как в 1С объекты как правило хранятся в бд, а именно их мы не можем сделать скрытыми |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |