Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) обращение из одного суперкласса к методам другого (число прочтений - 15544 )
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
обращение из одного суперкласса к методам другого
01. Июня 2006 :: 10:56
Печать  
Считаете ли вы корректным обращение из одного суперкласса к методам и свойствам другого, связанного с первым только общим подклассом. (с) kms.
  
Наверх
www  
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: обращение из одного суперкласса к методам друг
Ответ #1 - 01. Июня 2006 :: 10:58
Печать  
Нет. Такого быть не должно. И такого нет.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: обращение из одного суперкласса к методам друг
Ответ #2 - 01. Июня 2006 :: 11:00
Печать  
Странно. Г..но есть, а слова такого нет.  Улыбка
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: обращение из одного суперкласса к методам друг
Ответ #3 - 01. Июня 2006 :: 11:02
Печать  
Пример приведи.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: обращение из одного суперкласса к методам друг
Ответ #4 - 01. Июня 2006 :: 11:13
Печать  
Тебе обязательно работающий тест? Тогда вечером.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: обращение из одного суперкласса к методам друг
Ответ #5 - 01. Июня 2006 :: 11:15
Печать  
sedmin писал(а) 01. Июня 2006 :: 11:13:
Тебе обязательно работающий тест? Тогда вечером.

Зачем, хотя бы вкратце опиши, схематично.
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: обращение из одного суперкласса к методам друг
Ответ #6 - 01. Июня 2006 :: 11:20
Печать  
orefkov писал(а) 01. Июня 2006 :: 11:02:
Пример приведи.


defcls
Код
Выбрать все
class Документ_РКО = __Документ_РКО@MD : Документ.РКО, Документы_СБухИтогами
{};
class Документы_СБухИтогами = __Документы_СБухИтогами@MD
{};
 



__Документ_РКО@MD
Код
Выбрать все
Функция Сам(Конт)
    Возврат Конт;
КонецФункции 



__Документы_СБухИтогами@MD
Код
Выбрать все
Функция Сам(Конт)
    Возврат Конт;
КонецФункции

Процедура ПроверкаСвязи() Экспорт
    Сообщить(Сам(Контекст).Вид());
КонецПроцедуры 



код клиента
Код
Выбрать все
РКО = СоздатьОбъект("Документ_РКО");
РКО.ПроверкаСвязи();
 



kms имел в виду именно это.
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: обращение из одного суперкласса к методам друг
Ответ #7 - 01. Июня 2006 :: 11:23
Печать  
Что непонятного. Эти примеры - везде.

класс А
{
   ТестА(){ ТестБ(); };
{

Класс Б
{
   ТестБ(){ Сообщить("ТестБ"); };
}

Класс Н : А, Б
{
}

Н.А();
Н.Б();

Что будет, угадаешь?
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: обращение из одного суперкласса к методам друг
Ответ #8 - 01. Июня 2006 :: 11:26
Печать  
В примере feza еще и "полиморфизм" без объявления интерфейса.
Пойло на любителя, по мне - так хреновое.
  

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


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: обращение из одного суперкласса к методам друг
Ответ #9 - 01. Июня 2006 :: 11:27
Печать  
Так все просто. Или ты считаешь, что такой код не будет работать?

Класс БазовыйКласс1
{}

Процедура Метод1() Экспорт
  Сообщить("БазовыйКласс1");
КонецПроцедуры

Класс БазовыйКласс2
{}

Процедура Метод2() Экспорт
  Сам().Метод1();
КонецПроцедуры

Класс КлассНаследник: БазовыйКласс1, БазовыйКласс2
{}

---------------------
о=СоздатьОбъект("КлассНаследник");
о.Метод2();
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: обращение из одного суперкласса к методам друг
Ответ #10 - 01. Июня 2006 :: 11:32
Печать  
Считаю, что будет. А вы не находите это неправильным?
  

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


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: обращение из одного суперкласса к методам друг
Ответ #11 - 01. Июня 2006 :: 11:34
Печать  
"А более вы оттого, что строем не ходите, и мороженное в курилке едите" (с) наш заполит. Улыбка
Это все господа оттого, что при вызове методов базовых классов, вы ленитесь сделать
Код
Выбрать все
База=Сам(Контекст).ПолучитьБазовыйКласс("НужныйКласс");
База.БазовыйМетод();
 


а делаете
Код
Выбрать все
Сам(Контекст).БазовыйМетод();
 



Следует помнить, что в реализации 1С++ "Сам(Контекст).БазовыйМетод();"
означает "Попробуй отыщи в конечном классе первый метод с именем БазовыйМетод и вызови его".
Трудно сделать что-либо лучшее в скриптовом языке без типизации, кроме как "duck interface".
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: обращение из одного суперкласса к методам друг
Ответ #12 - 01. Июня 2006 :: 11:38
Печать  
orefkov писал(а) 01. Июня 2006 :: 11:34:
Код
Выбрать все
База=Сам(Контекст).ПолучитьБазовыйКласс("НужныйКласс");
База.БазовыйМетод();
 


Ну тогда и отвалится вся полиморфность и виртуальность в базовом классе, в том числе и к нормальному наследнику.
Оно нам надо?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: обращение из одного суперкласса к методам друг
Ответ #13 - 01. Июня 2006 :: 11:38
Печать  
Проблемы 2:
1. Проблема реализации, которая по умолчанию позволяет это делать.
2. Проблема квалификации кадров, котроые пользуются такой реализацией и пребывают в счастливом неведении.
  

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


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: обращение из одного суперкласса к методам друг
Ответ #14 - 01. Июня 2006 :: 11:40
Печать  
Вопрос только kms.
Почему у тебя возникла эта тема в ответ на мой пример в ветке про ЗаменитьЭкземпляр?
В том примере как раз такого поведения не было.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать