Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Организация иерархии классов, взаимодейстие наследников родителя 
:(
    Опции темы
Akeem
  Дата 27.7.2009, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 14.7.2006
Где: Киев/Украина

Репутация: нет
Всего: 3



Постановка задачи:

Есть иерархия:
Код

parent 
+
|
+ -- child 1
|
+ -- child 2
|
+ -- child 3
|
...


Нужно организовать взаимодействие наследников (childs) по их основным методам
Те хочеться использовать вместо 
Код

class Child1 extends parent
{
Child2 oCh2;

public somemethod()
{
oCh2 = new Child2();
oCh2.methodInChild2();
}
}

вот так
Код

class Child1 extends parent
{


public somemethod()
{

this.methodInChild2();
}
}


Как такое можно организовать?

 smile  smile 


--------------------
Мир огромен и мы только муравьи в нём! (С) formicha

PM MAIL WWW ICQ   Вверх
Andy_L20066
Дата 27.7.2009, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 10.3.2008

Репутация: нет
Всего: 1



Привет, вот что сейчас на уме, хотя неуверен или это то что надо: 
Код

public interface IParent {
    public void method();
    
    public void invokeAnotherChildsMethod(IParent child);
    
}


Код

public class Child1 implements IParent{
        
    public void method(){
        System.out.println("Child1");
    }

    public void invokeAnotherChildsMethod(IParent child) {
        child.method();
        
    }
    
}


Код

public class Child2 implements IParent{

    public void method() {
        System.out.println("Child 2");
        
    }

    public void invokeAnotherChildsMethod(IParent child) {
        child.method();
        
    }
}



PM MAIL ICQ   Вверх
MAXIMUS00
Дата 27.7.2009, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 4.2.2009

Репутация: нет
Всего: -1



посмотри в сторону вложенных/внутренних классов
PM MAIL   Вверх
Akeem
Дата 4.8.2009, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 14.7.2006
Где: Киев/Украина

Репутация: нет
Всего: 3



MAXIMUS00
Вложеные классы не подходят, потому что чайлды сожержать методы относящиеся к специфичной задачи (или области вызова), у них есть только некоторые общие функции (вынесеные в парента) .




Andy_L20066
Я думал об этои и даже начал было реализовывать подобное, но мне такое решиние не нравится. 
Во-первых, придется выносить кучу обьявлений методов в интерфейс (что не хотелось бы)
Во-вторых, не удобно.


В идеале хотелось бы увидеть такую структуру, чтобы при, например, вызове:
Код

ISomeInterface oConnAddaptor = new Parent();

oConnAddaptor.methodChild1();
oConnAddaptor.methodChild2();
...

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

П.С. если в паренте делать  инстанс с ISomeInterface тогда взаимодействие будет довольно простым.


--------------------
Мир огромен и мы только муравьи в нём! (С) formicha

PM MAIL WWW ICQ   Вверх
Akeem
Дата 5.8.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 14.7.2006
Где: Киев/Украина

Репутация: нет
Всего: 3



Есть подозрение что можно было бы реализовать такое с помощью какого-то рефлешина. 

Код

public class Parent
{
      public Parent getChild(String childName)
      {
            //some manipulation for get class by name
       }
}



//--------------------
public class Child1 extends Parent
{
     public child1Method()
     {
          Child2 cl2 = (Child2) this.getChild("Child2");
          cl2.child2Method();
      }
}



--------------------
Мир огромен и мы только муравьи в нём! (С) formicha

PM MAIL WWW ICQ   Вверх
fixxer
Дата 5.8.2009, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



А можно полюбопытствовать, а какая потребность привела к необходимости таких вызовов?


--------------------
user posted image
PM MAIL ICQ   Вверх
Akeem
Дата 6.8.2009, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 14.7.2006
Где: Киев/Украина

Репутация: нет
Всего: 3



fixxer
Организовываю функции в некий набор контейнеров (класифицируются по области применения). 

Это нужно для потроения библиотеки переиспользуемых функций  тестового фреймворка (я автоматизирую тестирование). Эта библиотека подключается к тесту и далее можно использовать функции из этой библиотеки обращаясь к "контейнеру". При етом функии могут юзать друг-друга. 

Цель для чего такое делается: отделить тесты, ядро запуска и переиспользуемые функции. 
В итоге должно получится что-то ввиде парадигмы MVC, где M -- ето библиотека переиспользуемых функций, V - тесты, C - менеджер запуска. 

Это сообщение отредактировал(а) Akeem - 6.8.2009, 08:46


--------------------
Мир огромен и мы только муравьи в нём! (С) formicha

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0970 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.