Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/57: Рейтинг темы: голосов - 57, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 10

Как передать объект в метод?

31.05.2010, 21:52. Показов 11204. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два класса KvadYr и KvadYr2(Оба имеют методы с одинаковыми именами и параметрами, отличаются только формулы) в зависимости от того Б четное или нет используются методы какого то класса.
В общем написал метод void polimorf в который нужно передать(скопировать или создать ссылку) объект созданный в классе Main
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//----------------------------------------------------
 class Main {
         static  float  kD, x1, x2;
         static  int D;
   static  void polimorf(Object z, int a, int b, int c){
            // z = new Object();
              D=(int) z.discrm(a, b, c);
              kD = (float) Math.sqrt(D);
              if (D>0)  {
                  x1 = z.dmaxX1(a, b, kD);
                  x2 = z.dmaxX2(a, b, kD);
                  System.out.println("X1 = "+x1+";\nX2 = "+x2+";");
              } else  if(D==0) {
                  x1 =z.dzeroX(a, b);
                  System.out.println("X = "+x1+";");
              } else {            
                  System.out.println("Корней нет");
              }
     }
 
   public  static void main(String [] args) {
             KvadYr x = new KvadYr(3,5,1);
         System.out.println("Variable \na="+x.a+"\nb="+x.b+"\nc="+x.c);
         if (x.b % 2 != 0){
            polimorf(x, x.a, x.b, x.c);
         } else {
             KvadYr2 y = new KvadYr2();
 
             polimorf(y, x.a, x.b, x.c);
         }
    }
}
//----------------------------------------------------
На всякий случай вылаживаю классы KvadYr и KvadYr2
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class   KvadYr {
         int a, b, c;
         KvadYr(){         // Конструктор без параметров
             a=1;
             b=2;
             c=1;
         }
         KvadYr (int a, int b, int c){   //Конструктор с параметрами
             this.a=a;
             this.b=b;
             this.c=c;
         }
      static   float discrm(int a, int b, int c) {      //Метод вычисления дискримината
             int  D=(b*b)-4*a*c;
             return D;
         }
       static  float dmaxX1(int a, int b, float kD){    //Если два корня, то возвращает первый
             float x1 = (-b + kD)/(2*a);
             return x1;
         }
       static  float dmaxX2(int a, int b, float kD){    //Если два корня, то возвращает вторый
             float x2 = (-b - kD)/(2*a);
             return x2;
         }
       static  float dzeroX(int a, int b){              //Если Д==0,то корни равны. Вычисляем один из них
             float x1 = -b/(2*a);
             return x1;
         }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class KvadYr2 extends KvadYr{
 static  float discrm(int a, int b, int c) {      //Метод вычисления дискримината
       int  D=(b*b)-4*a*c;
         return D;
   }
 static  float dmaxX1(int a, int c, float kD){
         float x1 = (float) (-kD + Math.sqrt(kD*kD-a*c))/a; //Если два корня, то возвращает первый
         return x1;
   }
  static float dmaxX2(int a, int c, float kD){    //Если два корня, то возвращает вторый
         float x2 = (float) (-kD - Math.sqrt(kD*kD-a*c))/a;
         return x2;
   }
  static float dzeroX(int a, int b){              //Если Д==0,то корни равны. Вычисляем один из них
         float x1 = -b/(2*a);
         return x1;
    }
}
Добавлено через 4 минуты
И еще один вопрос: как можно из Java кода сгенерировать UML диаграммы.
Java ==> UML но не наоборот
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.05.2010, 21:52
Ответы с готовыми решениями:

Как правильно передать объект в метод и получить нужное возвращаемое значение
Есть суперкласс: public class Str_240_1_Cycle { public void play() { System.out.println("Str_240_1_Cycle.play()");} ...

Как передать объект класса в метод
Погуглил и нашел способы только для плюсов, которые не работают в шарпе. Как правильно передать объект класса Something something; ...

Рефлексия: передать объект в метод
Добрый день. Есть модель: public class Main { public List<A> a { get; set; } public List<B> b { get; set; } ...

4
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
31.05.2010, 23:34
А в чем собственно вопрос?
0
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 10
01.06.2010, 01:50  [ТС]
Если попытаться запустить то в строках 7, 10, 11 и 14 класса Main выдаст одну и туже ошибку и подчеркнет "z.". Что то вроде объект "z." не имеет указанных методов, но они есть просто он их не видит т.е. хотя при передаче ошибок не возникает
Java
1
2
3
4
5
6
if (x.b % 2 != 0){
             polimorf(x, x.a, x.b, x.c);
         } else {
             KvadYr2 y = new KvadYr2();
             polimorf(y, x.a, x.b, x.c);
         }
.
Судя по всему я не правильно принимаю объект в методе polimorf
Code
1
static  void polimorf(Object z, int a, int b, int c){
Наверное параметр Object z здесь не уместен !? Чем его можно и "нужно" заменить???
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
01.06.2010, 07:20
Попробуй по деревенцки:
Передавай в параметре так же объект, а в теле polimorf (правильнее кстати polymorph) вызывай методы dmaxX1, dmaxX2, discrm от конкретных объектов x и y, а не от параметра z, а определять какой именно нужно использовать объект можно и в if (z.getName().equals("x")) (это к примеру)

А вообще, если надо полиморфно это сделать, делай класс с абстрактными методами, наследуй от него новые классы и в них переопределяй эти методы по нужному. Потом создашь объекты с использованием типа абстрактного класса, но конструкторы вызовешь конкретные
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
01.06.2010, 09:09
Цитата Сообщение от _ViPeR_ Посмотреть сообщение
А вообще, если надо полиморфно это сделать, делай класс с абстрактными методами, наследуй от него новые классы и в них переопределяй эти методы по нужному. Потом создашь объекты с использованием типа абстрактного класса, но конструкторы вызовешь конкретные
Если делать абстрактный класс, то тогда параметром надо передавать не Object, а этот абстрактный класс. При создании классов не обязательно использовать тип абстрактного класса, можно использовать вполне конкретный тип
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2010, 09:09
Помогаю со студенческими работами здесь

Как передать объект класса в метод класса?
Здравствуйте, каким образом передать объект класса в метод класса? Вот код: class Program { class Rabotnik ...

Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра?
header.h template <class T> class MyVector { public: void swap(MyVector<T>Vector); } template <class T> void...

Недопустимый неполный тип , или как передать в функцию указатель на объект класса , или просто объект
Други мои , кодеры. Не могу я ни как передать в функцию объект класса , или что еще лучше(для меня , так как учусь работать с указателями)...

Как передать объект в функцию
Допустим у меня есть такой класс: class Abc { private: int a; public: void set_a(int A) { a = A;

Как передать объект в Razor
Как передать объект используя @using (Html.BeginForm("AddQwestions","Qwestion") ){<input type="text" /> <input type="submit"...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru