面向对象原理之浅析(一)

学习目标:

①   结构化编程和面向对象的区别

②   Java面向对象思想

③   面向对象的基本特征

面向对象是Java的核心思想,既然想弄清楚核心思想,深入贯彻面向对象思想是没有那么简单的,所以在这个重中之重的面向对象上,准备分好几篇来学习,第一篇是了解面向对象,慢慢学习.

当前有两种主流的开发方式,一种是结构化开发,一种是面向对象开发.由于面向对象开发中的方法采用的是结构化编程,所以在此还是想先介绍下什么是结构化开发.

结构化开发是面向功能的.它是以系统软件的功能为驱动的,因此她的最小程序单元是函数,其中以主函数作为程序的入口函数,再调用其他普通函数,包括普通函数之间的调用,从而完成系统的相关功能.如下图:



结构化开发是面向数据流的.每一个函数都包括输入,输出和函数体,函数体是对传入的数据进行处理,并且输出一些数据,所以结构化编程也是面向数据流的.

那么结构化开发的步骤有哪些?

首先SA(Structured Analysis)结构化分析是对系统进行需求分析,然后根据需求分析对系统采用SD(Structured Design)结构化设计,包括对系统概要设计,详细设计,之后采用SP(Structured Program)进行结构化编程来实现系统.

由上图可以看出来,结构化开发思想采用的是自上而下的设计方式,这种开发思想不难想到,它需要在软件开发设计前期,就需要对软件进行功能模块的划分,每一个功能模块需要细分为更小的模块,再将模块细分直至细化成了一个个函数,所以这种开发思想可以比较好的保证开发产品的质量和进度,但相比于这个,其局限性更加让人头痛:

局限性:

在产品伊始,无法确定产品的所有需求,其扩展性差.

结构化开发方式不符合人类的思维习惯,在开发过程中需要将客观世界抽象出来在细分为模块和功能(在此要注意抽象并不是面向对象的特征,所有的编程语言都要讲客观世界抽象出来).

结构化编程必须包含的三种结构,顺序结构,选择结构和循环结构.

(在此多说一句,学习方法问题,个人觉得采用树形扩散的方式会学的更加广一些,例如在此处讲到了选择结构的switch语句,那么我们可以顺着联想他的注意事项,使用方式等等)选择结构无非是if\else语句和switch语句,在switch语句中需要注意switch支持类型问题,case穿透的问题和default的位置问题:

①   switch支持的数据类型

switch支持能隐式转换成int型的基本数据类型(byte\short\char\int)和枚举以及String的引用数据类型

②   case穿透

所谓case穿透就是不再判断case是否符合条件而直接运行case的内容,直至其遇到break或者}结束

例如

@Test

  public void tets08(){

         int i = 2;

                     switch (i) {

         default:

                System.out.println("d");

         case 1:   

                System.out.println("1");

         case 2:   

                System.out.println("2");

         case 3:   

                System.out.println("3");

         }

输出的结果是2和3;

③   default

default的位置默认是在末尾,但它可以在switch的任何位置,当它在所有case之前的位置时,当运行了switch之后,它是跳过default语句,先对case语句进行条件判断,如果条件符合了,则不对default的语句进行执行,当case条件都不满足的时候,再跳到default进行执行,如果default未加break;同样会造成case穿透.

 

在学习面向对象的具体特征之前,应该先贯彻一个面向对象的思想,那么究竟什么是面向对象的思想呢?

Java面向对象的思想

在此之前我们需要告诉自己一个原则,一切都是对象.

一切事物都是对象

Java中出了8中基本数据类型外,其他的一切都是对象.对象具有状态,我们用成员变量来表示,对象有行为,我们用方法来表示.由此就组成了类,Java对象是Java的核心,所以对象具有唯一标识性,当对象失去标识的时候就是被GC回收的时候.

       前面我们知道了结构化开发的思想最小程序单元是函数,而面向对象的最小程序单元就是类.因此面向对象的编程粒度比结构化开发的粒度要大,并且面向对象的思想更加符合人类的思维方式.例如我们需要表达人洗头发这一件事,在结构化编程来看表达应当是

       洗(人,头发);

而面向对象看了则是

       人.洗(头发);

 

面向对象的三大基本特征

封装encapsulation

封装是将对象的具体实现细节隐藏起来,而通过公有的方法将其功能展示出来,就如同一个店家将其秘方保存起来,但是他可以将做出来的东西卖给你.

继承

继承是为了增加代码的复用,当子类继承了父类之后,子类就变成了一个特殊的父类,子类将拥有父类的所有成员变量和方法.

多态

多态是建立在继承的基础之上的,用super向父类传递不同的数据,可以实现同一类型的对象在执行同一个方法适合,表现出多种行为.

封装继承和多态作为三大基本特征,需要学习的有很多,所以在面向对象的原理浅析系列中会慢慢介绍.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值