请问有没有啥好的面向对象的例子
泻药,说实话好久没考虑这些问题了,最近一直在做数据方面的东西,更愿意写一些面向过程的代码而不是面向对象。
转载自我自己的一个博客,将就着看吧:小铭的博客-面向对象的程序设计(初级篇)
面向对象归根结底解决的问题其实只有一个——即边界。
边界包括——代码边界、程序边界、系统边界和业务边界,很多人开发了很多年,依然设计不出一个漂亮的面向对象程序,其原因主要是因为你对业务的不了解导致的,你频繁的跳槽,频繁的换行业,刚刚理解了银行业务,却又向往着互联网去做C2C,然后又觉得做金融比较挣钱,又去做金融产品,这导致你对某一行的理解不够深入,所以你无法设计出一个相对完美的面向对象——因为你不知道面向什么对象。
还有一种次要原因就是,虽然你在某个行业混迹多年,但是在平时的开发中,一直处于有活就做,没活休息的状态,一个程序,别人说是什么样,你就做成生么样,不去好好想一想程序其实应该长什么样,一辆车上能不能放飞机引擎?当然能,但是这样做合适不合适?没人知道,在某些特定条件下,车上放飞机引擎也没什么问题。
为什么很多没有经历过专业培训的人,能够迅速的掌握开发技巧并能够开发出准专业的软件?那是因为他们的目标很清晰,我就要做这个东西,其他的我根本不关心,我前一段时间在研究CTP接口,加入了一个群,群里基本上没有一个是专职程序猿,全都是投行或者金融行业的交易员,他们利用闲暇时间开发出来的自动化交易软件实用到你根本不敢相信他们只是交易员。
在理解这些之前,我们先一步一步的来把面向对象从头过一遍。
暗黑3里的一把武器:
用代码描述它是这样的:import lombok.Data;/** * 武器 * * @author x\u0026#39;ming * @version 1.0.0 * @since Created by Administrator on 2016/12/1. */@Datapublic class Weapon { private String name;//名字 private Float maxDamage;//最大伤害(随机) private Float minDamage;//最小伤害(随机) private int wielding;//持有类型(1. 双持 2. 单持) private int type;//武器类型(1. 法杖 2. 钝器 3.……) private Float attackSpeed;//攻速 private Long price;//售价(游戏中的价格都是整型) private Integer level;//物品等级 private int heroType;//英雄限定(1. 全都可用 2. 野蛮人 3. 狩魔猎人 4. 武僧……) private Integer minLevel;//使用这件武器所需的人物等级 //Getter Setter方法在这里用lombok省略了} 【请问有没有啥好的面向对象的例子】 你拿着它,走过僵尸堆,开始了序章……
一般的白色武器大概就这么多属性,可能会有buff,但是我记不清了,这就是最基本的一个对象,也是面向对象的最基本的一个概念:封装,即将一件物品的描述封装在一个类里面用来描述这个物品、事物。
后来你打到一把蓝色品质的武器,感觉特牛叉,你抓紧把它换上。
它用代码描述是这样子的:/** * 蓝色品质的武器,继承自白色武器 * * @author x\u0026#39;ming * @version 1.0.0 * @since Created by Administrator on 2016/12/1. */public class BlueWeapon extends Weapon { private String preName;//蓝色开始有了前缀名称的概念 private String description;//蓝色品质的装备开始有了随机的描述信息 private Property mainProperties = new Property;//蓝色最多可以有3个随机属性 private Gem gems = new Gem;//蓝色最多可以镶入1颗宝石 public String getPreName() { return preName; } public void setPreName(String preName) { this.preName = preName; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Property getMainProperties() { return mainProperties; } public void setMainProperties(Property mainProperties) throws Exception { if (mainProperties.length \u0026gt; 3) { throw new Exception("不支持超过3个魔法属性"); } this.mainProperties = mainProperties; } public Gem getGems() { return gems; } public void setGems(Gem gems) throws Exception { if (gems.length \u0026gt; 1) { throw new Exception("不支持嵌入超过1个宝石"); } this.gems = gems; }}
推荐阅读
- 银行高管的薪酬结构图表最新的,请问在哪里可以收集
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 趣头条|你我皆风华正茂,拥有广汽三菱奕歌的日子是美好的
- 有啥方法,网站,项目可以自己练习计算广告学
- 在上海陆家嘴附近工作,请问去哪边租房会比较好
- 坐标合肥,请问在哪里能捕捉到程序员这种生物他们大都出现在哪里呢
- 孕妇到了预产期,小孩还没有入盆,请问是该等下去还是直接剖腹产
- 言论自由|
- 100W——150W有啥好的车
- 想做手机网游代充,请问要去哪里找货源
