面向过程和面向对象的区别和联系
1 .面向对象理论
2 .面向过程c语言的特点
3 .面向对象的Java语言特征
4 .数据结构选择能力
5 .选择5.Java字符集代码
1 .面向对象理论
1 .班级
1 )字段)实例字段、静态字段
2 )方法)实例方法(实方法、虚方法)、构造方法)实例构造方法、静态构造方法)、静态方法、方法重载
2 .实例(对象)
3 .接口类
4 .抽象类
5 .三个主要特点:
1 )封装(隐藏、安全、可维护、模块化) Java语言可以通过访问修饰符保证封装性: private
只有该类的方法才能访问/更改类的实例状态。 否则,我会说类的封装已经被破坏了。
2 )继承)可复用、实例字段继承、实例方法(实方法、虚方法)继承)。
Java语言只支持静态继承。 主要是代码和字段的复用。
3 )多态性(可伸缩性) )
多态性的前提是继承和虚方法。 Java语言支持多态性。
6 .分析方法:
1 )面向过程)算法被分解,“自顶向下逐步细化”
面向对象:对象分解,“从底向上,逐步分类抽象”
7 .实现方式:面向过程:“由底向上,逐步合并”
面向对象:“自上而下,逐步继承”
2 .面向过程c语言的特点
1 .计算机本身不需要面对底层硬件字节,与CPU兼容,但不是跨语言、跨操作系统
2 .打包:解决复杂系统,具有可维护性
C语言通过函数将大程序划分为小型、功能明确的短函数,将复杂的大问题从复杂分解为简单的几个简单的小问题。
1 )函数是c语言的最小打包模块
模块化是解决复杂系统的技术手段。
2 )封装函数与数据结构是分离的,封装函数与其操作的数据结构是高度耦合的。 尽管是高耦合,但这在一定程度上给c程序带来了高性能。 封装函数具有代码可维护性。
3 ) c函数采用结构化编程方法
C语言的原子指令是机器指令,C语言方法是机器指令的封装。 结构化编程方法:顺序结构、循环结构、选择结构、无跳转结构
3 .表演
1 )是某类机器指令集合的最小交集
2 ) ***.exe可执行文件二进制代码短,性能高
3 )不要动态优化。 语言本身不支持可扩展性
3 .面向对象的Java语言特征
1 .计算机本身不需要面对底层硬件字节,与CPU兼容,可以跨越操作系统,但不是跨语言
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 .选择5.Java字符集代码
UTF-8占用空间小,效率慢-------***.class使用字节码文件,以节约空间为主,以牺牲效率为代价,高效交换空间
在UTF-16的占有空间中,作为效率的Java存储器字符串的使用是考虑到空间和效率两方面的选择
UTF-32占用空间最大,效率最大-----用空间改变效率