大纲:
1. 面向对象与面向过程的区别
2. 如何理解面向对象;
3. 面向对象的具体分析原则:例题4个
4. 面向对象的编程单位是什么,在定义类时所涉及到的元素有那两个。
5. 类与对象的关系
6. 成员变量与局部变量的区别。
7. 匿名对象
——————————————————————————
【面向对象与面向过程的区别】——【示例篇】
【示例一】——将大象装进冰箱里。
【面向过程的思想来思考】——强调的动作
1.打开冰箱;
2.存储大象;
3.关上冰箱;
主体体现语言——C语言,这种语言在编写时,都是通过函数来体现的。
【面向对象的思考方式】——强调的是事物!
1. 冰箱打开;
2. 冰箱存储大象;
3. 冰箱关上;
主体体现语言——Java,这种语言在编写时,以冰箱编程单元。
打开,存储大象,关上,动作都是冰箱应该具备的动作。只要找到了冰箱,就可以操作冰箱的这些动作。
【示例二】——去电脑城买电脑
【面向过程】——自己干
1. 查资料,网络,报纸。——硬件参数信息。
2. 询价,砍价。
3. 装机,并检查。
4. 运输回家。
【面向对象】——找一个懂行的人一起去(陪着去)。
1.小红帮我看看这些信息。
2.小红帮我询价,砍价。
3.小红帮我监督。
4.小红帮我运输
两种思想的转变——由一个动作的执行者,转变为一个动作的指挥者,但前提是小红必须得具备这个功能。
【如何理解面向对象】
1. 面向对象是一种思想,是符合现在人们思考习惯的一种思想;
2. 面向对象的出现将复杂问题简单化;
3. 面向对象将过程中的执行者,转换为指挥者。
【面试时】
当面对一个复杂的项目时:
1. 面试官自己干;
2. 面试官找具备这样的功能的人来完成。
【面向对象与面向过程的联系】
面向对象基于面向过程,将过程进行封装,封装到了对象中。
【面向对象的具体分析】
· 先找该问题领域涉及到的对象——【名词提炼法】人,门;
· 找该问题领域涉及的动作——开。
这个功能定义在那个对象中最合适,就定义在那个对象中。 所谓的最合适:那个对象最清楚这个功能。开的动作使用到了门这个事物中大的内容比如:门轴等。门最清楚开的动作,所以应该定义在门这个对象中。
1. 人开门;
1. 先找该问题领域涉及到的对象——【名词提炼法】,人, 门;
2. 找该问题领域涉及的动作——开。
这个功能定义在哪个对象中最合适,就定义在那个对象中。
最合适:那个对象最清楚这个功能。
开的动作使用到了们这个事物中的内容比如:门轴等。
门最清楚开的动作,所以应该定义在门 事物中。
2. 【人在黑板上画圆】
涉及对象:
person , blackboard ,circle
涉及动作:
draw( )
必须知道:圆心,半径,这些只能是 圆才最清楚。
3.【列车司机刹车】
涉及对象:
person , car
涉及动作:
刹车
谁对刹车动作最清楚:车知道如何控制车停下来,司机只是给车发了一个信号。
4. 【售货员统计售货小票上总金额】
涉及对象:
售货员 , 售货小票;
涉及方法:
统计;
售货员对象调用售货票据对象的getTotalMoney()方法,getTotalMoney()方法内部计算出售货票据的总金额。
【面向对象设计——小技巧】——谁拥有数据,谁就对外提供操作这些数据的方法。
【思考题】
1. 球从一根绳子的一段移动到了另一端。
2. 两块石头磨出一把石刀,石刀可以砍树,砍成木材,木材可以做成椅子
【面向对象的程序设计中编程单位为类】
定义类时涉及到的元素:
【属性】——成员变量;
【行为】——成员函数;
【类与对象的关系。】
类是用于描述事物,是具体事物的描述;
对象 是 类的实例。
【成员变量和局部变量的区别?】
【1. 定义位置不同:】
成员变量定义在类中,作用域为整个类;
局部变量定义在函数中,函数调用结束,局部变量消失;
【2. 内存中出现的时间不同:】
成员变量定义好后,随着其在堆内存中创建而产生;
局部变量 所属区间参与运算时,他出现在栈内存中;
【3. 生存周期不一样:】
成员变量,随着对象的出现而出现,随着对象的消失而消失。
局部变量,当所属区间参与运算时,他存在,当所属区间在运算完毕后,在内存中消失 而消失。。
【4. 默认初始化值;】
成员变量:因为都在堆内存中,所以都有默认初始化值
局部变量:没有默认的初始化值;
【匿名对象】没有名字的对象。
——对象的简写格式;
【好处】——简化代码的格式。
【局限性】——
Car c2 = new Car( );
c2.run( );
与
new Car( ).run( )
相等。
【匿名对象与非匿名对象的区别】
Car c3 = new Car( );
c3.color = "red";
c3.num = 8;
c3.run( );
new Car( ).color = "red";
new Car( ).num = 8;
new Car( ).run( );
【匿名对象的使用】
1. 当对象对方法进行一次调用的时候,可以使用匿名对象来简化。
当对对象的成员进行多次调用时,必须起名字。
2. 可以将匿名对象作为实际参数进行传递。
它出现的根本原理是:简化书写。