目录
一、面向对象和面向过程的区别
面向过程:强调过程步骤
面向对象:强调对象
分析:围棋程序
面向过程:
1.黑棋落子
2.绘制棋盘
3.判断输赢
4.白棋落子
5.绘制棋盘
6.判断输赢
7.黑棋落子
面向对象:
1.棋子
2.棋盘
3.规则
对象(初步概念):你看到的,你想到的,有形的,无形的事物,都是对象。
概括来说就是:万物皆为对象
二、类与对象的概念
类:是具有相同属性和行为的对象的集合(模板)
对象:根据类的属性和行为创建的实例化。
类:定义了对象的属性和方法
通过类可以实例化多个该类的对象,每个对象的数性值不同,可以说类好比设计图纸
而对象好比根据图纸建设出来的多栋楼房
举例:
类: 学生
对象: 小明 老王 大黄
思考:
类: 水果
对象 : 苹果 西瓜 芒果
面向对象:
面向对象的思想已经不仅仅是编程思想,已经扩展到设计,测试等各个方面,面向对象指的是以对象为治本单位去分析,设计以及实现系统
三、构造函数和对象的关系
普通构造方法
<script>
function Student(name,id,age){
this.name=name;
this.id=id;
this.age=age
this.showValue=function(){
console.log(stu.age,stu.id,stu.name)
}
}
let stu=new Student("laowang",1,18)
stu.showValue();
</script>
ES6构造方法
<script>
class Student{
constructor(name,id,age){
this.name=name;
this.age=age;
this.id=id;
this.showValue=function(){
console.log(this.name,this.id,this.age)
}
}
}
var stu=new Student("laowang",2,18)
stu.showValue();
</script>
三、类与类的关系:组合
组合:一个类的成员属性是另一个类的对象
<script>
class Birthday{
constructor(y,m,d){
this.y=y;
this.m=m;
this.d=d;
}
showValue(){
console.log(this.y,this.m,this.d)
}
}
class Student{
constructor(name,id,bir){
this.name=name;
this.id=id;
this.bir=bir;
}
showValue(){
console.log(this.name,this.id)
this.bir.showValue();
}
}
let bir=new Birthday(2000,4,16)
let stu=new Student("laowang",2,bir)
stu.showValue();</script>
四、类与类的关系:依赖
依赖:一个类的成员方法的参数,是另一个类的对象
有一辆小汽车行驶在一条公路上,计算这量小汽车以60KM/小时的速度,行驶1000KM需要多久。
面向对象分析问题的方法
1.分析问题找出所有对象---设计类时先有对象后有类
2.根据对象抽象出其属性和行为创建类---创建对象时,先有类后有对象
3.各个对象各司其职
<script>
class Car {
constructor(speed) {
this.speed = speed;
}
//依赖
time(r) {
return r.length / this.speed;
}
}
class Road {
constructor(length) {
this.length = length;
}
}
let c = new Car(60);
let r = new Road(1000);
console.log(c.time(r));
</script>