语言:Java 使用软件:Android Studio程序:纸牌比较大小 预计阅读时长:3min
问题发现:
在Java学习的过程中,常常根据要求直接打出一串长长的代码,虽然达到了目的,但是老师看了后,一句轻飘飘的“这是在面向过程。”给我当头一棒,很纳闷“我写了类和对象啊!”“不是写了类和对象就是面向过程。”好吧,又是当头一棒。。。
在Java学习过程中你是否也面临这样的问题,如果是的话,请继续往下读吧~说不定能帮助你解决哦~如果你有更好的方法,欢迎来和我讨论~
所以,到底什么是面向对象,又怎样才能在编程时做到面向对象?
以【构建一副扑克牌,在一副牌中抽出俩张牌比大小,点数相同比花色】该程序为例
面向过程编程:
(本文暂不深入)通过将程序拆分成小的步骤,用方法(函数)一步一步完成程序功能
1-写一副牌的函数
2-抽俩张牌的函数
3-比较大小的函数:(1)比较点数--->点数相同--->(2)比较花色
面向对象编程:
一提到面向对象时,我们往往只注意到面向对象的三个特性:封装,多态,继承。却忽略面向对象编程的开发思维。对此,我总结出在编程中构建面向对象的步骤:
1.找到程序中需要设计的对象(该纸牌程序中即为纸牌)并进行细化(纸牌--点数+花色),
和拓展(管理纸牌的工具:用来随机抽出俩张牌)
2.用UML图将步骤1中涉及到的对象写出来
如图:
*这一步是关键
可以使用Processon辅助完成。
Tips:Java的类中应包含属性和方法,因此每一个类对应的每一个框中也应包含这俩项。
3.根据架构写程序
*顺序为从小到大写
接下来我们一起一步一步完成该程序。
纸牌点数:
【思路:纸牌点数为"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A",无法直接比较大小,故利用一个标签(tag)辅助完成大小的比较】
对应程序:
【分析:构造函数初始化对象】
纸牌花色:
【思路同上】
对应程序:
纸牌管理器:
【思路:这一步完成纸牌的构建和洗牌】
【分析:在这一步我们要把花色(包含我们刚刚写的PokerSuit,并使用数组)和点数(包含我们刚刚写的PokerNumber,并使用数组)拼在一起(俩个循环嵌套遍历数组)并把它装进一副完整的牌中(集合),并完成洗牌(集合的方法)和抽牌(自定义函数,通过索引值随机抽取,并移除该纸牌,保证是俩张不相同的牌)】
对应程序:
纸牌:
【思路:将抽取的纸牌比大小】
对应程序:
OK,现在我们已经完成所有对象的创建了
现在来编写测试类主函数运行该程序吧!
运行结果如图:
点数不同时:
点数相同时:
快一起动手写吧~