面向对象基本概念6.1面向对象基本概念面向对象的方法,使我们分析、设计和实现一个系统的方法尽可能自然地使用我们在生活中用到的以对象为中心的思想,分析、认识、设计一个系统的方法。面向对象和面向过程都是一种思想。面向过程强调的是功能行为面向对象将功能封装进对象,强调具备了功能的对象。面向对象是基于面向过程的。从执行者变成指挥者。6.1面向对象基本概念对象:现实世界中某个具体的物理实体的逻辑表示(抽象)或者包含有内部状态的概念。如:冰箱是拥有外形、尺寸、颜色等外部特性和开、关、存储等功能的实体;而这样一个实体,在面向对象的程序中,就可以表达成一个计算机可理解、可操纵、具有一定属性和行为的对象。抽象数据类人脑实体现实世界计算机逻辑的实现映射对象类计算机6.1面向对象基本概念6.1面向对象基本概念掌握面向对象的困难之处在于思路的转换,以对象世界的思维方式来思考问题。定义类和建立对象是面向对象编程的主要任务。6.1面向对象基本概念类和对象的关系把相似的对象抽象成一个类。在软件中,类,就是一个模板,它定义了通用于一个特定种类的所有对象的状态(变量)和行为(方法)。类是创建对象的模板,对象是类的实例。汽车设计图第1辆第2辆第3辆图汽车类与汽车的实例6.1面向对象基本概念6.1面向对象基本概念面向对象编程的主要特点封装性(Encapsulation):实现模块化(modularity)和信息隐藏(informationhiding),有利于程序的可移植性。继承性(Inheritance):可以定义一套对象之间的层次关系,下层的对象继承了上层对象的特性,籍此可以实现程序代码重用,并且有效地组织整个程序。多态性(Polymorphism):根据程序运行时对象的实例类型来选择不同的信息处理。籍此可以提高程序的灵活性。信息隐藏——电视内有很多复杂零件,通过各种按钮将内部的复杂结构给隐藏了。简化操作——只需通过调频和音量等少量按钮,就可以操纵电视。程序的基本封装单元是类,通过类的封装,既可以将代码单元化,又达到了信息隐藏的目的。封装:数据的内部表示通过定义在数据上的操作对外隐藏起来。6.1面向对象基本概念——封装封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。私有数据方法方法数据对象A对象B公有数据6.1面向对象基本概念——封装自然界通过继承而繁衍发展程序中的继承是从抽象到具体的过程6.1面向对象基本概念——继承什么是子类?子类是作为另一个类的扩充或修正所定义的一个类。bicycle(superclass)MountainbikesRacingbikesTandembikessubclass6.1面向对象基本概念——继承继承是子类利用父类中定义的方法和变量就像它们属于子类本身一样。继承关系是传递的。若类C继承类B,类B继承类A时,则类C既有从类B继承下来的属性和方法,也有从类A继承下来的属性和方法,还可以有自己新定义的属性和方法。6.1面向对象基本概念——继承继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。提供软件复用功能。若类B继承类A,建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和方法)。可减少代码和数据的冗余度,大大增加程序的重用性。6.1面向对象基本概念——继承多态即“有多种形式”。意味着根据对象(类)类型的不同而表现出不同的行为。多态即多种形态,在运行时确定其状态,在编译阶段无法确定其类型,这就是多态。Python中的变量是弱类型的,在定义时不用指明其类型,它会根据需要在运行时确定变量的类型。6.1面向对象基本概念——多态在Python中很多地方体现多态的特性,比如内置函数len(object),len函数不仅可以计算字符串的长度,还可以计算列表、元组等对象中的数据个数。在运行时通过参数类型确定其具体的计算过程,正是多态的一种体现。6.1面向对象基本概念——多态6.1面向对象的基本特征封装与多态区别封装可以让用户不关心对象如何构建而直接进行使用。多态可以让用户对于不知道什么类(对象类型)的对象进行方法调用。