Python的运算符:算术和赋值

2021牛客暑期多校训练营2 F Girlfriend (阿波罗尼斯圆+简单几何)

  返回  

java 面向对象编程思想

2021/7/20 22:12:33 浏览:

面向对象

面向对象是一种编程思想,起初,“面向对象”是专指在程序设计中采用封装、继承、多态等设计方法,但面向对象的思想已经涉及到软件开发的各个方面,比如现在细分为了面向对象的分析(OOA),面向对象的设计(OOD),面向对象的编程实现(OOP)。而Java则是面向对象编程语言

面向对象编程产生背景

面向对象出现以前,结构化程序设计(面向过程程序设计/面向过程编程)是程序设计的主流。如C语言就是面向过程编程语言。面向过程编程强调的是功能行为,以函数为最小单位,考虑怎么做,缺点是不易维护、重用和扩展。而面向对象的出现正是为了解决系统的可维护性,可扩展性,可重用性。

计算机是帮助人们解决问题的,然而计算机终究是个机器,他只会按照人所写的代码,一步一步的执行下去,最终得到了结果,因此无论程序多么的复杂,计算机总是能轻松应付,结构化编程,就是按照计算机的思维写出的代码,这样的代码计算机识别比较方便因此性能会比较好,但是人看到这么复杂的逻辑,就难以维护和扩展了。
面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。这样的程序,人们在读它的时候,会更容易理解,也不需要再把现实世界和程序世界的思维之间来回做转换。因此比较容易维护和扩展。

面向对象的三大特征

  • 封装:找到变化并且把它封装起来,你就可以在不影响其它部分的情况下修改或扩展被封装的变化部分,这是所有设计模式的基础,就是封装变化,因此封装的作用,就解决了程序的可扩展性。

  • 继承:子类继承父类,可以继承父类的方法及属性,实现了多态以及代码的重用,因此也解决了系统的重用性和扩展性,但是继承破坏了封装,因为他是对子类开放的,修改父类会导致所有子类的改变,因此继承一定程度上又破坏了系统的可扩展性,所以继承需要慎用。

  • 多态:接口的多种不同的实现方式即为多态。接口是对行为的抽象,刚才在封装提到,找到变化部分并封装起来,但是封装起来后,怎么适应接下来的变化?这正是接口的作用,接口的主要目的是为不相关的类提供通用的处理服务,我们可以想象一下。比如鸟会飞,但是超人也会飞,通过飞这个接口,我们可以让鸟和超人,都实现这个接口,这就实现了系统的可维护性,可扩展性。

因此面向对象能实现人们追求的系统可维护性,可扩展性,可重用性。

面向对象编程概念

Object Oriented Programming(OOP):面向对象编程/面向对象程序设计

面向对象编程以对象为核心,认为程序由一系列对象组成。类是对现实世界的抽象,包括属性和方法,对象是类的实例化。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。

面向对象程序设计分析问题的思路和步骤:

  1. 根据问题需要,选择问题所针对的现实世界中的实体。
  2. 从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了概念世界中的类。
  3. 把抽象的实体用计算机语言进行描述,形成计算机世界中类的定义。即借助某种程序语言,把类构造成计算机能够识别和处理的数据结构。
  4. 将类实例化成计算机世界中的对象。对象是计算机世界中解决问题的最终工具。

举例说明面向对象编程

例如,我们需要编写一个程序实现功能:“把大象装进冰箱”。

那么利用面向对象编程解决问题的思路是:

  1. 根据问题需要,将问题所针对的现实世界中的实体用计算机语言进行描述,形成计算机世界中类的定义。 类中包含属性和方法,对应现实世界的实体的属性和行为。如下:
    {
    打开 (冰箱) {
        冰箱.开门();
    }
    操作 (大象) {
        大象.进入(冰箱);
    }
    关闭 (冰箱) {
    	冰箱.关门();
    }
    }
    冰箱 {
        开门 () {}
        关门 () {}
    }
    大象 {
        进入 (冰箱) {}
    }
    
    /**
    概念上创建了真实的人、冰箱、大象,并赋予它们动作。
    */
    
  2. 创建以上类的实例,也就是对象,利用对象最终解决问题:使用人来操纵大象和冰箱,实现把大象装冰箱的动作。

面向对象编程的好处

  1. 易维护
    1. 采用面向对象思想设计的结构,可读性高。
    2. 由于继承的存在,减少代码的冗余。即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
    3. 数据和方法(方法可以理解为函数)被封装在一起,这样做改动的时候对整个程序的影响不大。
      1. 面向过程你就需要把你的改动穿插到程序的实现步骤中,有的时候这是一件非常头疼的事情,不如重新写过。。面向对象的话,你改动期盼的功能就行了,这样改动更方便,对程序影响也更小。
  2. 效率高
    1. 在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
  3. 易扩展
    1. 由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。
  4. 质量高,可重用
    1. 在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号