Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) А как же наследование? (число прочтений - 8151 )
freagle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 87
Зарегистрирован: 21. Июня 2006
А как же наследование?
15. Сентября 2007 :: 17:33
Печать  
Есть базовый класс, назовем его Класс №1. Есть его потомок - Класс №2.
Есть еще один класс - рабочий, класс №3.
В классе №3 есть метод, параметр которого имеет тип -  класс №1. Я передаю туда не класс №1, а его потомка - класс №2.

Включаем проверку типов.

По общим принципам ООП потомок совместим по типу с родителем, и может быть использован вместо него. Но здесь - не судьба. Получаю ошибку проверки типа.

Выдает: В методе не совпадают типы в параметре... ожидался Класс №1, получен ...

Скажите, это баг, фича, или у меня руки не оттуда растут?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: А как же наследование?
Ответ #1 - 18. Сентября 2007 :: 07:19
Печать  
Это баг Печаль
Проверка типов в 1С++ сильно отстала от остального функционала 1С++ Печаль
  

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


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: А как же наследование?
Ответ #2 - 18. Сентября 2007 :: 10:00
Печать  
Как баг? Я помню, этот вопрос обсуждался.
И тогда утверждалось, что при проверке параметров у нас все пучком.

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


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: А как же наследование?
Ответ #3 - 18. Сентября 2007 :: 10:33
Печать  
sedmin
Нет, не склероз. deb утверждал, что работает.
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: А как же наследование?
Ответ #4 - 18. Сентября 2007 :: 10:52
Печать  
А я вот не помню Улыбка

(0) А классы действительно с нуля - К1, К2 ?
или это какие-нибудь Документ, Справочник, ГрупповойКонтекст и т.п.?
  

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


I Love YaBB 2!

Сообщений: 87
Зарегистрирован: 21. Июня 2006
Re: А как же наследование?
Ответ #5 - 19. Сентября 2007 :: 05:48
Печать  
Цитата:
(0) А классы действительно с нуля - К1, К2 ?
или это какие-нибудь Документ, Справочник, ГрупповойКонтекст и т.п.?


Угу, класс с нуля.

Предварительная отмазка: Это не в чей огород и никакой не камень. Это просто мысли вслух.

Цитата:
Это баг  
Проверка типов в 1С++ сильно отстала от остального функционала 1С++  


Грустно. Ведь в названии компоненты фигурируют гордые буквы С++! Как основная масса народа использует функционал 1cpp: - из модулей 1С  - документов, справочников, обработок вызывают методы объектов 1cpp - то есть по прежнему прет процедурное программирование. А если делать "как надо", то тут на первый план выходит не дополнительный функционал, а основные вопросы: Время жизни объектов, реализация интерфейсов, совместимость по типу... Не говоря уже о таком счастье, как приведение типов.

Попытался сделать небольшую подсистему к 1С, основаную на "чисто" ООП - методологии - постоянно упираюсь в артефакты реализации 1cpp. Приходится постоянно использовать напильник.
  
Наверх
 
IP записан
 
freagle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 87
Зарегистрирован: 21. Июня 2006
Re: А как же наследование?
Ответ #6 - 19. Сентября 2007 :: 05:53
Печать  
Вопрос до кучи: А когда в 1cpp объекты уничтожаются?

Код
Выбрать все
МойОбъект = "" 



Вроде как не работает...

При ответах прошу учесть: валидол у меня уже кончился, а скорая приедет не быстро  Плачущий
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: А как же наследование?
Ответ #7 - 19. Сентября 2007 :: 07:52
Печать  
freagle писал(а) 19. Сентября 2007 :: 05:53:
Вопрос до кучи: А когда в 1cpp объекты уничтожаются?

Код
Выбрать все
МойОбъект = "" 


Вроде как не работает...

Вот это - гон. Все уничтожается и тесты на это дело есть. Можно проверить через метод Деструктор().

Объекты уничтожаются автоматически. А приведенный код - все лишь очистка ссылки на объект.
Как только количество ссылок уменьшается до нуля, так объект и уничтожается.
Перекрестные ссылки не проверяются, сборщика мусора нет.  Улыбка

А какую версию 1С++ вы используете?
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: А как же наследование?
Ответ #8 - 19. Сентября 2007 :: 07:59
Печать  
freagle писал(а) 19. Сентября 2007 :: 05:48:
Грустно. Ведь в названии компоненты фигурируют гордые буквы С++!

Ну, Вы, батенька, даете! Не надо путать Си++ и Эс++. Улыбка
Как говорится, две большие разницы. Смех
Эс++ гораздо лучше. В нем, например, есть автоматическое управление памятью, не надо об этом постоянно заботиться.  Подмигивание
  
Наверх
 
IP записан
 
freagle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 87
Зарегистрирован: 21. Июня 2006
Re: А как же наследование?
Ответ #9 - 19. Сентября 2007 :: 09:13
Печать  
Спасибо. Я проверю на наличие ссылок на объект, который не хочет уничтожаться, и сообщу.

А про все остальное - я перевожу как "А нормального ООП у нас нет и не будет"... Я не прав?
  
Наверх
 
IP записан
 
freagle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 87
Зарегистрирован: 21. Июня 2006
Re: А как же наследование?
Ответ #10 - 19. Сентября 2007 :: 09:49
Печать  
Про объект. который не хочет уничтожаться. Все просто. В свойстве объекта оказывалась сложная иерархия, одним из членов которой и являлся сам объект. Получалась циклическая ссылка, и объект не мог уничтожиться, плюс держал все остальные объекты, на которые ссылался. Все произошло так, как и описано в документации. Спасибо за наводку  Улыбка

Другое дело - почему это произошло? Потому что глючит проверка типов, если бы работала - не было в этой иерархии ссылки на самого себя. Что возвращает нас к теме ООП в 1С++  Подмигивание
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: А как же наследование?
Ответ #11 - 19. Сентября 2007 :: 10:38
Печать  
freagle писал(а) 19. Сентября 2007 :: 09:13:
А про все остальное - я перевожу как "А нормального ООП у нас нет и не будет"... Я не прав?

1) Перевод неверный !
С чего ты это взял, где об этом написано ? Печаль
2) и озвучь, наконец, свою версию 1С++

3) нефига наезжать на 1С++ без конкретных примеров.
По проверке типов я тебе дал ответ. Где остальное?
Пример напильника покажи и т.д. и т.п.
  

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


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: А как же наследование?
Ответ #12 - 19. Сентября 2007 :: 11:56
Печать  
freagle писал(а) 19. Сентября 2007 :: 09:13:
А про все остальное - я перевожу как "А нормального ООП у нас нет и не будет"... Я не прав?

"Нормального ООП" у нас нет и не будет. Но если "нормальным" считать ООП а-ля С++.

У нас есть ООП в стиле "Duck". То есть если объект крякает, значит это утка.  Смех Если считать, что в Питоне есть ООП, то и у нас есть ООП.

У нас есть даже последнее веяние моды - RTTI.  Очень довольный

Поддерживаю Артура. Давайте конкретно, чего вам не хватает в первую очередь, во вторую, в третью и т.д.

Что не проработано, так это связки стандартных классов 1С типа "ГрупповойКонтекст", "Справочник", "Документ" с ООП. И маловато выхода ООП в интерфейс пользователя. Но это, по сути, уже не сам ООП, а прикладная библиотека.
  
Наверх
 
IP записан
 
freagle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 87
Зарегистрирован: 21. Июня 2006
Re: А как же наследование?
Ответ #13 - 19. Сентября 2007 :: 15:51
Печать  
Уважаемые коллеги! Если можно, я попытаюсь внести ясность в наш разговор. Я никаким образом не "наезжаю" на компоненту и тем более на кого-то из разработчиков лично. Более того, использую 1с++ в 95% своих работ. И еще более - я действительно считаю, что без вас  и 1с++ я бы работал гораздо менее эффективно и быстро. И ваши усилия по разработке, а тем паче - по поддержке пользователей компоненты, вроде меня, ничего, кроме искренней благодарности вызвать не могут.
Поэтому я прошу прощения, если вас обидел, своими высказываниями про отсутствие "нормального" ООП - это было действительно не очень корректно.  Если вы принимаете извинения, то как-то это обозначьте, а я пока сформулирую мысли под предложенной темой "Чего лично мне не хватает в ООП 1С++ ".
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: А как же наследование?
Ответ #14 - 20. Сентября 2007 :: 04:08
Печать  
Естественно, никаких обид. Каждый имеет право на свою точку зрения.

Но мне, как стороннику объектно-ориентированного подхода, интересно, чего же не хватает другому такому стороннику.

Так что добро пожаловать в раздел "ООП".
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать