面向对象的程序设计技术简介
Object-Orientated Programming
之前面试遇到过这个问题,叫我谈一谈理解,因为垃圾,所以选择做笔记(内容摘抄自计算机操作系统)
1. 面向对象技术的基本概念
面向对象技术是20世纪80年代初提出并很快流行起来的。该技术是基于“抽象”和“隐蔽”原则来控制大型软件的复杂度的。
所谓对象,是指在现实世界中具有相同的属性、服从相同规则的一系列事物(事物可以是一个物理实体、一个概念或一个软件模块等)
的抽象,而把其中的具体事物称为对象的实例。如果对各类实体如进程、线程、消息存储器和文件等使用了对象的概念,相应的,便有了
进程对象、线程对象、消息对象、存储器对象和文件对象等。
1)对象
再面向对象的技术中,是利用被封装的数据结构(变量)和一组对它进行操作的过程(方法)来表示系统的某个对象的。
对象中的变量(数据)也称为属性,它可以是单个标量或一张表。面向对象中的方法是用于执行某种功能的过程,他可以改变对象的状态,
更新对象中的某些数据值或作用于对象索要访问的外部资源,如果把一个文件作为对象,该对象的变量便是文件类型、文件大小、文件的创建者等。
对象中的方法包含对文件的操作,如创建文件、打开文件、读文件、写文件、关闭文件等。
对象中的变量(数据)对外是隐蔽的,因而外界不能对它直接进行访问,必须通过该对象中的一组方法(操作函数)对他进行访问。
2)对象类
在实践中,有许多对象可能表示的是同一类事物,每个对象具有自己的变量集合,而他们所具有的方法是相同的。
如果为每个相似的对象都定义一组变量个方法,显然是低效的,由此产生了“对象类”的概念,利用“对象类”来定义一组
大体相似的对象。一个类同样定义了一组变量和针对该变量的一组方法,用他们来描述一组对象的共同的属性和行为。
类是在对象上的抽象,对象则是类的实例。对象类中所定义的变量在示例中均有具体的值。
例如,我们将文件设计成一个类,类的变量同样是文件类型、文件大小和创建者等。类中的方法是文件的创建、打开、
读写、关闭等,一个文件类,一旦被赋予了具体的数值就成了文件对象。对象的概念非常有用,因为它极大地提高了创建多个相似对象的效率。
3)继承
在面向对象的技术中,可以根据已有的类来定义一个新的类,新类被称为子类(B),原来的类被称为父类(A),
继承是父类和子类之间共享变量和方法的机制,该机制规定子类自动继承父类中定义的变量个方法,并允许子类再增加
新的内容。继承特性可使定义子类变得更加容易。一个父类可以定义多个子类,他们分别是父类的某种特例,父类描述了这种
子类的公共变量和方法。类似的,这些子类又可以定义自己的子类,通过此途径可以生成一个继承的层次。另外,也允许一个子类
有两个父类或多个父类,它可以从多个父类获得继承,此时称为“多重继承”。
2.面向对象的优点
在操作系统设计时,将计算机的实体作为对象来处理,可带来如下好处:
(1)通过“重用”提高产品质量和生产率。
在面向对象技术中可通过“重用”,以前项目中经过精心测试的对象或“重用”由其他人编写、测试和维护的对象类来构建新的系统,
这不仅可大大降低开发成本,而且能获得更好的系统质量。
(2)使系统具有更好的易修改性和易扩展性。
通过封装,可隐蔽对象中的变量和方法,因而改变对象中的变量和方法时,不会影响到其他部分,从而可方便的修改老的对象类。
另外,继承是面向对象技术的重要特性,在创建一个新对象类时,通过利用继承特性可显著减少开发的时空开销,使系统具有更好的
易扩展性和灵活性。
(3)更易于保证系统的“正确性”和“可靠性”。
对象时构建操作系统的基本单位,由于可以独立的对他进行测试,易于保证每个对象的正确性和可靠性,因此也就比较容易保证整个系统的正确性和可靠性。
此外,封装对对象类中的信息进行隐蔽,这样又可以有效的防止未经授权着的访问和用户不正确的使用,有助于构建更为安全的系统。