java基础学习(二):理解面向对象

  Java 语言是纯粹的面向对象的程序设计语言,这主要表现为Java完全支持面向对象的三种基本特征:继承、封装和多态。整个Java程序是由一个一个类组成的。
  Java完全支持使用对象、类、继承、封装、消息等基本概念来进行程序设计,允许从世界中客观存在的事物(即对象)出发来构造软件系统,再系统构造中尽可能运用人类的自然思维方式。面向对象的方式实际上由OOA(面向对象分析)、OOD(面向对象设计)和OOP(面向对象编程)三个部分有机组成,其中,OOA和OOD的结构需要使用一种方式来描述并记录,目前业界统一采用UML(统一建模语言)来描述并记录OOA和OOD的结果。
  常用的UML图形有例图、类图、组件图、部署图、顺序图、活动图和状态机图。暂时了解这么多足够了。

2.1 面向对象

  在目前的软件开发领域有两种主流的开发方法:结构化开发方法和面向对象开发方法。面向对象可以提供更好的可重用性、可扩展性和可维护性。

2.1.1 结构化程序设计简介

  结构化程序设计方法主张按功能来分析系统需求,其主要原则柯概括为自顶向下、逐步求精、模块化等。架构话程序设计首先采用结构化分析(Structured Analysis, SA) 方法对系统进行需求分析,然后使用结构化设计(Structured Program,SP)方法对系统进行概要设计、详细设计,最后采用结构化编程(Structured Program,SP)方法来实现系统,使用这种SA、SD和SP的方式可以较好地保证软件系统地开发进度和质量。
  因为结构化程序设计方法主张按功能把软件系统逐步细分,因此这种方法也被称为面向功能地程序设计方法:结构化程序设计地每个功能都负责对数据进行一次处理,每个功能都接受一些数据,处理完后输出一些数据,这种处理方法也被称为面向数据流的处理方式。
  结构化程序设计里最小的程序单元使函数,每个函数都负责完成一个功能,用以接受一些输入数据,函数对这些输入数据进行处理,处理结束后输出一些数据。整个软件系统由一个个函数组成,其中作为程序入口的函数被称为主函数,主函数依次调用其他普通函数,普通函数之间依次调用,从而完成整个软件系统的功能。
在这里插入图片描述
  由图可以看出,结构化设计需要自顶向下的设计方式,在设计阶段就需要考虑每个模块应该分解成哪些子模块,每个子模块又分解成哪些更小的模块…依此类推,直至将模块细化成一个个函数。
  每个函数都是具有输入、输出的子系统,函数的输入数据包括函数形参、全局变量和常量等,函数的输出数据包括函数返回值以及传出参数等。结构化程序设计方式又如下两个局限性:
(1)设计不够直观,与人类习惯思维不一致。采用结构化程序分析、设计时,开发者需要将客观世界模型分解成一个个功能,每个功能用以完成一定的数据处理。
(2)适应性差,可扩展性不强。当用户的需求发生更改的时候,都需要自定向下地修改模块结构,这种方式地维护成本太高。
  有一说一,这个结构化设计看得我懵懵的,原话说就是像我们使用c语言一样,用函数作为最小单位,然后主函数负责连接各个功能的子函数。但是这样的系统会出现上面提到的一些问题。所以,我看了半天,这个结构化设计是不好的???

2.1.2 程序的三种基本结构

  不知道为什么,书里面这一节提到在Java语言中,拒绝使用GOTO语句,但是把它作为了保留字。
  重点:任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构三中基本结构组成。所以,这三种结构就被称为程序设计的三种基本结构,也是结构化程序设计必须采用的结构。

2.1.2.1 顺序结构

在这里插入图片描述
 这个很简单啦,我就不多写了,就是在源代码种按排列顺序依次执行语句。如图:程序从a进入到S1再到S2再从b出来,就很顺的完成一个结构。

2.1.2.2 选择结构

在这里插入图片描述
  选择结构也是非常容易理解的,相信学过c语言的人都了解选择结构。很简单,做选择然后执行语句。

2.1.2.3 循环结构

在这里插入图片描述
(1)当型结构 :先判断条件,当条件为真时执行循环体,并且在循环体结束时自动返回到循环入口处,再次判断循环条件:如果条件为假,则退出循环体到达流程出口处 因为是"当条件为真时执行循环",即先判断后执行,所以被称为当型循环。
(2)直到型循环: 从入口处直接执行循环体,循环体结束时判断条件,如果条件为真,则返回入口
处继续执行循环体,直到条件为假时退出循环体到达流程出口处,是先执行后判断。因 为是"直
到条件为假时结束循环",所以被称为直到型循环。

  前面三种结构已经非常熟悉了,我就没记多少笔记。跟其他语言一样,Java语言的方法体内同样是由这三种程序结构组成的,换句话说,肃然Java是面向对象的,但Java的方法里则是一种结构化的程序流。

2.1.3 面向对象程序设计简介

  看了书感觉,对面向对象的介绍有点抽象,在这里我就按自己的了解,写一写。面向对象一切以对象为中心,大家一定要记住对象这个概念,比如:你要写一个管理系统,那么你的对象就是管理员和成员等。就这样的话很直观地可以直接映像到客观世界,就感觉你写这个程序就是在写一个世界。
  采用面向对象方式的软件系统,其最小的程序单元是类,这些类可以生成系统中的多个对象,而这些对象则直接映像成客观世界的各种事物。结构如下:
在这里插入图片描述
下面一个公式:
成 员 变 量 ( 状 态 数 据 ) + 方 法 ( 行 为 ) = 类 定 义 成员变量(状态数据)+方法(行为)= 类定义 +=
  我的理解就是,一个类的定义,需要包括一个成员的基本属性,比如人的身高,体重等。还需要有一个成员的行为,比如人吃饭,运动等动作。这样整合在一起才叫做一个类。如果理解有误,可以指证。

  书中有一个很好的例子,讲述了面向对象和面向过程的区别。比如完成猪八戒吃西瓜这个事件

  • 用面向过程表达:吃(猪八戒,西瓜)
  • 用面向对象表达:猪八戒.吃(西瓜)

好好感受一下,就知道两者的区别巨大有木有。

2.1.4 面向对象的基本特征

  面向对象方法具有三个基本特征:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。这三个以后应该会仔细将,这里我就不记太多笔记。
  除此之外,抽象也是面对对象的重要部分,抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关地方面。抽象不打算了解全部问题,只是考虑部分问题。
面向对象还支持如下几个功能:

  • 对象是面向对象方法中最基本的概念,它的基本特点有 标识唯 性、分类性、多态性、封装性、模块独立性好。
  • 类是具有共同属性、共同方法的 类事物 类是对象的抽象;对象则是类的实例 而类是整个软件系统最小的程序单元,类的封装性将各种信息细节隐藏起来,并通过公用方法来暴露该类对外所提供的功能,从而提高了类的内聚性,降低了对象之间的稿合性。
  • 对象间的这种相互合作需要 个机制协助进行,这样的机制称为"消息" 消息是 个实例与另个实例之间相互通信的机制。
  • 在面向对象方法中,类之间共享属性和操作的机制称为继承 继承具有传递性 继承可分为单继承( 个继承只允许有 个直接父类,即类等级为树形结构)与多继承( 个类允许有多个直接父类)

  在编程语言领域,还有一个“基于对象”的概念,这两个概念极易混淆。“基于对象”也使用了对象,但是无法利用现有的对象模板产生新的对象,也就是说,“基于对象”没有继承的特点。例如JavaScript。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值