Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 571
1

Свойство метода из класса

04.10.2013, 23:04. Показов 1338. Ответов 17
Метки нет (Все метки)

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

dim myrzik as new Кот
myrzik.тело.лапы = 4
Так же у метода может быть тип имеющий свои свойства который в свою очередь является свойством метода
Кот.тело.морда.усы = 10

Как написать такой метод?
Простое объявление как в php не прокатывает, а в гугле нахожу ток свойства класса.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.10.2013, 23:04
Ответы с готовыми решениями:

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

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

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода
В базовом классе метод помечен как virtual. Насколько я понял из книги: override означает, что...

Вызов метода класса из метода другого класса
Помогите школнегу Имеется несколько классов class Com { protected: unsigned char bufrd,...

17
Модератор
9725 / 3686 / 871
Регистрация: 22.02.2013
Сообщений: 5,531
Записей в блоге: 78
04.10.2013, 23:19 2
Объявляй отдельно классы "тело" и "лапы" и делай их соответствующими свойствами класса.
0
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 571
04.10.2013, 23:31  [ТС] 3
А по другому не как?)
Так будет путаница (хотя возможно нет, но польюбому код будет раскидан)
К тому же для каких нибудь мелких свойств придётся писать отдельный класс.
Чет не могу представить как это реализовать, как сделать свойством класса понятно
а как свойством метода не совсем.
По идее должен быть способ описанный выше, он мне попадался в 3 разных языках поддерживающих опп.
0
Модератор
9725 / 3686 / 871
Регистрация: 22.02.2013
Сообщений: 5,531
Записей в блоге: 78
04.10.2013, 23:36 4
Ну свойство метода, как я понимаю, это возвращаемое значение метода. Возвращай экземляр класса, вот и будет свойство метода. Можно еще пользовательский тип данных создать и его использовать как свойство.
0
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 571
05.10.2013, 00:06  [ТС] 5
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Function kub()
    Dim x As Integer
    Dim y As Integer
    Dim px As Integer
    Dim py As Integer
    Dim zx As Integer
    Dim zy As Integer
    Dim pzx As Integer
    Dim pzy As Integer
    x = 0
    y = 0
    px = 100
    py = 100
    zx = 10
    zy = 10
    pzx = 110
    pzy = 110
End Function

Этих переменных ещё может быть штук 50
по умолчанию у них есть значение тоесть после создания объекта
пишу объект.куб и мне рисует куб но как сделать чтоб написал
объект.куб.px =150 и значение изменилось не представляю
так же чтоб написал
переменная = объект.куб.px
и получил значение.
Более того как при всём этом написать так чтоб внутри метода эти переменные были
заключены в что то наподобие типа
тоесть пишем объект.куб.стороны.px =150
переменная = объект.куб.стороны.px
И при этом все эти переменные должны работать внутри метода куб.
В самом vb это же как то реализовано, по идее это всё должно быть внутренностями одного класса.
И ещё как сразу выставить переменной значение Dim pzy As Integer = 100 не выходит хотя по идее должно.
0
Модератор
9725 / 3686 / 871
Регистрация: 22.02.2013
Сообщений: 5,531
Записей в блоге: 78
05.10.2013, 00:09 6
Еще раз - используй классы.
0
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 571
05.10.2013, 01:35  [ТС] 7
Бредово сделано
Для того как я хочу надо писать новый класс с переменными в виде.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private mvartest As Integer
Public Property Set test(ByVal vData As Integer)
    Set mvartest = vData
End Property
 
Public Property Get test() As Integer
    If IsObject(mvartest) Then
        Set test = mvartest
    Else
        test = mvartest
    End If
End Property
Для каждой переменной.
Плюс ещё писать функцию в которой всем переменным будет выставлено значение по умолчанию.
После этого надо ещё объявить этот класс внутри своего класса и присвоить своим рабочим переменным
значения из этого класса

Добавлено через 17 минут
И то это будет не совсем то что надо)
0
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
05.10.2013, 06:33 8
Небольшая подсказка:

Свойство метода из класса


Без Property Set и Propеrty Get
0
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
05.10.2013, 06:54 9
Свойство метода из класса
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,653
Записей в блоге: 13
05.10.2013, 10:32 10
Цитата Сообщение от The trick Посмотреть сообщение
свойство метода
- в идеологии ООП такого понятия нет.
0
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 571
05.10.2013, 22:17  [ТС] 11
Цитата Сообщение от Catstail Посмотреть сообщение
в идеологии ООП такого понятия нет.
В php пишешь класс, в классе метод, в методе переменные, после.
PHP
1
2
$class->metod->svboistvo = 10
$perrr = $class->metod /выдаст уже значение с изменённым свойством.
Такие же конструкции поддерживает ActionScript 2.0 -3.0

Добавлено через 4 минуты
Причём что само поражает то что я при объявление переменной сразу не могу выставить ей значение.
Dim var as string = "значение"
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,653
Записей в блоге: 13
05.10.2013, 22:33 12
Цитата Сообщение от radlif Посмотреть сообщение
В php пишешь класс, в классе метод, в методе переменные
- заглянул в книгу по php 5/6. Модель ООП, поддерживаемая PHP, весьма близка к модели C++. Понятие "свойство метода" я не нашел. То, что пишешь ты, возможно и имеет место, но только в скриптовых (интерпретируемых) языках, к числу которых принадлежат и php, и ActionScript. А VB язык компилируемый и в VB таких конструкций (динамическое создание переменных) быть не может.

Добавлено через 2 минуты
Цитата Сообщение от radlif Посмотреть сообщение
Причём что само поражает то что я при объявление переменной сразу не могу выставить ей значение.
Dim var as string = "значение"
- в VB.NET можешь.

И зачем привязывать переменные к методу? Может лучше - к классу (тогда они называются свойствами)?
0
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 571
05.10.2013, 22:40  [ТС] 13
Цитата Сообщение от Catstail Посмотреть сообщение
И зачем привязывать переменные к методу? Может лучше - к классу (тогда они называются свойствами)?
Если в классе штук 10 методов и в каждом штук 10 внутренних переменных то в итоги вылезет большая портянка
в которой несложно ошибиться, а так я вызывая метод работаю ток с переменными внутри него,
так намного удобнее.

Добавлено через 2 минуты
Хотя раз не поддерживает толку вести дискуссию, буду привыкать по новому, хотя по моему
сделано как то неправильно, неудобно
0
Модератор
9725 / 3686 / 871
Регистрация: 22.02.2013
Сообщений: 5,531
Записей в блоге: 78
05.10.2013, 22:40 14
Цитата Сообщение от radlif Посмотреть сообщение
Если в классе штук 10 методов и в каждом штук 10 внутренних переменных то в итоги вылезет большая портянка
в которой несложно ошибиться, а так я вызывая метод работаю ток с переменными внутри него,
так намного удобнее.
Метод - это функция (процедура).
Я не понимаю, для чего нужен доступ к внутренним переменным функции? В обычных модулях же ты не пользуешься внутренними переменными функции. Если нужны какие то значения узнать, поменять передавай аргументы в метод.
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,653
Записей в блоге: 13
05.10.2013, 22:41 15
Цитата Сообщение от radlif Посмотреть сообщение
Если в классе штук 10 методов и в каждом штук 10 внутренних переменных
- не хочу выглядеть поучающим ментором, но принцип инкапсуляции (основа ООП) требует, чтобы к внутренним переменным метода имел доступ только метод. Такие переменные нужно делать локальными (создавать внутри метода в любом количестве). И непонятно, в чем проблема.
0
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 571
05.10.2013, 22:46  [ТС] 16
Эт сейчас бесполезный диалог, я просто привык по другому.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,653
Записей в блоге: 13
05.10.2013, 22:51 17
Цитата Сообщение от radlif Посмотреть сообщение
Эт сейчас бесполезный диалог, я просто привык по другому.
- для меня действительно бесполезный. А для тебя - нет. Ты же пишешь на VB, вот и придется следовать VB-шной идеологии (или менять среду).
0
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 571
05.10.2013, 22:54  [ТС] 18
Цитата Сообщение от Catstail Посмотреть сообщение
- для меня действительно бесполезный. А для тебя - нет. Ты же пишешь на VB, вот и придется следовать VB-шной идеологии (или менять среду).
Да это и так понятно, сейчас переучиваюсь, чтоб делать как я привык пишу ещё 1 класс
с переменными и делаю его свойством моего класса присваивая его значения внутри метода
0
05.10.2013, 22:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2013, 22:54
Помогаю со студенческими работами здесь

Как заставить свойство "Text" компонента Label забиндиться на свойство TheChar из пользовательского класса
Здравствуйте, не получается заставить свойство "Text" компонента Label забиндиться на свойство...

Управление функциями/методами класса через свойство класса
Вот, жидкость в голову ударила и появилась идея... дурная :pardon: Как бы так сделать: Есть, к...

Вызов метода агрегата из метода агрегируемого класса
Есть класс-агрегат Game function Game() { this.game_map = null; // другие члены } ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru