zoukankan      html  css  js  c++  java
  • 面向对象

    面向对象编程介绍

    类和对象

    定义类

    创建对象

    _init_方法

    应用:创建多个对象

    self

    隐藏数据

    面向对象编程介绍

     区分面向对象和面向过程

    举例:

    买电脑(两种方式)
    1.
    *网上搜资料查询
    *根据自己预算和需求,定制电脑型号
    *去市场找电脑实体店筛选
    *业务员推荐介绍各种款式
    *砍价n分钟,价格6k
    *下单付款,带走笔记本
    *使用了一段时间,各种问题
    注意:强调的是步骤、过程,每一步都是自己亲自实现
    
    2.
    *找精通电脑的朋友
    *交易
    注意:强调的是精通电脑的朋友,不需要签字实现所有的步骤,只需要调用“精通电脑的朋友”就可以解决问题,这种解决问题的思路就是面向对象

     注意:用面向对象的思维解决问题的重点就是:

    1.当遇到一个需求的时候不需要自己去实现,如果是自己一步步实现的话就是面向过程

    2.应该调用一个专门做这种事情的人来做

    3.面向对象是基于面向过程的

    面向对象(Object-oriented:简称:OO)

    定义为:按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的办法

    面向对象编程(Object oriented Pogramming-OOP)是一种解决软件复用的设计和编程方法。这种方法把软件系统中相近相似的操作逻辑和操作应用数据、状态,以类的形式描述出来,以对象实例的形式在软件系统中复用,以、达到提高软件开发效率的作用。

    类和对象

    *面向对象编程的2个非常重要的概念:类和 对象

    *对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念---类

    *类就像当与制造飞机时的图纸,可以用它来进行制造的飞机就相当于对象

    1.类

    人以类聚,物以群分
    具有相似内部状态和运动规律的实体的集合(或统称、抽象)
    具有相同属性和行为事物的统称

    解释:

      1.类是抽象的,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在。

      2.一个类可以找到多个对象

    2.对象

    1.某一个具体事物的存在,在现实世界中可以看得见摸得着的。
    2.可以直接使用的

    3.类和对象的关系

      类就是创建对象的模版

    3.类的构成

     类(class)由3个部分构成

      *类的名称:类名

      *类的属性:一组数据

      *类的方法:允许对进行操作的方法(行为)

    4.类的抽象

      拥有相同(或者类似)属性和行为的对象都可以抽象出一个类

      方法:一般名词都是类

    定义类

      定义一个类,格式如下:

    class 类名:
         方法列表
    #定义一个Car类
    
    #定义类
    class Car:
          #方法
          def getCarInfo(self):
              print('铅笔个数:%d,颜色%s '%(self.wheelNum,self.color))
          def move(self):
              print("车正在移动...")

    说明:

        *定义类时有2种,新式类和经典类,上面的Car是经典类,如果是Car(object)则为新式类

        *类名的命名规则建议按照“大驼峰”

    创建对象

       如果说上面定义了Car类,就好比给车子做了设计图纸;那么创建对象就是说把图纸交给工程师去制造了。

       python中,可以根据已经定义的类去创建出一个个对象

       创建对象的格式为:

        

    对象名:类名()

    创建对象:

    #定义类
    class Car:
        #移动
        def move(self):
              print('车在行驶~')
        #鸣笛
        def too(self):
              print("车在鸣笛~")
    
    #创建一个对象,并用变量SDP来保存它的引用
    SDP = Car()
    SDP.color = '白色'
    SDP.wheelNum = 4  #4个轮子
    SDP.move
    SDP.tppt
    print(SDP.color)
    print(SDP.wheelNum)

    总结:

       *SDP = Car(),这样产生了一个Car的实例对象,此时也可以通过实例对象SDP来访问属性或者方法

       *第一次使用SDP.color = ‘白色’ 表示给SDP这个对象添加属性,如果然后再次出现SDP.color = XXX 表示对属性进行修改

       *SDP是一个对象,它拥有属性(数据)和方法(函数)

    _init_()方法

    解释:刚刚给SDP这个对象添加了2个属性(车轮数量和车的颜色),如果需要再次创建对象的话,需要进行添加属性,会比较麻烦;

    是否有办法在创建对象的时候,顺便把车这恶搞对象的属性给设置了?

    使用:   _init_() 方法

     1.使用方式

    def 类名:
        def _init_():
            pass

    2.init()方法的调用

    #定义车类
    class Car:
        def _init_(self):
            self.wheelNum = 4
            self.color = '蓝色'
        
        def move(self):
            print'车在行驶,目标:云南'
    
    #创建对象
    SDP = Car()
    print('车的颜色为:%s ' %SDP.color)
    print('车轮数量:%d ' %SDP.wheelNum)

    总结:当创建Car对象后,在没有调用 _init_()方法的前提下,SDP就默认有了2个属性whellNum和color,原因是 _init_()方法是在创建对象后,就立刻被调用了。

    既然在创建完对象后_init_()方法已经被默认的执行了,那么能否让对象在默认调用_init_()方法的时候传递一些参数呢?如果可以,该怎样传递?

    #定义车类
    class Car:
        def _init_(self , newwheelNum , newcolor):
            self.wheelNum = newwheelNum
            self.color = newcolor
    
        def move(self):
            print'车在行驶,目标:云南'
    
    #创建对象
    SDP = Car(4,‘green’)
    print('车的颜色是:%s' %SDP.color)
    print('车轮数量是 %d ' %SDP.wheelNum)

     总结:

    *_init_()方法,在创建一个对象时默认被调用,不需要手动调用

    *_init_(self)中,默认有1个参数名字为self,如果在创建对象时传递了2个实参,那么_init_(self)中出现了self作为第一个形参外还需要2个形参,例如_init_(self,x,y)

    *_init_(self)中的self参数,不需要开发者传递,python解释器会自己进行传递

    应用:创建多个对象

     *根据上两节创建一个Car类

     *创建出多个车对象,比如SDP、GUID等

    self 

    1.理解self

    #定义一个类
    class Animal:
         #方法:
         def _init_(self,name):
              self.name = name
         def printName(self):
              print('名字为:%s' %self.name)
    
    #定义一个函数
    def myprint(animal):
        animal.printName()
    
    dog1 = Animal('小毛')
    myprint(dog1)
    
    dog2 = Animak(‘小对’)
    myprint(dog2)

    总结:

    *所谓的self,可以理解为自己,就是对象自身的意思

    *某个对象调用其他方法时,python解释器就会把这个对象作为第一个参数传递给self,所以开发人员只需要传递后面的参数即可。

    隐藏数据

     修改对象的属性

    1.直接通过对象名修改  

    SweetPotato.cookedLevel = 5

    2.通过方法间接修改

    SweetPotato.cook(5)

    总结:如果一个对象与另外一个对象有一定的关系,那么一个对象可用是另外一个对象的属性。

  • 相关阅读:
    linux常用命令中篇
    htaccess正则规则学习笔记整理
    个性签名
    求函数的单调区间
    函数的奇偶性
    函数的对称性
    函数的周期性
    复合函数
    赋值法
    高中数学中高频变形技巧收录
  • 原文地址:https://www.cnblogs.com/FlameLuo/p/9654951.html
Copyright © 2011-2022 走看看