面向对象和面向过程的区别
面向过程:强调步骤
面向对象:强调对象
分析:比如围棋程序
面向过程:
1、黑棋落子
2、绘制棋盘
3、判断输赢
4、白起落子
5、绘制棋盘
6、判断输赢
7、黑棋落子
而面向对象:
1、棋子
2、棋盘
3、规则
对象的初步概念:看到的、想到的、有形的、无形的事物都
是对象。
概括来说就是万物皆为对象。
类与对象的概念
类:是具有相同属性和行为的对象的集合(模板);
对象:根据类的属性和实例创建的实例化
类:定义了对象的属性和方法
通过类可以实例化多个该类的对象,每个对象的属性值不同,
可以说类好比设计图纸,而对象好比根据图纸建设出来的楼房
举例和思考
类: 学生
对象:小明 小红 小张
思考:
类: 水果
对象: 苹果 西瓜 芒果
很明显,苹果有红苹果、绿苹果、和各种品种的苹果
所以苹果也是类
面向对象:面向对象的思想已经不仅仅是编程思想,已经扩展到
设计,测试等各个方面,面向对象指的是以对象为基本单位去分
析、设计以及实现系统。
构造函数和对象的关系
a.普通构造法
function Student(name,id,score){
this.name=name;//通过this指针,来对属性与行为绑定
this.id=id;
this.score=score;
this.showInfor=function(){
document.write("我就是隔壁老王:"+""+this.name
+""+this.id+""+this.score)
}
}
//let 对象名=new 构造方法(形参);
var s=new Student(1,"老王",1)
s.showInfor();
var s1=new Student(2,"小明",2);
s1.showInfor();
ES6构造方法
class 类名{
类体;
构造方法中通过this来添加属性
普通方法中不要用this添加
}
class Student{
constructor(id,name){
this.id=id;
this.name=name;
}
showVlaue(){
console.log(this.id+","+this.name)}
}
let s=Student(1,"老王");
let s1=Student(2,"l老李")
类与类的关系:关联
关联关系:对象和对象之间的连接。在面向对象中,关联
关系的代码表现形式为一个类的对象作为另一个
类的属性类型存在。
即“有”的关系:“has-a”。
<script>
class Birthday{
constructor(newY,newM,newD){
this.year=newY;
this.month=newM;
this.day=newD;
}
showValue(){
console.log(this.year,this.month,this.day)
}
class Student{
constructor(newId,newName,newBir){
this.id=newId;
this,name=newName;
this.Bir=newBir}
}
showValue(){
document.write(this.id,this.name,this.Bir.day);
this.Bir.showValue()
}
}
let Bir=new Birthday(333,444,555);
let s=new Student(11,"小明",Bir)
</script>