前言
面向对象程序设计(简称 OOP)是当今支流的程序设计范型,它曾经取代了 70 年代的“结构化”过程化程序设计开发技术。传统的结构化程序设计通过设计一系列的过程(即算法)来求解问题。首先要确定如何操作数据,而后再决定如何组织数据,以便于数据操作。OOP 却调换了这个秩序,数据被放在第一位,而后再思考操作数据的算法。—JAVA 核心技术
传统的结构化办法着眼于一个信息系统须要什么样的办法和处理过程。以过程形象来看待零碎的需要,其次要思维就是对问题进行性能合成,如果合成后失去的性能过大,那么再对这些性能进行合成,直到最初合成失去的性能能比拟不便地解决和了解为止。它从算法的角度进行建模,所有的软件都用过程或者函数作为其次要结构块,所以,具备模型软弱、难以适应需要的变动、保护较艰难等特点。
与传统的结构化办法相比,面向对象办法在形容和了解问题域时采纳截然不同的办法。其根本思维是,对问题域进行天然宰割,以更靠近人类思维形式建设问题域模型,从而使设计出的软件尽可能直观地形容事实世界,具备更好的可维护性,能适应用户需要的变动。其根本思维是应用对象、类、封装、继承、聚合、关联、音讯、多态等基本概念来结构零碎的软件开发办法。
根本准则
- 对象:对象 (object) 是零碎中用来形容客观事物的一个实体,它是结构零碎的一个根本单位。一个对象由一组属性和对这组属性进行操作的一组办法组成。属性是用来形容对象动态特色的一个数据项,操作是用来形容对象动静特色的一个动作序列。对象之间通过音讯通信。
-
类:类 (class) 是具备雷同属性和办法的一组对象的汇合,它为属于该类的全副对象提供一个对立的形象形容。类是动态的,类的语义和类之间的关系在程序执行前就曾经定义好了,而对象是动静的,对象是在程序执行时被创立和删除的。
- 创立类时,给类起个清晰的名字,就算不须要正文也能了解这个类。
-
使类尽可能原子化。
- 一个简单的 switch 语句:思考应用多态。
- 大量办法涵盖了很多不同类型的操作:思考应用多个类。
- 大量成员变量波及很多不同的特色:思考应用多个类。
- 封装:封装就是把对象的属性和办法联合成一个独立的零碎单位,并尽可能地暗藏对象的外部细节。封装使一个对象造成两个局部:接口局部和实现局部,对于用户来说,接口局部是可见的,而实现局部是不可见的。封装提供了两种爱护,首先封装能够爱护对象,避免用户直接存取对象的外部细节;其次,封装也爱护了客户端,避免对象实现局部的变动可能产生的副作用,即实现局部的扭转不会影响到客户端的扭转。
-
继承:非凡类 (子类) 领有其个别类 (父类) 的生命属性与操作,称作非凡类对个别类的继承。在子类中能够减少或从新定义所继承的属性或办法,如果是从新定义,则称为笼罩(override)。与笼罩很相似的一个概念是从新(overload),重载指的是一个类中有多个同名的办法,但这些办法在操作数或 / 和操作数的类型上有区别。
- 在继承期间留神限定
- 多态:多态指的是一个实体在不同上下文条件下具备不同意义或用法的能力。对象的多态通常是指个别类中定义的操作和属性被非凡类继承之后,能够具备不同的数据类型或体现出不同的行为。留神:多态属于运行时的问题,而重载是编译时的问题。
总结
优雅总是会有回报。从短期来看,仿佛须要更长的工夫能力找到一个真正优雅的问题解决方案,然而当该解决方案第一次利用并能轻松适应新状况,而不须要数小时,数天或数月的挣扎时,你会看到处分(即便没有人能够测量它们)。它不仅为你提供了一个更容易构建和调试的程序,而且它也更容易了解和保护,这也正是经济价值所在。
最初的最初
为初学者提供学习指南,为从业者提供参考价值。我深信码农也具备产生洞见的能力。扫描下图二维码关注,学习和交换!