对于面向对象编程OOP的一些理解
2019-10-05 本文已影响0人
北欧的蓝天
OOP从老一代的编程语言继承了一些好的想法:
1)使用变量和类型,而不用去担心数值的细节和它们在内存中如何管理。
2)通过定义和使用功能,可以把复杂的逻辑拆分成许多可以被管理的部分。
但是老一代的编程语言,难以描述客观世界。OOP的诞生就是用于描述客观世界。
1)OOP,可以通过定义不同对象的属性(attributes)和行为(functions),以此来描述客观世界。
e.g. 学生,员工,他们都有自己的属性(data/state)和行为(behavior/actions)。
2) OOP,可以描述不同对象之间的逻辑关系。behavior往往是具有一定逻辑性(logic)的。
比如:通过给不同的对象定义各自Class,将Class关联起来,以此把不同的对象给关联起来
e.g. Class: Garage (车库) (heater, parking)包含 Class: heater, Class: parking
菱形箭头表示从属关系。heater和parking都是属于Garage的。
1)空心菱形箭头表示弱从属关系
假定车库被拆了之后,heater还可以拆了在其他地方继续使用。它们的生命周期不一样,弱从属。
2)实心菱形箭头表示强从属关系
假定车库被拆了之后,parking就不存在了。它们的生命周期一样,强从属。