Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Метод предка можно вызывать без Сам()... (число прочтений - 3138 )
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Метод предка можно вызывать без Сам()...
28. Декабря 2007 :: 14:59
Печать  
...если делать это через Шаблон.

Классы определены вот так:

Код
Выбрать все
class ПредокПользователяШаблона = ПредокПользователяШаблона.txt
{};
class ПользовательШаблона = ПользовательШаблона.txt : ПредокПользователяШаблона
{};
 



ПредокПользователяШаблона.txt
Код
Выбрать все
Функция Проверка() Экспорт
	Возврат 0;
КонецФункции
 



ПользовательШаблона.txt
Код
Выбрать все
Функция Сам(Конт)
	Возврат Конт;
КонецФункции

Функция ШаблонССам() Экспорт
	Возврат Шаблон("[Сам(Контекст).Проверка()]");
КонецФункции

Функция ШаблонБезСам() Экспорт
	Возврат Шаблон("[Проверка()]");
КонецФункции 



Код теста
Код
Выбрать все
Процедура Тест_ПользовательШаблона() Экспорт
	Пользователь = СоздатьОбъект("ПользовательШаблона");
	Сам().ПроверитьРавенство(Пользователь.ШаблонССам(), "0");
	Сам().ПроверитьРавенство(Пользователь.ШаблонБезСам(), "0");
КонецПроцедуры 



Тест проходит.
  
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Метод предка можно вызывать без Сам()...
Ответ #1 - 08. Января 2008 :: 17:01
Печать  
В качестве прикола годится.  Очень довольный

Жаль только вместо Сам() придется теперь Шаблон() писать.  Улыбка А еще у шаблона с исключениями не густо... Подмигивание
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Метод предка можно вызывать без Сам()...
Ответ #2 - 10. Января 2008 :: 08:35
Печать  
Да, только для прикола.
Еще, насколько я помню, из Шаблон-а нельзя сообщение на экран вывести (Сообщить/Предупреждение).
Наверняка еще есть ограничения Улыбка
  

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


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Метод предка можно вызывать без Сам()...
Ответ #3 - 11. Января 2008 :: 06:51
Печать  
Ну, вот у меня работает такой код:

//      Класс Статусы = "статусы.ert" : Коллекция
//      {
//            Новый() : Коллекция("Купленный", "К", "Принятый", "П", "Хранение", "Х");
//      }

Перем КодКИмени;
//#if !_getclass
// Заголовки методов базового класса, для синтакс-контроля.
// В режиме Предприятия удаляются препроцессором.
Процедура ВНачало()                  КонецПроцедуры      // ВНачало
Процедура КСледующей(а, б)      КонецПроцедуры      // КСледующей
Функция Выбрана()                  КонецФункции      // Выбрана
Функция ВСписокЗначений()      КонецФункции      // ВСписокЗначений
//#endif

Процедура Новый()
     КодКИмени = Новый.Коллекция();
     Имя = ""; Зн = "";
     ВНачало();
     Пока Выбрана() = 1 Цикл
           КСледующей(Имя, Зн);
           КодКИмени.Установить(Зн, Имя);            
     КонецЦикла;
КонецПроцедуры      // Новый

Функция НазваниеПоСтатусу(стрКод) Экспорт
     Зн = "";
     КодКИмени.Найти(стрКод, Зн);
     Возврат Зн;
КонецФункции      // НазваниеПоСтатусу

Процедура ЗаполнитьСписок(сзВыбор) Экспорт
     ВСписокЗначений().Выгрузить(сзВыбор);
КонецПроцедуры      // ЗаполнитьСписок

только это не 1С++.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Метод предка можно вызывать без Сам()...
Ответ #4 - 11. Января 2008 :: 06:56
Печать  
Саш, а поподробнее инфу можно, а ? Улыбка
Что это? Для чего и как юзается и т.д.?
Мне очень интересны новые фичи в ООП Улыбка

ЗЫ ну и поделиться также хотелось бы Улыбка
  

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: Метод предка можно вызывать без Сам()...
Ответ #5 - 11. Января 2008 :: 07:28
Печать  
Я так понимаю, что это использование возможности вызывать методы родителей без Сам(), которую Саша реализовал еще во времена чуть ли не 1.8, но deb тогда отказался включать этот код.
  
Наверх
www  
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Метод предка можно вызывать без Сам()...
Ответ #6 - 11. Января 2008 :: 07:28
Печать  
Ну, в ноябре приобрел себе коммуникатор, и потому на пару месяцев выпал из обычной жизни Улыбка
Ковырялся с новой игрушкой Улыбка
Но вроде как теперь попустило, и я снова возвращаюсь в строй.

Это - 1Class.dll, пока только концепт моей реализации ООП (но уже кое-что умеющий).
От 1С++ отличается тем, что в нем только ООП и ничего более.
С нуля написан препроцессор, парсер заголовков классов, движок КОПов.
Да вобщем-то, все написано с нуля, просто часть идей взята от 1С++, часть мои задумки.
Отличия от ООП в 1С++ есть.
Несколько другой синтаксис заголовков, создания и функционирования КОПов.
Прямое обращение к методам/свойствам базовых классов.
Защищеные методы/свойства.
Виртуальное наследование.
И главное отличие - это вообще не ВК, грузится при самом старте 1С, до запуска ГМ, что позволило расширять набор методов/свойств глобального контекста.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать