面向对象编程是什么意思,面向对象编程和面向过程编程的区别

  面向对象编程是什么意思,面向对象编程和面向过程编程的区别

  对象的概念

  “面向对象”的核心是“对象”二字,对象的本质在于“集成”

  所有的程序都是由“数据”和“函数”组成的,所以编程的本质就是定义一系列数据,然后定义一系列函数对数据进行操作。在学习“对象”之前,程序中的数据和函数被分离如下

  数据:

  name=cjk

  年龄=18岁

  功能:

  def tell_info(姓名、年龄)

  打印( %s:%:%s %(姓名,年龄))

  Tell_info(姓名,年龄)在学习了“对象”之后,我们有了一个容器,可以装数据和函数,所以我们可以说:对象是数据和函数整合的产物,或者说“对象”是装数据和函数的容器/盒子/盒子。

  如果把“数据”比作球衣、秋装、袜子等化妆所需的原材料;如果把功能比作球衣、秋衣、袜子需要的工具,那么物件就是一个收纳盒,彩色收纳盒可以把所有的原料和工具装在一起。

  理解了对象的基本概念之后,理解面向对象的编程方法就相对容易了。面向对象编程就是创建对象,把原来分散在其中的相关数据和功能集成起来。这样使用方便,也可以提高程序的解耦度,从而提高程序的可扩展性。(需要强调的是,软件质量属性包括很多方面,面向对象编程只解决可扩展性问题。)

  类和对象类,即类别/范畴,是面向对象分析和设计的基石。如果多个对象具有相似的数据和函数,那么它们属于同一类别。拥有一个类的好处是,我们可以在类中存储同一个类对象的相同数据和函数,而不是重复存储每个对象的副本,这样每个对象只需要存储自己唯一的数据,大大节省了空间。因此,如果对象是存储数据和函数的容器,那么类就是存储多个对象的相同数据和函数的容器。

  综上所述,虽然我们先介绍对象再介绍类,但是需要强调的是,在程序中,必须事先定义好类,然后调用类生成对象(调用类得到的返回值就是对象)。在生成的对象类和对象之间存在关系。这种关系意味着对象可以访问类中的公共数据和函数,因此类中的内容仍然属于对象。类只是一种节省空间和减少代码冗余的机制。面向对象编程的最终核心仍然是使用对象。

  理解了类和对象这两个核心概念之后,就可以引入面向对象编程了。

  面向对象程序设计类的定义和实例化我们以一个选课系统的开发为例,简要介绍如何基于面向对象的思想编写程序。

  面向对象的基本思想是将程序中要用到的相关数据和函数集成到对象中,然后使用它们。但是,程序中要用到的数据和函数那么多,怎么才能找到相关的呢?我需要先提取选课系统中的角色:学生、老师、课程等。那么很明显,学生有与学生相关的数据,教师有与教师相关的数据和函数。我们以学生为例。

  #学生的数据是

  学校

  名字

  年龄

  性别

  #学生的职能是

  详细的课程选择

  #学生1:

  数据:

  学校=清华大学

  Name=王大锤

  性别=男性

  年龄=28岁

  功能:

  选择课程

  #学生2:

  数据:

  学校=清华大学

  Name=王二哈默

  性别=女性

  年龄=18岁

  功能:

  选择课程

  #学生3:

  数据:

  学校=清华大学

  Name=王三水

  性别=男性

  年龄=38岁

  功能:

  选择课程

  基于以上分析的结果,接下来我们需要做的就是在程序中定义类,然后调用类生成对象。

  班级学生:#班级要用“驼峰体”命名

  学校=清华大学 #数据

  Def choose(self): #函数

  打印( %s选择课程 % self。name)类体是变量和函数最常见的定义,但实际上类体可以包含任何Python代码,类体的代码会在类定义阶段执行,所以会创建一个新的命名空间来存储类中定义的名称。您可以打印学生。__dict__来查看类容器的内容。

  调用类的过程叫做实例化类,返回值是程序中的对象,或者说是实例。

  a=学生()

  b=学生()

  C=Student()所以A,B,C都是一样的(只有类中共同的内容,没有自己唯一的数据)。在实例化的过程中,我们希望为三个学生定制他们自己的唯一数据:姓名、性别和年龄。我们需要在类中添加一个新的__init__方法,如下所示

  班级学生:

  学校=清华大学

  #该方法将在对象生成后自动执行,专门用于对象的初始化。它可以有任何代码,但不能返回除None以外的值。

  def __init__(本人,姓名,性别,年龄):

  self.name=name

  自我.性=性

  年龄=年龄

  定义选择(自己):

  打印( %s选择课程 % self。Name)然后我们重新举例三个学生。

  a=学生(王大锤,男,28岁)

  b=学生(王二哈默,女,19)

  C=Student(王三锤,男,18)只分析A的生成过程,调用类时会先生成一个空对象A,然后将A连同括号中的参数一起传递给Student.init(A,王大锤,男,28)。

  def __init__(本人,姓名,性别,年龄):

  self.name=name

  自我.性=性

  Self.age=age会生成对象的名称空间,也可以用__dict__查看

  stu1。__词典_ _

  { 姓名:王大锤,性别:男性,年龄:28}到目前为止,我们已经创建了三个对象和一个类。对象存储它们自己的唯一数据,类存储它们的公共内容。

  属性访问类属性和对象属性是在类中定义的名称。具体来说,一个类有两个属性:数据属性和函数属性。可以通过__dict__访问属性的值,比如Student.dict[school]],但是Python提供了特殊的属性访问语法。

  Student.school #访问数据属性,相当于Student。__dict__[学校]

  Student.choose #访问function属性,相当于学生的搜索顺序和绑定方法。__dict__[choose]属性。只有对象的唯一属性存储在对象的命名空间中,而对象的相似属性存储在类中。当一个对象访问一个属性时,它将首先在对象本身的__dict__中查找,否则它将在类的__dict__中查找。

  1.类中定义的变量是类的数据属性,由所有对象共享,指向同一个内存地址。

  # id都一样

  打印(id(Student.school)) # 4301108704

  打印(id(A.school)) # 4301108704

  打印(id(B.school)) # 4301108704

  打印(ID (c.school)) # 4301108704 2。类中定义的函数是类的函数属性。可以使用类,但必须遵循函数的参数规则。需要传递几个参数。

  王大锤正在选择一门课程

  学生选择(B) #王二哈默正在选择一门课程

  Student.choose(C) #王三水在选课程,但其实际类中定义的函数主要被对象使用和绑定。虽然所有的对象指向同一个函数,但是绑定到不同的对象是不同的绑定方法,内存地址也不一样。

  打印(id(Student.choose)) # 4335426280

  打印(身份证(选择))# 4300433608

  打印(id(B.choose)) # 4300433608

  Print(id(C.choose)) # 4300433608绑定到对象的方法很特殊,绑定到它的人应该调用它,调用它的人会自动传入 who 本身作为第一个参数(method _ __init__)也是如此

  A.choose() #相当于Student.choose(A)

  B.choose() #相当于Student.choose(B)

  C.choose() #相当于Student.choose(C)绑定不同对象的选择技巧。虽然都是选修课,但是大锤选的课,艾哈默不会选,这就是“绑定”二字的精髓。

  这种自动传递绑定到对象方法的值的特性决定了在一个类中定义的所有函数在默认情况下都应该自己写一个参数。自我可以是任何名字,但习惯上叫自我。

  Python中的一切都是对象,Python3中的类和类型是一个概念。

  转载请联系作者获得授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: