powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Структура классов и их взаимосвязь
14 сообщений из 39, страница 2 из 2
Структура классов и их взаимосвязь
    #33914266
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz6) Подумать почему

Код: plaintext
Ball redBall =  new  Ball( 0 ,  0 , w, h, ( int )((w- 20 )*Math.random()), h- 20 ,  20 ,  6 ,  6 , Color.red)

лучше чем

Код: plaintext
1.
2.
3.
4.
 class  RedBall  extends  Ball {
    RedBall( int  w,  int  h) {
	 super ( 0 ,  0 , w, h, ( int )((w- 20 )*Math.random()), h- 20 ,  20 ,  6 ,  6 , Color.red);
    }
}


Хотя нет. Это ещё спорный вопрос. Можно ещё фабрику прикрутить и флейм по этому поводу развести. Так что в контексте этого примера может быть и нормально.
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33915808
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JozicНу и наследование шарика от таймерТаск из ноу гуд (вери мач).

Сейчас у меня получается такая ситуация. Шар имеет возможность двигаться. Его дети, эту возможность приобретают от него и добавляют некую функциональность при движении (преопределение метода и вызов super.run()).

Как тогда, лучше это реализуется?
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33915965
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz4) Изучить проблемы наследования. Научится применять делегирование. Понять что из них и когда нужно использовать.


Где можно почитать про делегирование?
Правильно ли я понимаю, что interface и implemets - это оно и есть?
TimerTask не является интрефейсом. Как, тогда, правельно его приминить?
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33916446
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое делегирование разобрался.

Как решить следующую задачу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 class  class1  extends  TimerTask {
      //...
   class1 () {
      timer= new  Timer();
      timer.schedule( this , ...);
   }
    public   void  run () {
      //.. do somthing
   }
}

 class  class2  extends  class1 {
    //...
     public   void  run() {
        super .run();
       //...do somthing
   }
}

Необходимо уйти от наследования TimerTask и иметь возможность расширить метод run();
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33916580
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhЧто такое делегирование разобрался.

Как решить следующую задачу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 class  class1  extends  TimerTask {
      //...
   class1 () {
      timer= new  Timer();
      timer.schedule( this , ...);
   }
    public   void  run () {
      //.. do somthing
   }
}

 class  class2  extends  class1 {
    //...
     public   void  run() {
        super .run();
       //...do somthing
   }
}

Необходимо уйти от наследования TimerTask и иметь возможность расширить метод run();

Что-то типа такого.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 class  BallsTimerTask  extends  TimerTask {
   BallsCollision ballsCollision;
      //...
   BallsTimerTask () {
      timer= new  Timer();
      timer.schedule( this , ...);
   }
    public   void  run () {
      //.. do somthing
      ballsCollision.process();
   }
}

Можно попробовать и BallsCollision extends TimerTask, по-моему нормально будет.

Для начала было бы не плохо задуматся какой класс какие цели преследует. И строго ограничить назначение классов. Это и называется инкапсуляция.
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33916759
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЧто-то типа такого.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 class  BallsTimerTask  extends  TimerTask {
   BallsCollision ballsCollision;
      //...
   BallsTimerTask () {
      timer= new  Timer();
      timer.schedule( this , ...);
   }
    public   void  run () {
      //.. do somthing
      ballsCollision.process();
   }
}

Можно попробовать и BallsCollision extends TimerTask, по-моему нормально будет.

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

Это не то, что я хочу.

Я хочу инкапсулировать в один класс, направление движеня и само движение. Сейчас это класс Ball. Его дети должны уметь добавлять логику в движение в соответствии с их особенностями.
Мне кажется, что такой подход более удобен и корректен.
Т.о. получается, что класс Ball должен иметь таймер, а наследники его должны уметь его дополнять.
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33916778
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Инкапсулировать в один класс сам шар и движение - я имею ввиду, что он должен этому соответствовать, что не означает, что хочу, чтобы это решалось одним классом.
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33916789
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh
Я хочу инкапсулировать в один класс, направление движеня и само движение.

8) "Инкапсулировать" не есть "запихнуть всё". А запихнуть что-то конкретное.
Тут надо вернутся к MVC. Направление это Model, а логика движения это Controller. Конечно никто не запрещает это все в одном классе хранить. Но есть практика и убедительные доводы в пользу этого подхода.
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33916811
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz8) "Инкапсулировать" не есть "запихнуть всё". А запихнуть что-то конкретное.
Тут надо вернутся к MVC. Направление это Model, а логика движения это Controller. Конечно никто не запрещает это все в одном классе хранить. Но есть практика и убедительные доводы в пользу этого подхода.

Как тогда это представлять? Есть набор классов шаров и класс контроллер, который умеет их двигать?
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33916834
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 class   interface  BallMotion {
    public   void  run();
}

 class  Ball implemets  BallController {
}

 class  RedBall  extends  Ball {
}

 class  BallController  extends  TimerTask {
   BallMotion ball;
    public   void  run() {
       ball.run();
   }
}

Что-то типа такого?

Надеюсь смысл понятен. Такие структуры не писал, поэтому, где-то может быть ошибка. Если смысл правельный, прошу поправить.
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33916855
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается надо создавать шар:

Код: plaintext
1.
2.
3.
4.
5.
6.
 new  BallController(
    new  Ball(
       //parametres
   )
)


Это хорошее решение?
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33916864
wolf_roma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю насколько это правильно.
Код: plaintext
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.
34.
 public   class  Ball {
	BallModel _model;
	Color _color;
	 public   void  paint(){
	
	}
}

 class  BallModel{
	 protected  TimerTask _task;
	 protected   int  _x;
	 public  BallModel(){
		_task= new  TimerTask(){
			 public   void  run() {
				count();
			}
		};
	}
	
	 public   int  getX(){
		 return  _x;
	}
	 public   void  count() {//protected?
		//Do something
		_x++;
	}
}

 class  BallCollisions  extends  BallModel{
	 public   void  count() {
		//Do something
		_x+= 2 ;
	}
}
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33917165
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolf_romaНе знаю насколько это правильно.

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

Но так работает, и программа выглядит проще, т.к. в данном случае нет повода строить по MVC
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33917847
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhНо так работает, и программа выглядит проще, т.к. в данном случае нет повода строить по MVC

Конечно, чем ближе к MVC , тем проще выглядит. А если ты про то что исходная модель хорошо работает.... Думаю ты переутомился, ИМХО всё должно быть гораздо проще. По делу:
Слишком уж много логики в бедном шарике (даже моторчик встроен) И вообще надо сокращать. Простота кода залог его расширяемости.
Я бы убрал область движений(странно каждый шар в своей области, по 4 координаты), зачем какие-то movingX да ещё интовые?? Вполне достаточно скорости по проекциям, а я бы вообще сделал 1скорость и угол(направление). Думаю другие классы тоже можно упростить.
Ну конечно правильно было бы оставить в шаре только сеттергеттеры.

Мне нравится такая модель:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 class   interface  BallMotion {
    public   void  go(); //run у меня ассоциируется с потоками
}
 class  Ball implemets  BallMotion {
}
 class  RedBall  extends  Ball {
}
 class  BallController  extends  TimerTask  implements  Runnable {
   RedBall ball;
    public   void  run() {
      ball.go();
      checkCollisions()
   }
    private   void  checkCollisions (){}
}
 class  Applet  extends  Applet{
    public   void  init(){
   BallController bc;
   bc.sleep(n);
}
    public   void  paint(){}
}
Может даже лучше по MVC GO убрать в конроллер а то какой-то странный интерфейс с 1 методом
Интересно, а что в TimerTask, помоему он и есть контроллер,нужно ли его расширять.
А в каких направлениях планируются расширения??
если будет много шариков, надо бы наладить делегирование
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Структура классов и их взаимосвязь
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]