面向对象技术优点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象技术的优点
使用面向对象思想进行开发有以下优点:
1、易维护
采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
2、质量高在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。
3、效率高
在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。
使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
4、易扩展
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。
首先,对象的引入方便了在软件虚拟世界中模拟现实世界。
现实世界是由很多独立的抽象或具体物体组成的,比如房子、汽车、空调、书等等。
为了构建更真实的虚拟世界,在软件中需要存在用于表达类似现实物体的编程元素,这正是引入对象概念的意义所在。
以对象为设计中心,迫使设计者在关注程序所需实现功能的同时不至于忘记通过抽象去塑造概念,以便用对象表达之。
由于抽象获得的对象有助于隐藏复杂度,这在一定程度上简化了通过对象表达和理解软件虚拟世界的难度。
也由于对象的存在,使得设计更加的生动和具有更强的自我解释能力。
从软件设计者的角度:如果希望塑造的对象在现实生活中存在,这有助于他借助现实引导自己的设计,他也应尽量将虚拟世界中对象的行为塑造成与现实世界的相近;如果希望塑造的对象在现实生活中并不存在,他只能借助对象的行为和状态去塑造对象(的概念),此时应注意行为、状态与概念间关系的合理性,否则所塑造的对象将令人费解。
从软件维护者的角度:如果对象在现实生活中存在,这有助于他借助生活经验快速掌握设计;如果在现实中找不到对象的影子,他仍可以通过对象的行为掌握对象的概念,这同样有助于他更方便地维护软件。
其次,面象对象设计由于强调以对象为中心,因而具备更强的封装能力。
在大多支持面向对象设计的编程语言中,更强的封装能力除了意味着更具信息隐藏能力外,还使得封装的边界既明显又更不易被突破,这有助于在软件的维护过程中维持“形”。
某种程度上,面向对象设计强化了软件行业推崇的模块化设计。
再次,面向对象设计中的继承和多态技术除了进一步提高通过软件模拟现实世界的能力外,还能让设计更灵活、易变更和方便复用。
面向对象多态:
多态是类型理论的一个概念。
意思是:
一个名字可以代表许多不同的对象,只要这些对象都有共同的父类,这样这个名字代表的不同对象就可以以不同的方式来响应同一消息。
多态表现出多种形式的能力。
通用多态引用有相同结构类型的大量对象,他们有着共同的特征。
特定的多态涉及的是小部分没有相同特征的对象。
四种多态可做以下描述:强制的:一种隐式做类型转换的方法。
重载的:将一个标志符用作多个意义。
参数的:为不同类型的参数提供相同的操作。
包含的:类包含关系的抽象操作。
多态性的优点示例:
如下面的java语句:
public abstract class Animal {
public abstract void cry();
public abstract String getAnimalName();
}
public class Simulator {
public void playSound(Animal animal){
System.out.println("我是"+animal.getAnimalName());
System.out.println("我的叫声是:");
animal.cry(); }
}
public class Dog extends Animal{
public void cry(){
System.out.println("汪、汪、汪");
}
public String getAnimalName(){
return "小狗"; }
}
public class Cat extends Animal{
public void cry(){
System.out.println("喵、喵、喵");
}
public String getAnimalName(){
return "小猫"; }
}
public class Test {
public static void main(String[] args) {
Simulator simulator=new Simulator();
simulator.playSound(new Dog());
simulator.playSound(new Cat()); }
}
在上面的示例程序中,对于定义的Animal类,分别有两个子类继承了父类的基本特性,
好处非常明显:
1.可替换性。
对已存在的代码具有可替换性。
2.可扩充性。
对代码具有可扩充性。
增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。
实际上新加子类更容易获得多态功能。
4.灵活性。
它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性。
多态简化了对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。
值得注意的是,多态并不能够解决提高执行速度的问题,因为它基于动态装载和地址引用,或称动态绑定。