JavaOOP 优雅总是会有回报!

前言 面向对象程序设计(简称OOP)是当今主流的程序设计范型,它已经取代了70年代的“结构化”过程化程序设计开发技术。传统的结构化程序设计通过设计一系列的过程(即算法)来求解问题。首先要确定如何操作数据,然后再决定如何组织数据,以便于数据操作。OOP却调换了这个次序,数据被放在第一位,然后再考虑操作数据的算法。 —JAVA 核心技术
传统的结构化方法着眼于一个信息系统需要什么样的方法和处理过程。以过程抽象来对待系统的需求,其主要思想就是对问题进行功能分解,如果分解后得到的功能过大,那么再对这些功能进行分解,直到最后分解得到的功能能比较方便地处理和理解为止。它从算法的角度进行建模,所有的软件都用过程或者函数作为其主要构造块,所以,具有模型脆弱、难以适应需求的变动、维护较困难等特点。
与传统的结构化方法相比,面向对象方法在描述和理解问题域时采用截然不同的方法。其基本思想是,对问题域进行自然分割,以更接近人类思维方式建立问题域模型,从而使设计出的软件尽可能直观地描述现实世界,具有更好的可维护性,能适应用户需求的变化。其基本思想是使用对象、类、封装、继承、聚合、关联、消息、多态等基本概念来构造系统的软件开发方法。
JavaOOP 优雅总是会有回报!
文章图片

基本原则

  • 对象:对象(object)是系统中用来描述客观事物的一个实体,它是构造系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组方法组成。属性是用来描述对象静态特征的一个数据项,操作是用来描述对象动态特征的一个动作序列。对象之间通过消息通信。
  • 类:类(class)是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供一个统一的抽象描述。类是静态的,类的语义和类之间的关系在程序执行前就已经定义好了,而对象是动态的,对象是在程序执行时被创建和删除的。
    • 创建类时,给类起个清晰的名字,就算不需要注释也能理解这个类。
    • 【JavaOOP 优雅总是会有回报!】使类尽可能原子化。
      • 一个复杂的switch语句:考虑使用多态。
      • 大量方法涵盖了很多不同类型的操作:考虑使用多个类。
      • 大量成员变量涉及很多不同的特征:考虑使用多个类。
  • 封装:封装就是把对象的属性和方法结合成一个独立的系统单位,并尽可能地隐藏对象的内部细节。封装使一个对象形成两个部分:接口部分和实现部分,对于用户来说,接口部分是可见的,而实现部分是不可见的。封装提供了两种保护,首先封装可以保护对象,防止用户直接存取对象的内部细节;其次,封装也保护了客户端,防止对象实现部分的变化可能产生的副作用,即实现部分的改变不会影响到客户端的改变。
  • 继承:特殊类(子类)拥有其一般类(父类)的生命属性与操作,称作特殊类对一般类的继承。在子类中可以增加或重新定义所继承的属性或方法,如果是重新定义,则称为覆盖(override)。与覆盖很类似的一个概念是重新(overload),重载指的是一个类中有多个同名的方法,但这些方法在操作数或/和操作数的类型上有区别。
    • 在继承期间注意限定
  • 多态:多态指的是一个实体在不同上下文条件下具有不同意义或用法的能力。对象的多态通常是指一般类中定义的操作和属性被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。注意:多态属于运行时的问题,而重载是编译时的问题。
总结 优雅总是会有回报。从短期来看,似乎需要更长的时间才能找到一个真正优雅的问题解决方案,但是当该解决方案第一次应用并能轻松适应新情况,而不需要数小时,数天或数月的挣扎时,你会看到奖励(即使没有人可以测量它们)。它不仅为你提供了一个更容易构建和调试的程序,而且它也更容易理解和维护,这也正是经济价值所在。
最后的最后 为初学者提供学习指南,为从业者提供参考价值。我坚信码农也具有产生洞见的能力。扫描下图二维码关注,学习和交流!
JavaOOP 优雅总是会有回报!
文章图片

    推荐阅读