JAVA程序员的OO思想

  写程序大概2年了,OO思想倒是思考过,也应用过,但是到如今没有系统的总结过,所以感觉理解的不够到位,想借此写成博客,今后不断的完善。


1.战略和战术

战略是指对军事全局的策划和指导,战术是指作战的方法。

比如我们的OO思想,它是属于战略层面的,这种思想将指导我们对整个项目的策划和设计

而比如我们选用什么工具、什么架构则是帮助做开发,这是一种战术

我们程序员而言,要注重学习这些战略层面的东西,他将是我们不变的财富,而战术

可能随着时间的推移不断的变化


2.什么是封装

在编写JAVA程序的时候,我们常常为了实现某个功能的代码块做成一个代码块,这样我们可以更方便的调用这个方法从而实现

某个功能。这就是方法的封装,这也是实现重用特点的途径。

当然我们用一个类,里面有很多属性,这也是一种封装。对于这种封装,我们要根据应用场景封装一些合适的属性。

同时提供get和set方法封装,而不是直接访问,这主要是出于安全性的考虑,通过方法访问,我们可以更加容易控制

访问的权限


3.设计应该注意什么

设计程序的时候,我们要通过测试驱动的模式看看写的是否合理,改造我们的设计,设计没有觉得的对于错,

过度的设计是一种罪过,任何设计都不可能一步到位,要多写而不要被过多的条条框框束缚


4.继承和多态


这里说的继承不仅包含子类继承超类,也包含类对接口的实现

在设计中,继承父类侧重于对父类属性的重用,而接口则是侧重与对行为方面

继承正是为核心内容多态做准备的,比如我们写开汽车、开飞机

、开船

syso(开+汽车name);

syso(开+飞机.name);

syso(开+船name);


那么我们可以简单的把汽车、飞机、船抽象为一个接口 交通工具

syso(开+交通工具.name);


这就是面向接口编程、这就是多态,它使得我们不需要过多的改变我们的程序,将来只需要追加我们新的实现即可

大大的提高了程序的可扩展性

5.面向对象和面向过程的对比

面向过程相比面向对象,并不关心对象本身,而关注点在于过程,并以方法体现,有序的排列而完成某件事情

例如学生早上起床、穿衣服、刷牙、洗脸

用面向过程的思想变成的话,那就是四个有序的方法组合在一起,而不会关心学生本身

面向对象则不然,从面向对象思想来考虑,首先眼里看到对象,然后有起床、穿衣服、刷牙、洗脸这几个对象的行为属性

这几个行为属性我认为就是柔和着面向过程的思想。


面向对象: 举个例子,盖一座大楼,你想到的是楼怎么盖,哪里要有柱子,哪里要有梁,哪里楼梯等等(这就是面向对象),至于柱子该怎么建,用什么建,方的圆的,等等,这就是面向过程。 
用面向对象思考问题更符合我们人的思考方式。 
所以面向对象里面掺和着面向过程的思想
其实我们人现实生活中都是在面向对象。比如:去饭店吃饭,你只要说明吃什么就可以了,有必要还了解这个菜是怎么做的,是哪里来的,怎么去种这个菜吗? 面向对象也可以说是从宏观方面思考问题,而面向过程可以说是从细节处思考问题。在面向对象中,也存在面向过程
面向对象思想去思考的话,这个人去吃饭,那么首先有这么一个人,人有一个属性,吃的菜,是一个数组,有一个行为属性eat();这是面向对象思想考虑到的。 至于怎么个吃法,
那么我们交给面向过程思想来处理,面向过程思想来处理细节,就是说eat方法里面具体怎么怎么做,这其实是一种面向过程思想,处理细节层面的东西。
所以,面向过程在存在于面向对象之中的


6.面向对象的好处

使用面向对象思想进行开发有以下优点:
1、易维护
采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。

我的理解:A对象有2000个属性,B对象有1890个属性,C对象有2300个属性,他们有1800个是共同的且不容易改变的,那么我们不妨构建一个超类

叫做ABC,那么A对象需要写200个属性,B需要写90个,C对象需要写500个

这样我们在维护A、B、C的时候,工作量就大大的减少了

2、质量高
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。


3、效率高
在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
4、易扩展
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。


7.面向对象和面向过程哪个好

面向对象面向过程只是思考方式不同而已,不能说哪个就好,哪个就不好。关键还是看适用的场合。
面向过程:分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象:则是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤
总的说来:面向过程的做法适用于小型系统的构建或者是不复杂系统的构建,
而面向对象的做法更加适用于构建大型系统或者是复杂的系统。而且面向过程是基础,所以不要认为面向对象不重要。

补充:实际上面向对象里面也柔和着面向过程思想,面向过程相比于面向对象,更加的简单直白一些,对于一些很小的系统而言,可能并
不需要面向对象那么多的好处,反而用面向过程来编程更换快捷一些。



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值