"数据结构和c++知识点"
面向对象技术有七个特点:模块性、封装性、代码共享、灵活性、易维护性、增量性设计和局部存储与分布处理。面向对象技术将对象作为功能和数据独立的单元,相互间只能通过对象认可的途径进行通信,可以重用代码,避免代码的重复设计,并且可以根据自身的特点进行功能实现。
在面向对象程序设计中,大型程序设计是根据待解决问题的复杂度来判定的大型程序必须由多人合作完成,因此进行大型程序设计的管理具有复杂性。同时,大型程序有大量的系统状态,这对测试系统的正确性带来极大的困难。面向对象设计方法可以将大型程序分解成小型系统设计和模块分解,以便更好地管理大型程序的复杂性。
面向对象设计方法与其他设计方法有所不同,横向比较中,面向对象程序设计将计算过程看作分类加状态变换的过程,而函数程序设计将计算过程看作函数作用过程,逻辑程序设计将计算过程看作推演过程。纵向比较中,面向对象程序设计综合了功能抽象和数据抽象,将解决问题的过程看作是一个分类演绎过程,而结构化程序设计强调功能抽象和模块性,将解决问题的过程看作是一个处理过程。
对象是指我们认识世界的基本单元,整个世界就是形形色色的对象组成。对象的特点有自主性、封闭性、交互性、被动性和动态性。对象间的关系有创建关系、聚合关系、通讯关系和实例化关系。多态是指一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。
在面向对象技术中,实例是指任何单个对象都是某个类的实例。类与实例的关系是一种抽象和具体的关系。类的所有实例能响应的消息模式相同,且采用同样的方法完成消息所要求的操作。类的所有实例具有相同的数据结构,且采用相同的名字来引用。
在面向对象技术中,协议是指一个对象能够接受并且愿意接受的所有消息构成的对外接口。其他对象只能向该对象发协议中所提供的消息。封装是指对象的所有数据和对这些数据的操作封装在一起,外部对象只有通过给它发消息来改变或得到这些数据。
在类型系统中,强类型系统和弱类型系统是两种不同的类型系统。强类型系统的目标是让所有信息的语境都有明确的类型,而弱类型系统的目标是让所有信息的语境都可以被隐式转换为可以接受的类型。代表强类型系统的语言有C++、Java等,而代表弱类型系统的语言有Python、JavaScript等。