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


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Свойство базового
Ответ #15 - 01. Декабря 2007 :: 16:36
Печать  
artbear писал(а) 01. Декабря 2007 :: 13:29:
Но я уверен, что в данном случае удобнее и нагляднее сделать как раз базовый класс типа Расчет.Базовый, в котором есть метод Выполнить(), выдающий ошибку.

Для организации виртуальности метода "Выполнить" - несомненно.
  
Наверх
www  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Свойство базового
Ответ #16 - 05. Декабря 2007 :: 05:40
Печать  
Спасибо всем учавствующим)))
Ещё вопрос: чтоб в классе потомке получить доступ к переменным базового - обязательно эти переменные должны быть с Экспорт?
Дело в том, что хотелось бы, что часть свойств базового была легко доступна в потомке, но не была доступна из вне
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Свойство базового
Ответ #17 - 05. Декабря 2007 :: 06:51
Печать  
1. Да, экспорт обязателен.
2. В 1С++ реализована модель Public/Private, т.е. данные могут быть либо открытыми для всех, либо закрытыми для всех, промежуточных состояний типа protected нет.
ИМХО тебе нужно инкапсулировать чтение/изменение свойств через спец.методы, которые будут регулировать доступ!
  

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



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Свойство базового
Ответ #18 - 06. Декабря 2007 :: 01:49
Печать  
artbear писал(а) 05. Декабря 2007 :: 06:51:
ИМХО тебе нужно инкапсулировать чтение/изменение свойств через спец.методы, которые будут регулировать доступ!

Да на данный момент так и делаю, но хотелось бы, чтоб снаружи некоторые свойства и методы "чужим" объектам не виделись совсем, в тоже время оставаясь доступные потомкам.
Ну ладно, "зарегулирую" я доступ к свойствам "через спец.методы", а как быть, с процедурами, которые должны быть доступными для потомков класса, но быть скрытыми для остальных объектов? Или такая проблема возникает у меня из-за неправильного дизайна?
Т.е., например, такая ситуация:
В классе Базовый есть некоторые процедуры, реализующие ряд действий с входными данными, свойственных и всем потомкам этого класса, но действия эти имеют подготовительный характер, окончательное поведение и результат определен только в более узкоспециализированных классах. Так вот, хотелось бы, чтоб подготавливающие данные методы Базового были доступны потомкам, но были скрыты от внешних объектов. Как?
З.Ы. Уверне, что излагаю я очень сумбурно и, возможно, несу ересть, но в ООП я новичёк!)))
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Свойство базового
Ответ #19 - 06. Декабря 2007 :: 07:17
Печать  
Да не, нормальную вещь ты хочешь. В C++ такая ерунда называется protected метод. В 1С++ этого нет.
Обходимся следующим образом: принимаем соглашение, согласно которому имя protected метода должно начинаться с "_". Делаем его экспортным и сами следим за тем, что не вызываем его снаружи.
  
Наверх
www  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Свойство базового
Ответ #20 - 07. Декабря 2007 :: 06:52
Печать  
спасибо за ответ
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать