目录
1.面向对象分析OOA——Object Oriented Analysis
2.面向对象设计OOD--object oriented design
3.面向对象编程OOP--object oriented program
【1】万事万物皆对象
面向过程与面向对象的区别:
面向过程:当事件比较简单的时候,利用面向过程,注重的是事件的具体的步骤/过程,注重的是过程中的具体的行为,以函数为最小单位,考虑怎么做。(以把大象装进冰箱为例:过程是,打开冰箱,大象迈腿进入冰箱,然后关闭冰箱)
面向对象:注重找“参与者”,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做;(以把大象装进冰箱为例:对象分别是大象和冰箱,大象的方法有:进入冰箱迈前腿,迈右腿进入冰箱。冰箱的方法有:打开冰箱,亮灯,关闭冰箱)
面向过程--->面向对象,其实就是由执行者--->指挥者的一个过渡
二者相辅相成,并不是对立的。解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系,方便我们分析整个系统;具体到微观操作,任然使用面向过程方式来处理
面向过程:编年体——《资治通鉴》
面向对象:纪传体——《史书》
【2】对象与类
对象:具体的事物,具体的实体
类:对对象向上抽取像的部分,形成类,类是抽象的,是一个模板
一般在写代码的时候先写类,然后再根据类创建对应的对象
【3】面向对象的三个阶段:
1.面向对象分析OOA——Object Oriented Analysis
如对象张三、李四、王五、你、我、他、可以抽取出一个类——人类
类中有什么呢?
动词——》动态特征——》方法
名词——》静态特征——》属性
2.面向对象设计OOD--object oriented design
先有类,再有对象:
类:人类对应为Person
对象:zahgnsan,lisi,wangwu
3.面向对象编程OOP--object oriented program
创建类与创建对象
创建类:
import javax.lang.model.element.NestingKind;
/**
* @Author: Rick
* @Description:
* @Date: Crated in 22:29 2022/6/21
* @Modified By:
*/
public class Person {
//名词————》属性
int age;
String name;
double height;
double weight;
//动词————》方法
public void eat(){
System.out.println("我喜欢吃饭");
}
public void sleep(String address){
System.out.println("我在"+address+"睡觉");
}
public String introduce(){
return "我的名字是:"+name+",我的年龄是:"+age+",我的身高是:"+height+",我的体重是"+weight;
}
}
创建对象
/**
* @Author: Rick
* @Description:
* @Date: Crated in 22:42 2022/6/21
* @Modified By:
*/
public class Test {//测试类
public static void main(String[] args) {
//创建一个人类的具体的对象/实例:
//创建一个对象,对象的名字叫:zs
//Person 属于引用数据类型
//第一次加载类的时候,会进行类的加载,初始化创建对象的时候,对象的属性没有给赋值,有默认的初始化的值
Person zs = new Person();
zs.name="张三";
zs.age=18;
zs.height=180.5;
zs.weight=65;
//再创建一个对象
//再次创建类的时候,就不会进行类的加载了,类的加载只在第一次需要的时候加载一次
Person ls = new Person();
ls.name="李四";
ls.age=20;
ls.weight=70;
ls.height=190.8;
//对属性值进行读取
System.out.println(zs.name);
System.out.println(ls.age);
//对方法进行操作
//不同的对象,属性有自己的特有的值,但是方法都是调用类中通用的方法
//属性:各个对象的属性是独立的
//方法:各个对象的方法是共享的
zs.eat();
ls.eat();
zs.sleep("教室");
String str= zs.introduce();
System.out.println(str);
}
}