1、面向过程和面向对象有什么区别?
什么是面向过程的开发方式? 面向过程的基本概念:面向过程是一种以过程为中心的编程思想。面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用,是一种思考问题的基础方法。 面向过程有什么缺点?(耦合度高,扩展力差。) 面向过程最主要是每一步与每一步的因果关系,其中A步骤因果关系到B 步骤,A和B联合起来形成一个子模块,子模块和子模块之间又因为因果 关系结合在一起,假设其中任何一个因果关系出现问题(错误),此时 整个系统的运转都会出现问题。(代码和代码之间的耦合度太高,扩展力 太差。) 采用面向过程的方式开发一台计算机会是怎样? 这台计算机将没有任何一个部件,所有的都是融合在一起的。 你的这台计算机是一个实心儿的,没有部件的。一体机。 假设这台一体机的任何一个“部位”出问题,整个计算机就不能用了, 必须扔掉了。(没有对象的概念。) 采用面向对象的方式开发一台计算机会是怎样? 内存条是一个对象 主板是一个对象 CPU是一个对象 硬盘是一个对象 然后这些对象组装在一起,形成一台计算机。 假设其中CPU坏了,我们可以将CPU拆下来,换一个新的。 面向过程有什么优点?(快速开发) 对于小型项目(功能),采用面向过程的方式进行开发,效率较高。 不需要前期进行对象的提取,模型的建立,采用面向过程 方式可以直接开始干活。一上来直接写代码,编写因果关系。 从而实现功能。 什么是面向对象的开发方式? 面向对象的基本概念:面向对象是软件开发方法中的一种;是一种对现实世界理解和抽象的方法;是思考问题相对高级的方法。 面向对象就是将现实世界分割成不同的对象,然后每一个对象 都实现成对象,然后给一个环境驱动一下,让各个对象之间协 作起来形成一个系统。 采用面向对象的方式进行开发: 耦合度低,扩展力强。 找一个合适的案例。说明一下面向对象和面向过程的区别? 蛋炒饭: 鸡蛋和米饭完全混合在一起。没有独立对象的概念。 假设客户提出新需求:我只想吃蛋炒饭中的米饭,怎么办? 客户提出需求,软件开发者必须满足这个需求,于是 开始扩展,这个软件的扩展是一场噩梦。(很难扩展,耦合度太高了。) 盖饭: 老板,来一份:鱼香肉丝盖饭 鱼香肉丝是一道菜,可以看成一个独立的对象。 米饭可以看成一个独立的对象。 两个对象准备好之后,只要有一个动作,叫做:“盖” 这样两个对象就组合在一起了。 假设客户提出新需求:我不想吃鱼香肉丝盖饭,想吃西红柿鸡蛋盖饭。 这个扩展就很轻松了。直接把“鱼香肉丝”对象换成“西红柿鸡蛋”对象。 面向过程主要关注的是:实现步骤以及整个过程。 面向对象主要关注的是:对象A,对象B,对象C,然后对象ABC组合,或者CBA组合
2、当我们采用面向对象的方式贯穿整个系统的话,涉及到三个术语:
OOA:面向对象分析
OOD:面向对象设计
OOP:面向对象编程
实现一个软件的过程: 分析(A) --> 设计(D) --> 编程(P)
3、类和对象的概念
面向对象当中最主要“一词”是:对象。 什么是类? 类实际上在现实世界当中是不存在的,是一个抽象的概念。 是一个模板。是我们人类大脑进行“思考、总结、抽象”的一个 结果。 类本质上是现实世界当中某些事物具有共同特征,将这些共同 特征提取出来形成的概念就是一个“类”,“类”就是一个模板。 什么是对象? 对象是实际存在的个体。(真实存在的个体) 在java语言中,要想得到“对象”,必须先定义“类”,“对象”是通过“类” 这个模板创造出来的。 类就是一个模板:类中描述的是所有对象的“共同特征信息” 对象就是通过类创建出的个体。 这几个术语你需要自己能够阐述出来: 类:不存在的,人类大脑思考总结一个模板(这个模板当中描述了共同特征。) 对象:实际存在的个体。 实例:对象还有另一个名字叫做实例。 实例化:通过类这个模板创建对象的过程,叫做:实例化。 抽象:多个对象具有共同特征,进行思考总结抽取共同特征的过程。 类 --【实例化】--> 对象(实例) 对象 --【抽象】--> 类 类是一个模板,是描述共同特征的一个模板,那么共同特征包括什么呢? 类 = 属性 + 方法 属性来源于:状态 方法来源于:动作 public class 明星类{ //属性-->状态,多见于名词 名字属性; 身高属性; //方法-->动作,多见于动词 打篮球方法(){ } 学习方法(){ } } 可以定义一个学生类(Student) public class Student { // 属性 // 姓名 // 性别 // 身高 // 方法 public .... sing(){ } public .... dance(){ } public .... study(){ } .... }
4、类的定义
4.1、怎么定义一个类,语法格式是什么?
[修饰符列表] class 类名 { 类体 = 属性 + 方法 }
属性在代码上以“变量”的形式存在(描述状态) 方法描述动作/行为
7、关于编译的过程 按说应该先编译XueSheng.java,然后再编译XueShengTest.java 但是对于编译器来说,编译XueShengTest.java文件的时候,会自动 找XueSheng.class,如果没有,会自动编译XueSheng.java文件,生成 XueSheng.class文件。
第一种方式: javac XueSheng.java javac XueShengTest.java
第二种方式: javac XueShengTest.java
第三种方式: javac *.java
8、在语法级别上是怎么完成对象创建的呢? 类名 变量名 = new 类名(); 这样就完成了对象的创建。
9、什么是实例变量? 对象又被称为实例。 实例变量实际上就是:对象级别的变量。 public class 明星类{ double height; } 身高这个属性所有的明星对象都有,但是每一个对象都有“自己的身高值”。 假设创建10个明星对象,height变量应该有10份。 所以这种变量被称为对象级别的变量。属于实例变量。
10、对象和引用的区别? 对象是通过new出来的,在堆内存中存储。 引用是:但凡是变量,并且该变量中保存了内存地址指向了堆内存当中的对象的。