powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Структура классов и их взаимосвязь
25 сообщений из 39, страница 1 из 2
Структура классов и их взаимосвязь
    #33913818
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, написал первую программку (апплет) на жабе. Интересует, собственно, на сколько она правельная с точки зрения джавы по сабжу, и что надо изменить. Так что ругайте, как только можно.

По комментариям наверное, понятно, что к чему

Код: 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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
 import  java.awt.*;
 import  java.applet.*;
 import  java.awt.event.*;
 import  java.util.*;

/*
			    Класс шаров
*/
 class  Ball  extends  TimerTask {
     protected   int  x,y;//координаты шара (левый верхний угол квадрата шара) в координатах всего апплета
     protected   int  d;//диаметр шара
     protected   int  stepX, stepY;//скрорости шара по координатам
     protected   int  aX, aY, aW, aH;//область для движений шара
     protected  Color c;//цвет шара
     private   int  movingX= 0 ;//есть ли движение в настоящий момент
     private   int  movingY= 0 ;//есть ли движение в настоящий момент
     private  Timer timer;
    
     public   int  getX() { return  x;}//возврат координат шара
     public   int  getY() { return  y;}
     public   int  getD() { return  d;}//возврат диаметра шара
     public  Color getC() { return  c;}
     public   void  setX( int  _x) {x=_x;}//установка координат шара
     public   void  setY( int  _y) {y=_y;}
     public   void  setStepX( int  _x) {stepX=_x;}//установка скорости шара
     public   void  setStepY( int  _y) {stepY=_y;}
     public   void  stepXleft() {	 if  (x-stepX>=aX) x-=stepX;       else  x=aX;     }//принудительно двинуть шар куда требуется
     public   void  stepXright() {	 if  (x+stepX+d<=aX+aW) x+=stepX;  else  x=aX+aW-d;}
     public   void  stepYup() {	 if  (y-stepY>=aY) y-=stepY;       else  y=aY;     }
     public   void  stepYdown() {	 if  (y+stepY+d<=aY+aH) y+=stepY;  else  y=aY+aH-d;}
     public   void  markMovingXRight() {movingX= 1 ;}//отметить направление текущего перемещения шара
     public   void  markMovingXLeft() {movingX=- 1 ;}
     public   void  markMovingXNull() {movingX= 0 ;}
     public   void  markMovingYDown() {movingY= 1 ;}
     public   void  markMovingYUp() {movingY=- 1 ;}
     public   void  markMovingYNull() {movingY= 0 ;}
     public   void  run() {//передвинуть шар в соответствии с направлением текущего движения шара
	 switch  (movingX) {
	     case   1 : stepXright();  break ;
	     case  - 1 : stepXleft();  break ;
	}
	 switch  (movingY) {
	     case   1 : stepYdown();  break ;
	     case  - 1 : stepYup();  break ;
	}
    }
     public   void  paint(Graphics g) {//нарисовать шар
	g.setColor(c);
	g.fillOval(x,y,d,d);
    }
    Ball ( int  _aX,  int  _aY,  int  _aW,  int  _aH,  int  _x,  int  _y,  int  _d,  int  _stepX,  int  _stepY, Color _c) {
	aX=_aX; aY=_aY; aW=_aW; aH=_aH; x=_x; y=_y; d=_d; stepX=_stepX; stepY=_stepY; c=_c;
	timer =  new  Timer();
	timer.schedule( this ,  0 ,  50 );
    }
}

/*
		    Красный шар. Шар пользователя
		    (находится под влиянение пользователя, поэтому логики не заложено, 
		     только начальные условия)
*/

//Класс шара с определенным движением
 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);
    }
}

//Класс шара с умением сталкиваться
 class  RedBallPlay  extends  RedBall {
     private  BallCollisions ballCollisions;
    RedBallPlay( int  w,  int  h, BallCollisions _ballCollisions) {
	 super (w, h);
	ballCollisions = _ballCollisions;
	ballCollisions.setRedBall( this );
    };
     public   void  run() {
	 super .run();
	ballCollisions.process();
    }
}

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

//Класс шара с определенным движением
 class  BlackBall  extends  Ball {
     private   int  breaked= 0 ;
     private   int  newX() {	 return  ( int )((aW-d)*Math.random())+aX+ 1 ;    }//сочинить новые координаты шара
     private   int  newY() {	 return  aY+ 1 ;				    }
     private   int  newStepX() {	 return  ( int )( 5 *Math.random())+ 5 ;	    }//сочинить новую скорость шара
     private   int  newStepY() {	 return  ( int )( 5 *Math.random())+ 5 ;	    }
     private   int  newMovingX() {	 return  (( int )( 10 *Math.random()))% 3 - 1 ;	    }//сочинить новое направление шара по гор. оси
    BlackBall( int  w,  int  h) {
	 super ( 0 ,  0 , w, h, w/ 2 ,  1 ,  20 ,  2 ,  2 , Color.black);
	markMovingXRight();
	markMovingYDown();
    }
     public   int  breakBall() {
	setX(newX());
	setY(newY());
	setStepX(newStepX());
	setStepY(newStepY());
	 switch (newMovingX()) {
	     case   1 :  markMovingXRight(); break ;
	     case  - 1 : markMovingXLeft(); break ;
	     case   0 :  markMovingXNull(); break ;
	}
	 return  ++breaked;//Возвращает количество сбросов шара
    }
     public   int  getBreaked() { return  breaked;}
     public   void  run() {
	 super .run();
	
	//Расширение функциональности движения
	    //Отражение от стен
	 if  (x==aX || x+d==aX+aW) {//Здесь мы еще сделаем отражение от стен
	     if  (x==aX) {//Левая стена
		markMovingXRight();
	    }  else  {//Правая стена
		markMovingXLeft();
	    }
	}
	    //Сброс шара на начальное состояние, если он достиг нижней границы
	 if  (y+d==aY+aH) {
	    breakBall();
	}
    }
}

//Класс шара с умением сталкиваться
 class  BlackBallPlay  extends  BlackBall {
    BallCollisions ballCollisions;
    BlackBallPlay( int  w,  int  h, BallCollisions _ballCollisions) {
	 super (w, h);
	ballCollisions = _ballCollisions;
	ballCollisions.setBlackBall( this );
    };
     public   void  run() {
	 super .run();
	ballCollisions.process();
    }
}

/*
		Класс столкновений шаров
*/

 class  BallCollisions {
     private  RedBall redBall;
     private   boolean  redBallSetted=false;
     private  BlackBall blackBall;
     private   boolean  blackBallSetted=false;
     private   boolean  ready=false;
     private   int  collisions= 0 ;
     public   void  setRedBall(RedBall _redBall) {
	redBall=_redBall;
	redBallSetted=true;
	 if  (blackBallSetted) ready=true;
    }
     public   void  setBlackBall(BlackBall _blackBall) {
	blackBall=_blackBall;
	blackBallSetted=true;
	 if  (redBallSetted) ready=true;
    }
     public   boolean  process() {//было ли столкновение
	 if  (ready) {
	     if  ((( int ) (Math.sqrt((redBall.getX()-blackBall.getX())*(redBall.getX()-blackBall.getX())+
			      (redBall.getY()-blackBall.getY())*(redBall.getY()-blackBall.getY()))))<=redBall.getD()) {
		collisions++;
		blackBall.breakBall();
		 return  true;
	    }
	}
	 return  false;
    }
     public   int  getCollisions() { return  collisions;}
}

/*
		Классы системы
*/
    //Нажатия клавиш
 class  UserKeyCommands  implements  KeyListener {
     private   boolean  down_pressed=false;
     private   boolean  up_pressed=false;
     private   boolean  left_pressed=false;
     private   boolean  right_pressed=false;
     private  RedBall redBall;
    UserKeyCommands(RedBall _redBall) {
	redBall = _redBall;
    }
    
    //Установка куда пользователь направил шар
     public   void  keyPressed(KeyEvent k_e) {
	 switch  (k_e.getKeyCode()) {
	     case  KeyEvent.VK_DOWN:		redBall.markMovingYDown();	down_pressed=true;	 break ;
	     case  KeyEvent.VK_UP:		redBall.markMovingYUp();	up_pressed=true;	 break ;
	     case  KeyEvent.VK_LEFT:		redBall.markMovingXLeft();	left_pressed=true;	 break ;
	     case  KeyEvent.VK_RIGHT:		redBall.markMovingXRight();	right_pressed=true;	 break ;
	}
    }
     public   void  keyReleased(KeyEvent k_e) {
	 switch  (k_e.getKeyCode()) {
	     case  KeyEvent.VK_DOWN:
		down_pressed=false;
		 if  (up_pressed)
		    redBall.markMovingYUp();
		 else 
		    redBall.markMovingYNull();
		 break ;
	     case  KeyEvent.VK_UP:
		up_pressed=false;
		 if  (down_pressed)
		    redBall.markMovingYDown();
		 else 
		    redBall.markMovingYNull();
		 break ;
	     case  KeyEvent.VK_LEFT:
		left_pressed=false;
		 if  (right_pressed)
		    redBall.markMovingXRight();
		 else 
		    redBall.markMovingXNull();
		 break ;
	     case  KeyEvent.VK_RIGHT:
		right_pressed=false;
		 if  (left_pressed)
		    redBall.markMovingXLeft();
		 else 
		    redBall.markMovingXNull();
		 break ;
	}
    }
     public   void  keyTyped(KeyEvent k_e) {}
}

 class  Painter  extends  TimerTask {
     private  Timer timer;
     private  BlackBall blackBall;
     private  BallCollisions ballCollisions;
     private  ShootDownBalls shootDownBalls;
    Painter(ShootDownBalls _shootDownBalls, BlackBall _blackBall, BallCollisions _ballCollisions) {
	shootDownBalls=_shootDownBalls;
	blackBall = _blackBall;
	ballCollisions = _ballCollisions;
	
	//Запускаем себя
	timer =  new  Timer();
	timer.schedule( this ,  0 ,  50 );
    }
     public   void  run() {
	//Двигаем шары и рисуем
	shootDownBalls.repaint();
	//Обнавляем статус
	shootDownBalls.updateStatus(ballCollisions.getCollisions(), blackBall.getBreaked()-ballCollisions.getCollisions());
    }
}

 public   class  ShootDownBalls  extends  Applet {
     private  BallCollisions ballCollisions;
     private  RedBallPlay redBallPlay;//красный шар двигается по таймеру. направляет пользователь
     private  BlackBallPlay blackBallPlay;//черный шар двигается по таймеру. направляет собственный автомат
     private  UserKeyCommands userKeyCommands;//сам пользователь, для направления красного шара
     private  Painter painter;//перерисовка и анализ ситуации на поле
     public   void  init() {
	//Класс анализа столкновений
	ballCollisions= new  BallCollisions();
	//Создаем шары (они уже начали играть)
	redBallPlay= new  RedBallPlay(getSize().width, getSize().height, ballCollisions);
	blackBallPlay= new  BlackBallPlay(getSize().width, getSize().height, ballCollisions);
	//Создаем проприсовку (и запускаем)
	painter= new  Painter( this , blackBallPlay, ballCollisions);
	//Запускаем команды юзера
	userKeyCommands =  new  UserKeyCommands(redBallPlay);
	addKeyListener(userKeyCommands);

	//Пытаемся получить фокус, хотя это не удается
	requestFocus();
    }
    
     public   void  paint(Graphics g) {
	redBallPlay.paint(g);
	blackBallPlay.paint(g);
    }
    
     public   void  updateStatus( int  score,  int  lose) {
	 if  (score== 0 )	    showStatus("Hit it!");
	 else   if  (score== 1 )  showStatus("Great! You have hit it!");
	 else 		    showStatus("You have shot down "+score+" balls and "+lose+" lost.");
    }
}


...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33913887
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторсобственно, на сколько она правельная с точки зрения джавы
код вообще нечитабелный
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33913897
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
многа букф. низачет.
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33913904
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоН авторсобственно, на сколько она правельная с точки зрения джавы
код вообще нечитабелный

Если не трудно, приведите пару строк примера
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33913938
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
си чувствуется за версту :)
что бросилось в глаза: Ball extends TimerTask. нехорошо: шар это просто объект, он не должен инкапсулировать логику по перемещению; лучше выделить его как бин. Классы типа RedBall вообще лишние (цвет это только атрибут, зачем здесь класс не ясно). дальше не вникал.
по оформлению кода: тынц (хотя лично мне нравится не все что там рекомендуют)
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33913945
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 public   void  updateStatus( int  score,  int  lose) {
	 if  (score== 0 ){	    
             showStatus("Hit it!");
         }
	 else  {
               if  (score== 1 ){  
                 showStatus("Great! You have hit it!");
              }
	       else {
		    showStatus("You have shot down "+score+" balls and "+lose+" lost.");
                   }
 }
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
//принудительно двинуть шар куда требуется
 public   void  stepXleft() {	
 if  (x-stepX >= aX){ 
   x-=stepX;      
}
 else  {
      x=aX;
      }     
}
Советую в JBuider'e программировать какое-то время, хорошо приучает к правильному стилю.
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33913959
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot ТимоН]
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 public   void  updateStatus( int  score,  int  lose) {
	 if  (score== 0 ){	    
             showStatus("Hit it!");
         }
	 else  {
               if  (score== 1 ){  
                 showStatus("Great! You have hit it!");
              }
	       else {
		    showStatus("You have shot down "+score+" balls and "+lose+" lost.");
                   }
 }
ггы.
1. не хватает закрывающей скобки.
2. табуляцию юзать - это самый большой пипец. должны быть пробелы.
3. мне вот так больше нравится
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
     public   void  updateStatus( int  score,  int  lose)
    {
         if  (score ==  0 )
        {
            showStatus("Hit it!");
        }
         else 
        {
             if  (score ==  1 )
            {
                showStatus("Great! You have hit it!");
            }
             else 
            {
                showStatus("You have shot down " + score + " balls and " + lose + " lost.");
            }
        }
    }
имхо, канешна.
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33913969
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоН
Советую в JBuider'e программировать какое-то время, хорошо приучает к правильному стилю.
убей себя
автор
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
   public   void  updateStatus( int  score,  int  lose)
    {
         if  (score ==  0 )
        {
            showStatus("Hit it!");
        }
         else 
        {
             if  (score ==  1 )
            {
                showStatus("Great! You have hit it!");
            }
             else 
            {
                showStatus("You have shot down " + score + " balls and " + lose + " lost.");
            }
        }
    }


ужоснах
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33913981
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторужоснах ваши аргументы...
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33913985
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоН авторужоснах ваши аргументы...
про "убей себя". билдер ничему хорошему не научит. хорошему научит книжка + опыт.
про "ужоснах". это имхо. ничего личного. но вариант акх мне больше нравится.
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33913997
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deady но вариант акх мне больше нравится.
ошибся, ваш вариант, а не Akh
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33913999
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
про "убей себя". билдер ничему хорошему не научит. хорошему научит книжка + опыт.
про "ужоснах". это имхо. ничего личного. но вариант акх мне больше нравится.
про "убей себя"
Ниводной IDE, кроме JBuilder'a, невидел такой жеской привязке к стилю, если захочешь, то несможешь некрасиво писать. В ИДЕЕ только Jalopy, им как-то неудобно польоваться.
ужоснах
Незнаю я уже привык, мне кажется вполне читабельно, да и количество строк сокразается чуть ли не в двое.
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33914004
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в идее ctrl+alt+L рулит
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33914016
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недобно же каждый раз рефрешить... имхо
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33914017
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоН автор
про "убей себя". билдер ничему хорошему не научит. хорошему научит книжка + опыт.
про "ужоснах". это имхо. ничего личного. но вариант акх мне больше нравится.
про "убей себя"
Ниводной IDE, кроме JBuilder'a, невидел такой жеской привязке к стилю, если захочешь, то несможешь некрасиво писать. В ИДЕЕ только Jalopy, им как-то неудобно польоваться.
вы просто не умеете ее готовить (ц)
ТимоН
ужоснах
Незнаю я уже привык, мне кажется вполне читабельно, да и количество строк сокразается чуть ли не в двое.
для чего? чтобы глаза ломать? к тому же код фолдинг есть.
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33914032
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторвы просто не умеете ее готовить (ц)
Нестану спорить, недавно на ИДЕЮ пересел с Билдера, всетаки он мне больше нравится...
автордля чего? чтобы глаза ломать? к тому же код фолдинг есть.
Опять же для лучшей читабельности, меньше строк на "неважный" код... Я думаю это спорный вопрос, каждому свое, хотя некоторым людям хочется руки оторвать...
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33914092
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timmси чувствуется за версту :)
что бросилось в глаза: Ball extends TimerTask. нехорошо: шар это просто объект, он не должен инкапсулировать логику по перемещению; лучше выделить его как бин. Классы типа RedBall вообще лишние (цвет это только атрибут, зачем здесь класс не ясно). дальше не вникал.
по оформлению кода: тынц (хотя лично мне нравится не все что там рекомендуют)

1. TimerTask наследуется для того, чтобы этот шар двигался по минимальной логике (т.е. направления и стенки). Сама логика заложена в его детях RedBall и BlackBall. В первом случае она никакая, во втором случае она выкидывает шар на новую позицию, когда он достиг нижнего края и отображает его от стенок. Далее дети добавляют свойство сталкиваться друг с другом по средству класса BallCollisions.

2. Что такое выделить как бин?

3. Поэтому посчитал, что классы типа RedBall не лишние.

4. К тому же наличие такой последовательной низходящей позволяет функциональность можно легко расширять.

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

Понятно, посмотрю, может у большинства и лучше. Надо пробовать.

Еще комментарии будут?
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33914112
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhПо стилю кода. Мой компактный
Еще комментарии будут?

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

Тогда на выходных не разбирайтесь, давайте продолжим в понедельник.

Серьезно:
Для этого я его и предоставил. Мне полезно, так как это первая программа на джаве, тем кто разбирается, тоже может быть интересно, так как есть поле для рассуждений.

В понедельник, для пробы, приведу код к нормальному виду.
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33914159
Jozic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скобки это конечно дела вкуса (хотя такую компактность очень не люблю (лично я)), но вот читабельность методов это святое :)
Akh
Код: plaintext
 public   int  getD() { return  d;}//возврат диаметра шара
Дядька Фаулер (рекомендую почитать на досуге) когдато сказал (или спер у кого эту фразу :) не знаю) что писать код нужно так, чтобы комментарии были не нужны :). Вот как раз этот пример. Думаецца что название метода getDiameter() сказал бы все за себя.
Ну и наследование шарика от таймерТаск из ноу гуд (вери мач). И опять соглашусь с Timm 'ом, что цвет не есть причина для создания нового класса.
Все вышесказанное имхо :)
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33914202
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое важное: критиковать реализацию без требований есть беспредметный треп :).
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33914219
Jozic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimmСамое важное: критиковать реализацию без требований есть беспредметный треп :).Требование было одно :)) AkhТак что ругайте, как только можно.
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33914239
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Найти толковый Coding Convension. Можно посмотреть тот который на сайте Sun. Ещё есть хорошая глава в книжке Горький Вкус Java.

2) Научится именовать классы, переменные и методы. Код должен читаться без коментариев.
Если x,y - координаты шара, то назвать их. locationX, locationY. А ещё лучше заменить классом Point.
Step это не скорость.
color понятнее чем c.
Для флагов есть boolean.

3) Следующий шаг задуматься над MVC.

4) Изучить проблемы наследования. Научится применять делегирование. Понять что из них и когда нужно использовать.

5) Прочитать GoF. Читая каждый паттерн задуматся над тем нужно ли его применить в твоем коде.
...
Рейтинг: 0 / 0
Структура классов и их взаимосвязь
    #33914262
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
6) Подумать почему

Код: 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);
    }
}

7) Убрать все магические числа. То есть что-то типа:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 final   static  RED_BALL_INITIAL_LOCATION_X =  20 ;
 final   static  RED_BALL_INITIAL_LOCATION_Y =  20 ;
 final   static  RED_BALL_INITIAL_VELOCITY_X =  6 ;
 final   static  RED_BALL_INITIAL_VELOCITY_Y =  6 ;

 int  randomSize = ( int )((w -  20 ) * Math.random());

Ball redBall =  new  Ball( 0 ,  0 , 
                             w, h, 
                             randomSize,
                             h-RED_BALL_INITIAL_LOCATION_X, RED_BALL_INITIAL_LOCATION_Y, 
                             RED_BALL_INITIAL_VELOCITY_X,  RED_BALL_INITIAL_VELOCITY_Y, 
                             Color.red)

Я конечно немного напутал в логике, но надеюсь основные идеи ясны?
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Структура классов и их взаимосвязь
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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