Переключение на Главную Страницу Страницы: 1 ... 3 4 [5] 6 7 ... 13 ОтправитьПечать
Очень популярная тема (более 25 ответов) Полиморфизм ЗаменитьЭксзБазовогоКласса (число прочтений - 80426 )
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Полиморфизм ЗаменитьЭксзБазовогоКласса
Ответ #60 - 30. Мая 2006 :: 15:59
Печать  
Цитата:
И то, что у тебя работает Вид() без явного задания в классе - это не полиморфизм, а баг в чистом виде.

Поясню.
Я имею в виду возможность вызова метода класса наследника, находясь в контексте базового класса. Это просто недоработка Deba.

Блин, народ, мне надо свалить с работы. Через полчаса буду дома - все прочитаю. Улыбка
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Полиморфизм ЗаменитьЭксзБазовогоКласса
Ответ #61 - 30. Мая 2006 :: 16:06
Печать  
Да, пока у нас нет виртуальных функций, подобное поведение можно считать ошибочным.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Полиморфизм ЗаменитьЭксзБазовогоКласса
Ответ #62 - 30. Мая 2006 :: 16:07
Печать  
kms писал(а) 30. Мая 2006 :: 15:59:
И то, что у тебя работает Вид() без явного задания в классе - это не полиморфизм, а баг в чистом виде.


Да не вопрос, я определю Вид() в Документы_СБухИтогами, пусть он возвращает пустую строку. Но при вызове Сам(Контекст).Вид() все равно будет возвращаться "РКО". И это полиморфизм, а не баг.

Повторюсь. ЗаменитьЭксзБазовогоКласса() определен для всех КОП.
Так что отсылки на то, что у кого-то не определен какой-то метод - не принимаются.

Объясните мне, чем .ЗаменитьЭксзБазовогоКласса() отличается от других методов класса?
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Полиморфизм ЗаменитьЭксзБазовогоКласса
Ответ #63 - 30. Мая 2006 :: 16:08
Печать  
artbear писал(а) 30. Мая 2006 :: 16:06:
Да, пока у нас нет виртуальных функций, подобное поведение можно считать ошибочным.

У нас все функции - виртуальные.
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Полиморфизм ЗаменитьЭксзБазовогоКласса
Ответ #64 - 30. Мая 2006 :: 16:12
Печать  
Я устал. Ошибка/не ошибка, вирутальные/не виртуальные, ООП/не ООП...

Я привел пример, когда полиморфизм ЗаменитьЭксзБазовогоКласса() нужен и полезен.
Приведите мне пример, когда полиморфизм ЗаменитьЭксзБазовогоКласса() вреден и провоцирует на ошибки.

Все, без примера дальше говорить не буду. Со сжатыми губами
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Полиморфизм ЗаменитьЭксзБазовогоКласса
Ответ #65 - 30. Мая 2006 :: 16:17
Печать  
Обновил пример, описывающий проблему. Вид() будет работать всегда и везде, это я ступил. Заменил вызов Вид() на обращение к реквизиту Фирма.
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Полиморфизм ЗаменитьЭксзБазовогоКласса
Ответ #66 - 30. Мая 2006 :: 16:36
Печать  
Собственно, давай поставим цель.
Метод решения (заметь, полностью корректный) у тебя есть, надо только проверить его.
Дальше у нас какой вопрос - практический или теоретический?
Если практический - то чего мы хотим в итоге?
Если теоретический - то почему  Со сжатыми губами?

Возможность в базовом классе обращаться к методам и свойствам наследника - это не полиморфизм, а баг.
Посмотри определение полиморфизма и помести его на свою страницу, наконец. Улыбка

Хинт: попробуй сделать то, что ты делаешь в 1С на C++.
Только без деклараторов типа friend.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Полиморфизм ЗаменитьЭксзБазовогоКласса
Ответ #67 - 30. Мая 2006 :: 16:39
Печать  
Просто Deb'у западло было делать нормальную инкапсуляцию. Ну, сложно это, да и зачем.
Но это не значит, что это соответствует ООП.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Полиморфизм ЗаменитьЭксзБазовогоКласса
Ответ #68 - 30. Мая 2006 :: 16:43
Печать  
kms писал(а) 30. Мая 2006 :: 16:36:
у нас какой вопрос - практический или теоретический?
Если практический - то чего мы хотим в итоге?
Если теоретический - то почему  Со сжатыми губами?

Вопрос и практический и теоретический одновременно.
Практически - я хочу, чтобы работало так, как мне хочется. Без лишнего параметра.
Теоретически - если меня убедят, что это может привести к проблемам - я соглашусь на твой способ решения.
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Полиморфизм ЗаменитьЭксзБазовогоКласса
Ответ #69 - 30. Мая 2006 :: 16:49
Печать  
kms писал(а) 30. Мая 2006 :: 16:36:
Хинт: попробуй сделать то, что ты делаешь в 1С на C++.
Только без деклараторов типа friend.

На C++ не умею, я вот на питоне написал.

Код
Выбрать все
class Base:
	def PolimorphMethod(self):
		self.MethodFromTheChild()

class Child_One(Base):
	def MethodFromTheChild(self):
		print "child one"

class Child_Two(Base):
	def MethodFromTheChild(self):
		print "child two"


One = Child_One()
One.PolimorphMethod()

Two = Child_Two()
Two.PolimorphMethod()
 



печатает

Цитата:
M:\fedor config\temp>test.py
child one
child two
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Полиморфизм ЗаменитьЭксзБазовогоКласса
Ответ #70 - 30. Мая 2006 :: 16:49
Печать  
Этта. Я тоже чуток подустал. Ну как еще тебе доказать. Пойду, что ли полистаю Гради Буча.
Но серьезно, ты попробуй на C++ твои конструкции схематично реализовать - не получится.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Полиморфизм ЗаменитьЭксзБазовогоКласса
Ответ #71 - 30. Мая 2006 :: 16:51
Печать  
Цитата:
На C++ не умею, я вот на питоне написал.

ОК, щас сам напишу.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Полиморфизм ЗаменитьЭксзБазовогоКласса
Ответ #72 - 30. Мая 2006 :: 16:53
Печать  
Кусочек доки для питона:
Цитата:
(For C++ programmers: all methods in Python are effectively virtual.)
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Полиморфизм ЗаменитьЭксзБазовогоКласса
Ответ #73 - 30. Мая 2006 :: 16:55
Печать  
kms писал(а) 30. Мая 2006 :: 16:49:
Но серьезно, ты попробуй на C++ твои конструкции схематично реализовать - не получится.

А что, у нас С++ - это эталон ООП?

Цитата:
Пойду, что ли полистаю Гради Буча.

Давно пора. Ты еще вчера говорил, что ты "не в теме".
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Полиморфизм ЗаменитьЭксзБазовогоКласса
Ответ #74 - 30. Мая 2006 :: 16:58
Печать  
fez писал(а) 30. Мая 2006 :: 16:55:
Ты еще вчера говорил, что ты "не в теме".

Вчера я просто уже бутыль мартини выпил, как ты нарисовался.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 3 4 [5] 6 7 ... 13
ОтправитьПечать