面向过程:把一个问题分解成若干小问题,再对每个小问题进行分解(分模块),知道每个问题的难度都足以小,能够解决为止,然后再把这些小问题合并,就解决了大问题
==========================================================
面向过程
面向过程”是一种以事件为中心的编程思想。
“面向对象”是一种以事务为中心的编程思想。
比如以公共汽车而言。
“面向过程”就是汽车启动是一个事件,汽车到站是另一个事件。在编程序的时候我们不关心的是某一个事件。而不是汽车本身。我们分别对启动和到站编写程序。类似的还有修理等等。
到了编程就是:
public class 运营
{
void 汽车启动
{
}
void 汽车到站
{
}
}
“面向对象”需要建立一个汽车的实体,由实体引发事件。我们关心的是一个汽车而不是汽车的没个事件。
public class 汽车
{
void 到站()
{
}
void 启动()
{
}
}
使用的时候需要建立一个汽车对象,然后进行应用。
其实就是描述方法的不同,所谓编程就是用编程语言告诉电脑你想让他做什么。
那么同一件事情就有很多种描述方法,比如吃饭这件事情。
你可以描述它的过程,人拿着勺子,把饭从碗里送到嘴里,然后咀嚼下咽。
也可以从每个对象的角度出发进行描述,比如定义人可以操控勺子,饭到嘴里之后可以咀嚼下咽;定义勺子受到人的控制之后可以把饭从,碗中送到嘴里;饭受到勺子的操控之后,位置就从碗里,变成了嘴里。
前一种就可以当成是面向过程,重点在于把完成一件事情的过程描述清楚,第二种就是面向对象,重点在于把参与这件事情的每个实体的状态、行为描述清楚。说的比较口语化,意思也有一些偏差,大概意思懂了就好
面向对象
一 、面向过程与面向对象的区别:
前者是一种谓语和宾语的关系;后者是一种主语和谓语的关系 。
二、面向对象的三个特征:
??封装 ??继承 ??多态
三、类与对象:
对象又称作实例,是实际存在的该类事物的每个个体。类是对某一类事物的描述,是抽象的、概念上的 定义。 *面向对象的设计的重点是类的设计。
四、对象的比较:
1 “= =”运算符与equals()方法的区别: 前者辨别实质是否相等;后者辨别长相是否相等。
五、 实现类的封装性:
1不能让外面的类随意修改一个类的成员变量;2在定义一个类的成员(包括变量和方法),使用private关键字说明这个成员的访问权限,只能被这个类的其他成员方法
调用,而不能被其他的类中的方法所调用; 3为实现封装性,常将类的成员变量
声明为private,再通过public的方法来对这个变量进行访问。对一个变量的操作,一般都有 读取和赋值操作,我们一般定义两个方法来实现这两种操作,即:getXxx()与setXxx();
4一个类就是一个模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其他的一切内容。再进行程序设计时,应尽量避免一个模块直接修改或操作另一个模块的数据,模块设计追求强内聚(许多功能尽量在类的内部独立完成,不让外面干预),弱耦合(提供给外部尽量少的方法调用)。
六、构造函数的定义与作用:
1、 特征:??名称与类相同;??不含返回值;??不能在方法中用return返回一个值注意:构造方法里不含返回值的概念是不同与void的,在定义构造方法时加了void,结果这个方法就不再被自动调用了。
2作用:当一个类的实例对象刚产生时,这个类的构造方法就会被自动调用,
我们可以在这个方法中加入要完成初始化工作的代码。
七、若类中已定义了一个构造方法,编译器就不再自动产生类似public Person(){ }的构造方法。
八、this引用句柄的应用:
1、 类的成员名和对其进行赋值的成员方法的形参变量同名时,使用this便于理解;
2、 假设我们有一个容器类和一个部件类,在容器类的某个方法中要创建部件类的实例对象,而部件类的构造方法要接收一个代表其所在容器的参数。
3、 构造方法是在产生对象时被java系统自动调用的,我们不能在程序中象调用其他方法一样去调用构造方法。不是用构造方法名,而是用this的形式,根据其中的参数列表,选择相应的构造方法。
九 、 垃圾回收过程分析:java中的finalize()方法;System.gc的作用。
Finalize()的调用是在无用对象被回收前发生的。
一○、 static 静态方法:1、 在静态方法中只能直接调用同类中其他的静态成员,而不能直接访问类中的非静态成员。原因是对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象;2、 静态方法不能以任何方式引用this和super关键字;3、 main()方法是静态的,因此,JVM在执行main方法时不创建main方法所在的类的实例对象,因此在main()方法中,我们不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员。
一一、 JVM在程序执行时,只有在调用其他类的时候,才加载这个类并将其初始化(即将构造方法及静态变量进行加载并初始化。
一二、 单态设计模式:采取一定的方法保证在整个的软件系统中,对某个 类只能存在一个对象实例,并且该类只能产生严格取得其对象实例的方法。若我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造方法的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类的内部仍可以产生该类的对象。
一三、 内部类: 1、在类中直接定义的内部类??*嵌套类可直接访问嵌套他的类的成员,包括private成员,但嵌套类的成员却不能被嵌套它的类直接访问; * 在内部类对象保存了一个对外部类对象的引用,当内部类的成员方法中访问某一变量时,若在该方法和内部类中都没有定义过这个变量,内部类中对this 的引用会被传递给那个外部类对象的引用; * 若用 static 修饰一个外部类,这个类就相当于是一个外部定义的类,所以 static 的内部类中可声明static 成员,但非static 的内部类中的成员是不能声明为 static 的,static 的内部类不能再使用外层封装类的非 static 的成员变量。
例:若函数的局部变量,内部类的成员变量,外部类的成员变量重名,则应该按下面的程序代码所使用的方式来明确指出我们真正要访问的变量。
public class Outer
{
private int size;
public class inner
{
private int size;
public void doStuff(int size)
{
size++; //应用doStuff函数的形参
this.size++; //引用Inner类的成员变量
Outer.this.size++; // 引用Outer类的成员变量
}
}
}
2、在方法中定义的内部类:在方法中定义的内部类只能访问方法中的final 类型的局部变量,用final 定义的局部变量相当于一个常量,它的生命周期超出方法运行的生命周期。3、在内部类中的方法可以访问外部类的成员变量,而外部类的方法不能直接访问内部类的成员变量,若要访问,除非在内部类中再定义一个构造方法,这个构造方法的参数是外部类。
一四、在一个类中定义的局部变量,编译器可以对他初始化,但在一个方法中定义的局部变量,编译器不对它初始化。
现在用的最多的是ASP.Net(C#)与JSP(Java)