标签:多态 UI content log scan any mount amount 面向
设计思路
一开始我用java语言写了一个筛子sifter类,从设计思路上想还要啥自行车,哦不,筛子盅啊。直接在筛子上写个方法,从控制台读取输入的筛子数量,在筛子类里面直接发布GUI多美滋滋啊,后来一想,这并不是对筛子类的封装,一个类把所有的问题全部解决是很简单,在目前的软件规模上也是要比多写很多类要方便很多,但是如果今后所有软件都这么写,不仅别人看不懂造成很多麻烦,日后自己检查的时候也可能弄不懂调用顺序造成混乱。所以我决定规划出一个筛盅,进行逐层调用,理清结构才是最好的方法。也满足封装的要求,实现了差点没有的筛盅。
设计实现
假装有图片
1.sifter类为经过简化的筛子,其中里面只是单纯的筛子有数值int vlaue 和方法getValue()
2.sifterCup类为重新构造的筛盅,通过对筛子的调用和新的方法howMany()确定多少个筛子被使用
3.shfterFrame类为有余力瞎写的图形化界面,对sifterCup类进行调用实现筛子的动画,使筛盅更加丰富。
代码粘贴
1.sifter筛子类
1 import java.util.*; 2 3 4 5 public class Sifter{ 6 public int value = 0; 7 8 9 public static void getValue(Sifter S){ 10 S.value = (int)(1+Math.random()*6); 11 } 12 }
2.sifterCup筛盅类
1 import java.util.Scanner; 2 3 public class SifterCup { 4 int amount = 0; 5 int sum = 0; 6 7 8 public void howMany(){ 9 Sifter sifter = new Sifter(); 10 System.out.println("请输入想要使用筛子的数量:"); 11 Scanner sc = new Scanner(System.in); 12 amount = sc.nextInt(); 13 Sifter s1 = new Sifter(); 14 for(int i = 1; i <= amount; i = i+1){ 15 s1.getValue(s1); 16 System.out.println(s1.value); 17 sum = sum + s1.value; 18 } 19 System.out.println("最终您roll出的点数为:" + sum); 20 21 } 22 23 24
25 public static void main(String[] args){ 26 SifterCup cup1 = new SifterCup(); 27 cup1.howMany(); 28 } 29 30 }
3.sifterFrame筛子图形化界面
1 import javax.swing.JFrame; 2 import java.awt.Event; 3 import java.awt.event.ActionEvent; 4 import java.awt.event.ActionListener; 5 6 import javax.swing.ImageIcon; 7 import javax.swing.JButton; 8 import javax.swing.JFrame; 9 import javax.swing.JLabel; 10 import javax.swing.JPanel; 11 import javax.swing.JTextArea; 12 import javax.swing.border.EmptyBorder; 13 import javax.swing.event.CaretEvent; 14 import javax.swing.event.CaretListener; 15 16 public class SifterFrame extends JFrame{ 17 18 public void launch(){ 19 this.setTitle("筛子传奇"); 20 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 21 this.setExtendedState(JFrame.MAXIMIZED_BOTH); 22 this.setBounds(100,100,100,100); 23 this.setVisible(true); 24 } 25 26 public static void main(String[] args) { 27 28 SifterFrame sifterFrame = new SifterFrame(); 29 JPanel sifterPanel = new JPanel(); 30 JLabel sifterLabel = new JLabel(); 31 ImageIcon rotate = new ImageIcon("sifter.gif"); 32 sifterLabel.setIcon(rotate); 33 sifterPanel.add(sifterLabel); 34 sifterFrame.getContentPane().add(sifterPanel); 35 sifterPanel.setBorder(new EmptyBorder(5,5,5,5)); 36 sifterPanel.setLayout(null); 37 sifterFrame.launch(); 38 39 } 40 41 }
。。。死活插入不了图片,回去处理一下
小节
险些没有的筛盅功能的实现,确定了封装的实现。进一步的继承和多态有待于改进,新的GUI如果有精力就继续做,没有的话说不定就太监了。新的功能和更复杂的代码有待于学习,基本上这篇博客就是为了完成封装和面向对象而写。
标签:多态 UI content log scan any mount amount 面向
原文地址:http://www.cnblogs.com/dnmdxjp/p/7637505.html