JAVA属于面向过程嘛_【JAVA】面向过程与面向对象的区别与联系(以JAVA,C为例)...

面向过程与面向对象的区别与联系

1. 面向对象理论

2. 面向过程C语言的特征

3. 面向对象Java语言的特征

4.数据结构的选择能力

5.Java字符集编码的选择

1. 面向对象理论

1.类

1)字段:实例字段,静态字段

2)方法:实例方法(实方法,虚方法),构造方法(实例构造方法,静态构造方法),静态方法,方法的重载

2.实例(对象)

3.接口类

4.抽象类

5.三大核心特征:

1)封装(隐藏,安全,可维护,模块化)Java语言可通过访问修饰符来保证封装性:private

该类的实例状态只能由该类的方法访问/修改,否则我们说该类的封装性遭到了破坏。

2)继承(可复用,实例字段的继承,实例方法(实方法,虚方法)的继承)

Java语言只支持静态继承。主要是代码和字段的复用。

3)多态(可扩展)

多态的前提是继承和虚方法。Java语言支持多态。

6. 分析方法:

1)面向过程:算法分解,“自顶向下,逐步求精”

面向对象:对象分解,“自底向上,逐步分类和抽象”

7.实现方法:面向过程:“自底向上,逐步合并”

面向对象:对象分解,“自顶向下,逐步继承”

2. 面向过程C语言的特征

1.无需面对机器本身底层硬件的字节,兼容CPU;但是不跨语言版本,不跨OS

2.封装:解决复杂系统,具有可维护性

C语言通过函数将一个大的程序拆分成体积小,功能明确的一个个简短的函数,从而将一个复杂的大问题分解成若干个简单地小问题,由繁到简。

1)函数是C语言最小的封装模块

模块化是用于解决复杂系统的技术手段。

2)封装函数是与数据结构分离的,封装函数与其所操作的数据结构是高度耦合的,尽管是高耦合,某种程度上这也给C程序带来了高性能。封装函数具有代码可维护性。

3)C函数采用结构化程序设计方法

C语言的原子指令是机器指令,C语言方法是对机器指令的封装。结构化程序设计方法:顺序结构,循环结构,选择结构,没有跳转结构

3.性能

1)是某类机器指令集合的最小交集

2)***.exe可执行文件中的二进制代码短,性能高

3)不可以动态优化,语言本身不支持可扩展性

3. 面向对象Java语言的特征

1.无需面对机器本身底层硬件的字节,兼容CPU,跨OS;但是不跨语言版本

2.封装:解决复杂系统,具有可维护性

Java语言通过类将一个大的程序拆分成体积小、功能明确的一个个简短的类,从而将一个复杂的大问题分解成若干个简单的小问题,由繁到简。

1) 类是Java语言最小的封装模块

模块化是用于解决复杂系统的技术手段。否则随便开发一个稍微难一点的功能,几万、几十万代码,没几个人能看懂,也没有几个人有耐心看。

2) 封装的是数据结构以及对数据结构中数据进行操作的方法,封装的若干方法与其所操作的数据结构是高耦合的,符合模块的高内聚低耦合的原则,带来了数据结构和代码的可维护性。可维护性指代码、数据结构和系统软件的可维护性。

3) 虽然Java方法不再是封装的手段,但也是类模块化得以实现的基础。

Java语言的原子指令是字节码,Java方法是对字节码的封装。

Java方法与C方法一样同样要求具有代码的可维护性,同样采用结构化程序设计方法

3.性能

1)是本地CPU指令系统

2) 解释执行,代码长,性能低

① 本地CPU指令系统

② 代码长

③ 不可以动态优化

④ 需要生成类和实例的数据结构

3)编译执行,代码短,性能高

① 本地CPU指令系统

② 代码短

③ 可以动态优化

④ 都需要生成类和实例的数据结构

4) 不管解释执行还是编译执行,都需要生成类和实例的数据结构,这方面比C程序慢。

4、 Java语言本身支持可扩展性

4.数据结构的选择能力

选择数据结构考虑的主要因素

1.运行效率

运行效率=1次生成效率+n次操作效率

例如:C语言中的三维矩阵数组与三维指针数组

三维矩阵数组生成时间短,但是操作时间长

三维指针数组生成时间长,但是操作时间短

所以,从如果运行效率高的角度,操作次数少,应该选择三维矩阵数组;操作次数多,应该选择三维指针数组

2.空间

空间的总大小,分散程度

三维矩阵数组是一个连续空间,而三维指针数组需要四个连续空间

3.产生的垃圾

三维矩阵数组产生的垃圾个数比三维指针数组少。

5.Java字符集编码的选择

UTF-8占用空间小,效率慢-------***.class字节码文件使用,以节省空间为主,牺牲效率,以效率换空间

UTF-16 占用空间中,效率中------Java内存字符串使用,既考虑了空间,又考虑了效率,是一个这种选择

UTF-32 占用空间最大,效率最大-----以空间换效率

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值