Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Иерархия классов (число прочтений - 1725 )
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Иерархия классов
07. Декабря 2018 :: 10:09
Печать  
Помогите, плз, разобраться с иерархий классов на готовом примере.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3043
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Иерархия классов
Ответ #1 - 07. Декабря 2018 :: 11:44
Печать  
класс Базовый_1=Base_1.txt
{
  void Метод1(Число пар1, Строка пар2);
  Число Метод2(Число пар1, Дата пар2);
};

класс Производный_1=Derive_1.txt: Базовый_1
{
  void Метод1(Число пар1, Строка пар2); // Данный метод переопределяет метод базового класса
};


http://www.1cpp.ru/docum/icpp/html/classes.html#id33
  

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


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Иерархия классов
Ответ #2 - 08. Декабря 2018 :: 06:11
Печать  
Да, это все замечательно, но хотелось бы на живом примере посмотреть организацию подчиненного класса. Пишу класс аля ToolBar, внутри которого, например, класс ToolButton. Описание читал, но... Смущённый
  
Наверх
 
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Иерархия классов
Ответ #3 - 08. Декабря 2018 :: 20:24
Печать  
Ну так что, никто не смог реализовать подобное счастье? Неужели только теория?
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 572
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Иерархия классов
Ответ #4 - 09. Декабря 2018 :: 14:34
Печать  
recop писал(а) 08. Декабря 2018 :: 20:24:
Ну так что, никто не смог реализовать подобное счастье? Неужели только теория?

Как так никто не смог? Посмотри Поставщик данных, там базовый класс ПоставщикДанных.ТабличноеПоле, а на нем уже основаны ПоставщикДанных.Справочник и т.п.
Ну а так, да, кроме ПоставщикаДанных не могу припомнить другого универсального решения, которое бы использовало этот функционал.
  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Иерархия классов
Ответ #5 - 10. Декабря 2018 :: 02:07
Печать  
Djelf писал(а) 09. Декабря 2018 :: 14:34:
recop писал(а) 08. Декабря 2018 :: 20:24:
Ну так что, никто не смог реализовать подобное счастье? Неужели только теория?

Как так никто не смог? Посмотри Поставщик данных, там базовый класс ПоставщикДанных.ТабличноеПоле, а на нем уже основаны ПоставщикДанных.Справочник и т.п.
Ну а так, да, кроме ПоставщикаДанных не могу припомнить другого универсального решения, которое бы использовало этот функционал.


Где скачать исходный текст?

Мысль такая:
Имеем ПанельКнопок (по образу ТабличноеПоле). Коллекцию Кнопки (по образу Колонки).
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


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

Сообщений: 807
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Иерархия классов
Ответ #6 - 10. Декабря 2018 :: 09:46
Печать  
Посмотри этот класс: http://www.1cpp.ru/forum/YaBB.pl?num=1351073387/0#0

Подключается в defcls.prm строкой:

Код (PHP)
Выбрать все
класс КрасиваяКнопка = КрасиваяКнопка.ert:АктивИкс {}	//// Класс для подмены стандартных кнопок на ActiveX кнопки. Заменяются только те, у которых есть идентификатор 

  

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


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Иерархия классов
Ответ #7 - 10. Декабря 2018 :: 10:36
Печать  
alyuev писал(а) 10. Декабря 2018 :: 09:46:
Посмотри этот класс: ...  КрасиваяКнопка = КрасиваяКнопка.ert:АктивИкс {}...


Не очень понимаю, что здесь можно взять для реализации текущей задачи?

Задача:
Класс: ПанельКнопок.
Подклассы:
  1. Кнопка.
  2. Переключатель.
  3. Меню.
  и т.д.

На данный момент реализована ПанельКнопок, где Кнопки(список): Кнопка(Структура) со определяющим свойством "Тип": "Кнопка","Разделитель", "Переключатель". Хочется расширить и придать гибкость, что без подклассов будет плохо читаемо и сложно в реализации

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



Сообщений: 3043
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Иерархия классов
Ответ #8 - 11. Декабря 2018 :: 11:51
Печать  
recop писал(а) 08. Декабря 2018 :: 06:11:
Да, это все замечательно, но хотелось бы на живом примере посмотреть организацию подчиненного класса. Пишу класс аля ToolBar, внутри которого, например, класс ToolButton. Описание читал, но... Смущённый

Не поучения ради, а понимания для...
В иерархии ООП нет понятия подчиненный класс, есть Базовый (родительский) и Производный (дочерний, наследник).
Подчиненным можно считать любой класс в иерархии. Ведь как работа наследника может зависеть от работы базового (через наследование), так и работа базового от наследника (через полиморфизм)
  

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



Сообщений: 3043
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Иерархия классов
Ответ #9 - 11. Декабря 2018 :: 11:53
Печать  
recop писал(а) 10. Декабря 2018 :: 10:36:
alyuev писал(а) 10. Декабря 2018 :: 09:46:
Посмотри этот класс: ...  КрасиваяКнопка = КрасиваяКнопка.ert:АктивИкс {}...


Не очень понимаю, что здесь можно взять для реализации текущей задачи?

Задача:
Класс: ПанельКнопок.
Подклассы:
  1. Кнопка.
  2. Переключатель.
  3. Меню.
  и т.д.

На данный момент реализована ПанельКнопок, где Кнопки(список): Кнопка(Структура) со определяющим свойством "Тип": "Кнопка","Разделитель", "Переключатель". Хочется расширить и придать гибкость, что без подклассов будет плохо читаемо и сложно в реализации


не понятно что такое "подклассы" (на наследников вроде не походит) и что они хотят от иерархии
  

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



Сообщений: 3043
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Иерархия классов
Ответ #10 - 11. Декабря 2018 :: 11:59
Печать  
могу только предположить, что "ПанельКнопок" должна содержать в себе некий список из БазовыйЭлемент
наследниками БазовыйЭлемент являются: Кнопка, Перключатель, Меню, и т.д.
могу ошибаться
  

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


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Иерархия классов
Ответ #11 - 11. Декабря 2018 :: 14:31
Печать  
trad писал(а) 11. Декабря 2018 :: 11:59:
могу только предположить, что "ПанельКнопок" должна содержать в себе некий список из БазовыйЭлемент
наследниками БазовыйЭлемент являются: Кнопка, Перключатель, Меню, и т.д.
могу ошибаться


Всё так, на самом деле стоит значительно более серьезная задача. Это пример разрабатываю как полезный тренинг.
Изначально являясь любителем-самоучкой я не силен в терминах, но попробую объяснить более подробно.
Из предыдущего объяснения понятно, что мы имеем графически организованный интерфейсный объект на основе кнопки или текста. У этого объекта свойства, в основном константы, касающихся графики и положения объекта на форме,  и некий список элементов интефейса, в данном примере назовем его Кнопки. Вот к этим "кнопкам" и надо прикрутить методы. И так по образу матрешки. Разница в том, что подчиненный объект не имеет основы в виде элемента формы, но имеет свои методы. Обращаться к "подчиненным", "вложенным", "производным" либо "псевдо" объектам есть необходимость через базовый объект-родитель:

Кнопка=ПанельКнопок.Кнопки.Добавить("Сохранить");
Кнопка.Type="...";
Кнопка=ПанельКнопок.Кнопки.Получить("Сохранить");

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

И еще, недавно обнаружил, что Перехватчик работает лишь с одним объектом созданным последним. На примере ПанелиВкладок, если это так, то задача теряет всякий смысл. Что не так я там сделал?
« Последняя редакция: 11. Декабря 2018 :: 17:40 - recop »  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать