Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Что-то с методом ПриПолучении_Атрибут (число прочтений - 6346 )
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Что-то с методом ПриПолучении_Атрибут
Ответ #15 - 29. Мая 2008 :: 03:01
Печать  
fez писал(а) 28. Мая 2008 :: 21:33:
alyuev писал(а) 28. Мая 2008 :: 12:24:
ЗЫ. Смотрел по классам - по моему никто не использует метод ПриПолучении_Атрибут.

Потому что это х#рня какая-то. Все true пацаны в случае необходимости инкапсулируют параметр в методы get/set и горя не знают.


Почему же х#рня, например в Delphi похожая схема используется для свойств классов
  
Наверх
ICQ  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 854
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Что-то с методом ПриПолучении_Атрибут
Ответ #16 - 29. Мая 2008 :: 06:48
Печать  
Хочу стать "true пацаном"  Класс - для этого объясните пожалуйста, что значит "инкапсулировать параметр в методы get/set", чтобы и я "горя не знал"  Подмигивание
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Что-то с методом ПриПолучении_Атрибут
Ответ #17 - 29. Мая 2008 :: 07:23
Печать  
alyuev писал(а) 29. Мая 2008 :: 06:48:
Хочу стать "true пацаном"  Класс - для этого объясните пожалуйста, что значит "инкапсулировать параметр в методы get/set", чтобы и я "горя не знал"  Подмигивание


Код
Выбрать все
Перем МойАтрибут;

Процедура Set_МойАтрибут(Значение)
	МойАтрибут=Значение;
КонецПроцедуры

Функция Get_МойАтрибут()
	Возврат МойАтрибут;
КонецФункции 



Смех
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Что-то с методом ПриПолучении_Атрибут
Ответ #18 - 29. Мая 2008 :: 07:38
Печать  
Процедура Set_МойАтрибут(Значение) Экспорт
Функция Get_МойАтрибут() Экспорт
  

1&&2&&3
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Что-то с методом ПриПолучении_Атрибут
Ответ #19 - 29. Мая 2008 :: 07:45
Печать  
trad писал(а) 29. Мая 2008 :: 07:38:
Процедура Set_МойАтрибут(Значение) Экспорт
Функция Get_МойАтрибут() Экспорт


Код
Выбрать все
Перем МойАтрибут;

Процедура Set_МойАтрибут(Значение) Экспорт
	МойАтрибут=Значение;
КонецПроцедуры

Функция Get_МойАтрибут() Экспорт
	Возврат МойАтрибут;
КонецФункции 



Да, мог не догадаться  Подмигивание
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 854
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Что-то с методом ПриПолучении_Атрибут
Ответ #20 - 29. Мая 2008 :: 08:08
Печать  
А чем этот метод лучше? Ведь в коде вызова будет писаться не атрибут класса через точку, а названия этих методов.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Что-то с методом ПриПолучении_Атрибут
Ответ #21 - 29. Мая 2008 :: 08:23
Печать  
alyuev писал(а) 29. Мая 2008 :: 08:08:
А чем этот метод лучше? Ведь в коде вызова будет писаться не атрибут класса через точку, а названия этих методов.


Ты хотел

alyuev писал(а) 29. Мая 2008 :: 06:48:
Хочу стать "true пацаном"  Класс - для этого объясните пожалуйста, что значит "инкапсулировать параметр в методы get/set", чтобы и я "горя не знал"  Подмигивание


  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Что-то с методом ПриПолучении_Атрибут
Ответ #22 - 29. Мая 2008 :: 10:15
Печать  
Все зависит от потребностей твоей задачи.

По мне удобней писать так:

Перем МояПеременная Экспорт;  //Публичная переменная (видимая извне)
Обращение через  =,
Класс.МояПеременная=100;
Значение= Класс.МояПеременная;

Для контроля установки/записи атрибутов в классе:

ПриПолучении_ИмяАтрибута (ЗначениеАтрибута)
ПриЗаписи_ИмяАтрибута (ЗначениеДляУст)

А встречаются редко, потому что контроль введенных значений специфика классов и поставленных задач.

Методы get/set используют чаще для приватных переменных:
Перем МояПеременная;  // Приватная переменная (видимая только в классе, для обращения извне методы get/set)

Надеюсь, доходчиво объяснил  Улыбка
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Что-то с методом ПриПолучении_Атрибут
Ответ #23 - 29. Мая 2008 :: 10:31
Печать  
Как раз работа с публичными атрибутами не всегда рекомендуется, а вместо этого рекомендуется организовать к ним доступ через спец. методы get/set, упрятав эти переменные в приват.
  

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


Гражданин Вселенной

Сообщений: 854
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Что-то с методом ПриПолучении_Атрибут
Ответ #24 - 29. Мая 2008 :: 14:05
Печать  
artbear писал(а) 29. Мая 2008 :: 10:31:
Как раз работа с публичными атрибутами не всегда рекомендуется, а вместо этого рекомендуется организовать к ним доступ через спец. методы get/set, упрятав эти переменные в приват.


А почему не рекомендуется? Чем это чревато?
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Что-то с методом ПриПолучении_Атрибут
Ответ #25 - 29. Мая 2008 :: 20:18
Печать  
alyuev писал(а) 29. Мая 2008 :: 14:05:
artbear писал(а) 29. Мая 2008 :: 10:31:
Как раз работа с публичными атрибутами не всегда рекомендуется, а вместо этого рекомендуется организовать к ним доступ через спец. методы get/set, упрятав эти переменные в приват.


А почему не рекомендуется? Чем это чревато?

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

Работа через геттеры-сеттеры делает такой переход прозрачным до очевидности. Наличие же каких-то спецметодов, которые неявно вызываются при изменении/считывании значения параметра - несколько менее прозрачно. А значит это потенциальные места для трудноуловимых ошибок.
  
Наверх
www  
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Что-то с методом ПриПолучении_Атрибут
Ответ #26 - 30. Мая 2008 :: 08:52
Печать  
Не согласен, приведи реальный пример различий, я вижу только 1, написание кода при использовании, а все остальное идентично, ошибки преобразований и вычислений что в методе гет/сет или получение/запись равнозначны Подмигивание

Вот если просто переменная без получение/запись, тогда согласен  Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать