Понедельник, 25 Ноября 2024, 03:59

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Получение значения переменной из другого класса.
AmriДата: Среда, 09 Октября 2013, 01:10 | Сообщение # 1
Auriss IGD
Сейчас нет на сайте
Приветствую. Если вопрос. Короче, имеются 2 класса - Class1 и Class2. И , допустим, в о втором классе есть переменная tyr. Требуется считать ее значение в первом классе. Как это сделать?
avolkoffДата: Среда, 09 Октября 2013, 04:17 | Сообщение # 2
частый гость
Сейчас нет на сайте
например, если переменная public, то создаешь экземпляр второго класса в первом и обращаешься к ней
если, не public, то можно через public-функцию сделать.


Сообщение отредактировал avolkoff - Среда, 09 Октября 2013, 04:18
krapДата: Среда, 09 Октября 2013, 08:56 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Эта тема находится в ветке .нет, но я не знаком с этим языком программирования
зато могу написать на java
если переменная паблик то Class1.tyr
если нет то в классе Class1 делаешь метод
public int getTyr()
{
return tyr;
}
В классе2 вызываешь Class1.getTyr() чтобы получить значение тир в классе1
AmriДата: Среда, 09 Октября 2013, 15:53 | Сообщение # 4
Auriss IGD
Сейчас нет на сайте
avolkoff,
Цитата (avolkoff)
например, если переменная public, то создаешь экземпляр второго класса в первом и обращаешься к ней

а вот фиг вам. Значение не передается.
Цитата (avolkoff)
лучше книжки почитай, а не такие простые вопросы задавай...

пруф в студию.

krap,
Цитата (krap)
если переменная паблик то Class1.tyr

вот этим способом и не работает.

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

Добавлено (09.10.2013, 15:53)
---------------------------------------------

Цитата (krap)
зато могу написать на java

Цитата (krap)
public int getTyr()
{
return tyr;
}


в принципе такой же код )))
LevriteДата: Среда, 09 Октября 2013, 19:31 | Сообщение # 5
участник
Сейчас нет на сайте
Код

public class class1 {

  /**
   * @param args
   */
  public static void main(String[] args) {
   // TODO Auto-generated method stub
   int tyr2 = 0;
   class2 tyr22 = new class2(5);
   tyr2 = tyr22.getTyr();
   System.out.println(tyr2);
  }

}

class class2 {
  private int tyr;

  public class2(int tyr) {
   super();
   this.tyr = tyr;
  }

  public int getTyr() {
   return tyr;
  }
}

Правда на jave, алгоритм конечно немного коряв, но за то работает.


AmriДата: Среда, 09 Октября 2013, 20:07 | Сообщение # 6
Auriss IGD
Сейчас нет на сайте
Levrite, таким путем не получится. Менять значение в искомом классе не надо. И не получится создать такую конструкцию. Хотя бы потому, что экземпляр класса используется для других целей. Кста, мне посоветовали юзать свойства. Вопрос - как? Объясните мне суть.
nonameДата: Среда, 09 Октября 2013, 20:30 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
Цитата Amri
Приветствую. Если вопрос. Короче, имеются 2 класса - Class1 и Class2. И , допустим, в о втором классе есть переменная tyr. Требуется считать ее значение в первом классе. Как это сделать?


во втором классе есть переменная tyr. ясен пень что она не константа и может иметь разные значения у разных экземпляров класса ( иначе вопроса бы не возникало ).

то есть- вопрос в том, чтобы получить значение переменной у какого-то внешнего объекта другого класса ( и классы эти друг друга не наследуют).

извне нет проблем передать методу set_tyr класса1 значение полученное от метода get_parameter класса2.

НО вопрос в том, как сделать, чтобы объекты класса1 могли "по своему хотению" получать значение переменной tyr от объектов класса2 когда из заблагорассудится.

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

то есть- класс1 должен иметь:
1. приватное поле- ссылку на объект класса2
2. публичный метод set_ptr, чтобы можно было установить ссылку на тот объект, который нужен(или один раз и навсегда или на разные объекты по вашему желанию)
3. приватное поле для хранения переменной tyr

класс2 должен иметь:
1. приватную переменную tyr
2. публичный метод get_tyr, чтобы эту переменную можно было у него запросить.


все правила форумной игры Дуэль Программистов

Сообщение отредактировал noname - Среда, 09 Октября 2013, 20:38
AmriДата: Среда, 09 Октября 2013, 21:03 | Сообщение # 8
Auriss IGD
Сейчас нет на сайте
noname, верно, не константа. И меняется каждый цикл. Но экземпляр класса с переменной всего один.
Цитата noname ()
то есть- класс1 должен иметь:
1. приватное поле- ссылку на объект класса2
2. публичный метод set_ptr, чтобы можно было установить ссылку на тот объект, который нужен(или один раз и навсегда или на разные объекты по вашему желанию)
3. приватное поле для хранения переменной tyr

класс2 должен иметь:
1. приватную переменную tyr
2. публичный метод get_tyr, чтобы эту переменную можно было у него запросить.

Как это в коде выглядит? Что-то я не догоняю sad

Добавлено (09.10.2013, 21:03)
---------------------------------------------

avolkoffДата: Среда, 09 Октября 2013, 21:37 | Сообщение # 9
частый гость
Сейчас нет на сайте
на!

Код
using System;

namespace Test
{
         //
         // Вот класс 1 алЯ Class1
         //
         class Class1
         {
             //
             // Как говорил экземпляр класса 2
             //
             private Class2 c2;

             //
             // Конструктор
             //
             public Class1()
             {
                 c2 = new Class2();
             }

             //
             // Просто функция для вывода
             //
             public int readVarFromClass2()
             {
                 return c2.tyr;
             }
         };

         //
         // Вот класс 2 алЯ Class2
         //
         class Class2
         {
             //
             // Конструктор
             //
             public Class2()
             {
                 tyr = 100;
             }

             //
             // PUBLIC!!! переменная в классе 2
             //
             public int tyr;
         };

         class Program
         {
             static int Main()
             {
                 Class1 c1 = new Class1();

                 Console.WriteLine(c1.readVarFromClass2());

                 return 0;
             }
         };
}


на вот через public функцию
Код
using System;

namespace Test
{
        //
        // Вот класс 1 алЯ Class1
        //
        class Class1
        {
            //
            // Как говорил экземпляр класса 2
            //
            private Class2 c2;

            //
            // Конструктор
            //
            public Class1()
            {
                c2 = new Class2();
            }

            //
            // Просто функция для вывода
            //
            public int readVarFromClass2()
            {
                // теперь так ошибка : )
                // return c2.tyr;

                return c2.GetTyr();
            }
        };

        //
        // Вот класс 2 алЯ Class2
        //
        class Class2
        {
            //
            // Конструктор
            //
            public Class2()
            {
                tyr = 100;
            }

            //
            // Вот не public переменная
            //
            private int tyr;

            //
            // А вот public функция
            //
            public int GetTyr()
            {
                return (this.tyr);
            }
        };

        class Program
        {
            static int Main()
            {
                Class1 c1 = new Class1();

                Console.WriteLine(c1.readVarFromClass2());

                return 0;
            }
        };
}




Сообщение отредактировал avolkoff - Среда, 09 Октября 2013, 21:43
AmriДата: Четверг, 10 Октября 2013, 00:24 | Сообщение # 10
Auriss IGD
Сейчас нет на сайте
avolkoff,
Цитата avolkoff ()
еще раз говорю почитай книжку по шарпу

курил же, курил. А не работает же из книжки..

Недавненько я сделал такое вот таким путем -

Код

Using необходимые вещи

namespase проджект

class нумбур ван
{
Переменная некоего типа тайр;

паблик канструктор (а быть может и метод)
{
тайр = (НЁХ, типа чорный йащик) ; // тута нет разницы , чему же он таки равен
}
}
}
// в ентом классе делать больше нечаго

а теперь самое интересное
Код

Юзаем нужные весчи;

Имя пространства прджекта
{
типа класс нумбер ту
{
тута свои переменные;  
Нумбер ван айн;

это типа загрузочный метод (грузим тута)
{
куча всякой, не имеющей в ентом случае сути;

айн = новые екземпляр класса нумбер ван;
}

//тута туева куча усяких канструктаров, методав и типа того

а вот в ентом методе юзаем (тайр из нумбера ван)
{
куча несущественной нёх;

а вот если (айн.тайр.пересекся(с нёх))
то происходит ахтунг;
}
}
}
и все на этом.


avolkoff, если бы ты увидел структуру моего прожекта, тебя бы хватил ахтунг. Нигде такое не описыватся biggrin


Добавлено (10.10.2013, 00:24)
---------------------------------------------
avolkoff, и да, тут не важна точка входа в приложени и тому подобное. Не важно, полный код класса, либо кусок. Важен алгорит, по которому все делается. А вот эти - точка входа, вывод через консоль (да, мне попался такой экземпляр) совершенно не играют погоды.

avolkoffДата: Четверг, 10 Октября 2013, 02:03 | Сообщение # 11
частый гость
Сейчас нет на сайте
По-моему здесь ничего сложного нет!
Алгоритм тебе написал noname, реализацию в коде написал я.
Если нужны подробности, код из студии в студию :)
AmriДата: Четверг, 10 Октября 2013, 16:38 | Сообщение # 12
Auriss IGD
Сейчас нет на сайте
avolkoff,
Цитата avolkoff ()
По-моему здесь ничего сложного нет!

ты прав, я уже разобрался) просто есть несколько способов разных.
Цитата avolkoff ()
Если нужны подробности, код из студии в студию :)

а вот это пока никоим образом.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг