类和对象:
java的程序结构:以类来组成程序。
文件——一个文件一个类
一个类由多个函数构成。
C语言的程序结构:文件(物理文件)——文件包含若干个函数。
C语言的程序结构——文件中直接包含函数(多个函数组成一个文件)一个工程由多个文件组成。
从代码的角度:C文件中直接定义的函数
Java文件中是一个类(类的内部是函数)
(java中多引入一个类的概念)
C语言是一种面对过程的语言。
Java语言是一种面向对象的语言。
面向过程和面向对象的区别:
面向过程还是面向对象都是编程语言的思想,任何编程语言都是解决日常业务的。不管是面向对象还是面向过程都是需要实现具体业务。
面向:关注点
面向过程:关注点是在实现的过程,就以函数的方式来定义(一个业务划分为一个函数),由若干个函数从逻辑上
组成的一个文件,把一个系统划分为多个文件;面向过程核心关注点是在实现具体的业务。
面向对象:关注点是在对象,对象的来源就是类;实现具体的业务的时候先确定完成当前业务的对象是哪个,而不是具体业务怎么实现。
如果是C语言:关注点是在做饭怎么实现,第一步需要做什么,接着做什么,关注点是当前业务实现的细节;
如果是Java:关注点是做饭的业务由谁完成,只有确定了完成业务的对象,在业务对象的内部存在一个做饭的方法(在这个方法中才具体完成业务)
C语言不关注业务是由谁完成的,只关注业务的具体实现;Java关注点是先关注业务是由谁完成的;所以C语言和Java语言的关注点不同,关注点不同就是面向不同
C不关注业务是实现对象,只关注业务的具体实现,所以C的结构就是以函数来组成,因为函数就是具体完成业务的;Java关注业务是由谁完成,那么所以先按照业务划分对象,以类的行是定义程序;
面向过程和面向对象的区别就 在于分析阶段的关注点不同,一个是关注的具体的实现,一个是关注的实现的对象。
例如:餐厅的管理系统
C:只考虑当前餐厅的所有业务,例如:做饭,收钱,采购。
相应的定义对应的函数就可以了
Java:考虑当前的业务由哪个对象完成。
分析出来有三个对象,就会先定义三个类。
厨师类:包含做饭函数;收银员类:包含收钱函数;采购人员类:包含采购函数。
在Java世界中一切都是对象,所以先要定义类,才能通过类来创建对象;
按照系统的业务分析,分析出当前系统的所有对象,按照分析的对象来定义类(建模过程);
Java中定义一个类:
class 类名{
}
函数都是隶属于一个类的,类中包含函数。
//当前定义的student类,类是一种模型,不能完成具体业务
//定义类是为了创建对象
//对象会按照定义的类来创建对象。
public class Student{
//定义的属性
//public 表示当前属性是公开的
//String,int是当前属性的数据类型
public String stuName;
public String stuSex;
public int stuAge;
//定义两个方法(函数)
public void showStuName(){
System.out.println("姓名:"+"stuName");
}
public void study(){
System.out.println(stuName+"正在学习");
}
}
一个类中包含函数,还有属性(定义的全局变量)
一个类中可以包含1:属性 2:方法
属性:描述当前对象的一个特征(名词部分)。
方法:描述当前对象的行为(动词部分)。
属性和方法共同来描述一个类。
一个类是描述对象的。
前面说了餐厅的管理系统经过分析,分析出来三个参与对象,厨师,收银员,采购人员。
当前的系统是需要计算机执行,那么计算机应该也不知道厨师对象应该拥有什么行为和属性;那么就需要以代码的形式告诉给计算机厨师应该拥有哪些属性和方法;
需要让计算机知道我们业务分析中的厨师,收营员,采购人员应该是什么样子的;先建模(建立模型(对象))这个过程就是以类的形式告诉给计算机当前业务系统中出现的厨师,收营员,采购人员是什么样子的。
类其实是一种类似于图纸的东西,就像造汽车的图纸,按照图纸造一个具体的汽车。
图纸就是定义的类,按照图纸制造出来的汽车就是对象。
在定义类的时候(类是用于描述对象的)一定要先搞清楚类描述的对象,以及对象在当前业务系统中完成的业务;按照业务系统的分析来定义当前的类;
类中语法规定是可以定义属性和方法,一个对象的属性和方法可以有很多,一定要按照与当前业务系统相关的属性和方法来定义当前类(例如:定义一个教学管理系统:在当前系统中业务分析出有教师的参与者对象,教师的属性(特征)和方法(行为)可以有很多,注意一定要选取和当前业务系统相关的属性和方法来定义)
一个类只能描述一种实物对象,也就是说一个类不能描述多个实物对象;一个类要保持单一性(包括一个函数也要保持单一性,就是一个函数只能描述一个业务)。
创建类的对象:
public class Test{
public static void main(String[] args){
//可以创建student类的对象
//student s;定义对象,但是当前对象没有赋值 类似于 int num
//对象的赋值 需要new(new主要会按照指定的类来分配空间)
//当前student类中定义的有三个属性和两个方法,三个属性是需要占用内存空间
//创建对象的时候就是按照定义来分配内存空间,
//new student()就会按照student类定义的属性和方法来分配内存空间。new完以后。
//其实就是分配一片内存空间来存储定义的属性和方法,然后把new(分配)的这片空间的地址交给s这个对象变量
//那么以后s就代表new出现这片的空间。
student s=new student();
//通过对象访问对象中存在的属性和方法
s.stuName="张三";
s.stuSex="男";
s.stuAge=20;
//调用方法
s.showStudent();
s.study();
};
}
一个类可以创建多个对象,一个类创建的多个对象,都各自拥有类定义的属性和方法,