java总结

来源:互联网 发布:梁启超 徐志摩 知乎 编辑:程序博客网 时间:2024/05/22 03:10
软件开发基本过程:4步,如下,
简历软件需求
软件设计
实现软件设计
软件测试


类识别:
面向对象软件设计的基本内容是确定类,类决定着软件的结构。
问题说明中的名词,可能标示了需要的类和对象。
类代表一组有类似行为的对象,一个对象也用类。


类职责:
起初,常常只要给一个类分派基本的职责就足够了,并且考虑如何将分派的职责转换为具体方法。
其它职责后续考虑,或定义新类。


静态类成员:
考虑是否设置静态变量和方法。


类间关系:
其中基本的三个,依赖、聚合、继承。
同一个类之间的依赖关系。
一个聚合对象由其它的对象组成,形成一种"has-a"关系。




UML,统一建模语言。
其主要模型有:功能模型,对象模型,动态模型
图的功用:用例图,类图,对象图,包图,活动图,状态图,序列图,协作图,构件图,部署图




接口comparable提供对两个对象进行比较的通用机制。
接口iterator提供集合类的迭代操作。
枚举型的值是对象。事实上,枚举值是枚举类型的实例。
一个枚举型的值是具有该枚举型的静态变量。


方法设计 :
方法分解,方法参数的传递方式。
将一个对象传递给一个方法时,形参和实参相互成为对方的别名。


测试:
测试的目标是发现错误,发现程序中任何不完善的地方。
测试是努力尝试各种方式去发现错误。
越早发现问题越好。
逐步提高程序质量。


审查:
评价设计和代码



设计必须了解用户需求和可能的动作,以便设计出更好的界面。界面是用户与系统交互的唯一途径。
界面设计应坚持一致性和可用性,并尽最大可能让用户少犯错误。



数组相关:
数组用于分组和组织数据。
当整个数组作为参数传递时,实际上传递的是原始数组引用的副本。
数组元素也可以传递给方法,传递的也是副本。


main方法的形参总是string 对象数组。string[]参数,代表了命令行参数。


可变长度参数列表:(省略号表示接受的参数个数是可变的)
public double average(int ... list){}
表示,average方法可接受任意个数的int参数,接受的参数将自动存入数组list,在方法内部可按正常的数组处理参数。


数组可以有一维,二维,三维,甚至多维。数组在画复杂图形时很有用。


arrayList数组中插入和删除一个元素后,将调整元素的位置以便使剩余元素的索引值保持连续性。
arrayList类的方法将对象引用作为参数接收。



继承相关:
子类可以定义与父类同名的变量,定义是合法的,可以改变变量的类型,但不提倡这样做,会引起混淆。称为影子变量。


应当合理的将类的公共特性保持在尽可能高的类层次级上,以利于实现类定义的一致性和软件的易维护性。
设计类层次结构以满足应用程序的需要,着重考虑将来应用的可扩展性。


抽象类代表一种概念,子类将基于这种概念来定义方法,因此抽象类不能实例化。
从非抽象父类派生出抽象类也是可能的。
从抽象父类派生出抽象类也可以。


子类继承了父类的private方法,虽不能直接访问,但可以通过调用父类的public方法访问。


final修饰符可用于限制继承的能力。


多态性:
对于多态性引用,方法调用与方法定义代码的绑定在运行时执行。
两种方式建立多态性引用:继承方式,接口方式。
接口名可以用于声明对象引用变量。一个接口引用变量可以指向实现该接口的任何类的任何对象。
多态性可用于排序、搜索。
算法的选择取决于具体条件。
如果对象可以自然地由继承的关系关联在一起,通过继承实现多态好。
如果对象共同存在的主要问题需要以各自不同的方式进行处理,则通过接口建立多态性引用是更好的选择。


异常相关:
printStackTrace方法输出调用堆栈跟踪信息。
throw语句用于开始一个异常的传递。异常抛出后,程序终止执行并打印输出有关的异常信息。


一个流是一个有序的字节序列;流可以用作输入源或作为输出的目的地。
一个数据存储(如文件)可以作为一个程序的输入流或输出流,但一般不能同时既是输入流又是输出流。
system类中的三种对象引用变量代表标准I/0流。
system.in  标准输入流 ,默认代表键盘
system.out 标准输出流 ,默认代表显示器屏幕上的一个具体窗口
system.err 标准错误流 ,默认代表显示器屏幕上的一个具体窗口



递归与迭代:
  递归与迭代都是基于控制结构:迭代用重复结构,而递归用选择结构。
  递归与迭代都涉及重复:迭代显式使用重复结构,而递归通过重复函数调用实现重复。
  递归与迭代都涉及终止测试:迭代在循环条件失败时终止,递归在遇到基本情况时终止。
  使用计数器控制重复的迭代和递归都逐渐到达终止点:迭代一直修改计数器,直到计数器值使循环条件失败;
递归不断产生最初问题的简化副本,直到达到基本情况。迭代和递归过程都可以无限进行:如果循环条件测试
永远不变成false,则迭代发生无限循环;如果递归永远无法回推到基本情况,则发生无穷递归。
  递归函数是通过调用函数自身来完成任务,而且在每次调用自身时减少任务量。而迭代是循环的一种形式,这
种循环不是由用户输入而控制,每次迭代步骤都必须将剩余的任务减少;也就是说,循环的每一步都必须执行
一个有限的过程,并留下较少的步骤。


每次递归调用都需要新增内存空间。
一个方法调用自己是直接递归;一个方法调用其他方法,最终导致再次调用自己,是间接递归。
所有的问题都可以用循环迭代的方法求解,但某些情况下会很复杂。
0 0
原创粉丝点击