• 面向对象 16


    面向对象

    一 面向对象思想

      1. 面向过程.一切以事物的流程为核心.重点在'过程' 按照事物的发展流程.先干嘛,后干嘛,最后干嘛

        优点 : 简单.  流水线式工作 编写比较简单

        缺点 : 可扩展性差

      2.面向对象 什么是对象? 对象即是属性和动作的集合体.对象是一个抽象概念.

        重点在'对象' :属性和动作.类似上帝式思维

          优点 : 可扩展性强(多态)

          缺点 : 编写相对于面向过程比较复杂.上手比较难.

      面向对象和面向过程各有千秋 , 各有各的好

    二 面向对象如何编写

      在代码中定义一个类,就相当于画图纸

      class 类名:

        pass

      创建对象 : 类名()

    class Car:
        # 出厂设置.(__init__) 构造方法
        def __init__(self,color,pai,pailiang,own): #self 表示当前类的对象
            # 绑定属性
            self.color = color
            self.pai = pai
            self.pailiang = pailiang
            self.own = own
        # 车能跑 跑是一个动作 要写函数(方法)
        def run(self): # 当前类的对象
            print('%s颜色的车在疯狂的跑'% self.color)
        def tiaogao(self):
            print('有一台%s颜色的车在疯狂跳高'% self.color)
    c1 = Car('','京A66666','2.0T','alex')
    c1.run()   # 对象.方法()
    c1.tiaogao()
    View Code
    class HaoHan:
        def __init__(self,name,waihao,jineng):
            self.name = name
            self.waihao = waihao
            self.jineng = jineng
        def DaHu(self):
            print('%s%s在干老虎'%(self.waihao,self.name))
        def shaSaoZi(self):
            print('%s%s在杀嫂子' % (self.waihao, self.name))
        def tiTianXingDao(self):
            print('%s%s在替天行道' % (self.waihao, self.name))
    
    wusong = HaoHan('武松','行者','喝酒')
    wusong.DaHu()
    wusong.shaSaoZi()
    wusong.tiTianXingDao()
    View Code

      1.构造方法:

        def __init__(self,属性):

          self.属性 = 属性 # 对象所拥有的共同特征

      2.普通方法: # 将对象拥有的功能 类似于函数,不过改叫方法了

        def 方法名(self,参数列表):

          pass

        self 表示当前类的对象 当前正在执行这个动作的对象.

        对象.方法()

        类名.方法(对象,参数)

    总结 : 类与对象的关系 : 类是对事物的总结.抽象的概念 类用来描述对象 对象是类的实例化结果.对象能执行哪些方法 都由类来决定,类中定义了什么,对象就拥有什么

    三 面向对象和面向对象过程的对比(代码,思想).

      1. 装大象 脚本语言 面向过程比面向对象要简洁的多

        1.1.面向过程    

    # 非函数式
    print('打开冰箱门')
    print('装大象')
    print('关上冰箱门')
    # 函数式编程
    def kaimen():
        print('打开冰箱门')
    def zhuangdaxiang():
        print('装大象')
    def guanmen():
        print('关上冰箱门')
    kaimen()
    zhuangdaxiang()
    guanmen()

        1.2.面向对象

    # 面向对象
    class Elphant:
        def open(self):
            print('大象会开门')
        def zhuang(self):
            print('把自己装进去')
        def close(self):
            print('把门关上')
    # 创建对象
    e = Elphant()
    e.open()
    e.zhuang()
    e.close()

      相比较而言 :面向过程要比面向对象简单

        再有 有一个小猪 叫佩奇,今年40岁了,会使用必杀技嘴巴嘟嘟,他不光大战奥特曼,还会大战蝙蝠侠,蜘蛛侠.

        2.1 面向过程:

    # 函数式
    def da_ao_te_man(name,age,jineng):
        print('%s,%s岁了,用技能%s打奥特曼' %(name,age,jineng))
    def da_zhi_zhu_xia(name,age,jineng):
        print('%s,%s岁了,用技能%s打蜘蛛侠' %(name,age,jineng))
    def da_bian_fu_xia(name,age,jineng):
        print('%s,%s岁了,用技能%s打蝙蝠侠' %(name,age,jineng))
    da_ao_te_man('小猪佩奇','40','嘴巴嘟嘟')
    da_zhi_zhu_xia('小猪佩奇','40','嘴巴嘟嘟')
    da_bian_fu_xia('小猪佩奇','40','嘴巴嘟嘟')

        2.2 面向对象:

    class Pig:
        def __init__(self,name,age,jineng):
            self.name = name
            self.age = age
            self.jineng = jineng
        def da_ao_te_man(self):
            print('%s,%s岁了,用技能%s打奥特曼' %(self.name,self.age,self.jineng))
    
        def da_zhi_zhu_xia(self):
            print('%s,%s岁了,用技能%s打蜘蛛侠' % (self.name, self.age, self.jineng))
        def da_bian_fu_xia(self):
            print('%s,%s岁了,用技能%s打蝙蝠侠' %(self.name,self.age,self.jineng))
    
    peiqi = Pig('小猪佩奇','40','嘴巴嘟嘟')
    peiqi.da_ao_te_man()
    peiqi.da_zhi_zhu_xia()
    peiqi.da_bian_fu_xia()

          面向对象思想要稍微好于面向过程一些. 因此要根据不同的业务逻辑来决定用哪种思想

    四 面向对象的三大特征:

      1.封装: 把很多内容封装在一个对象中

      2.继承:子类可以自动拥有父类中除了私有属性外其他所有内容 可避免写很多重复的功能和代码 即 x 是一种 y 的时候 x继承y

      3. 多态

     

  • 相关阅读:
    微信小程序 如何让button按钮长度变为100%
    使用%在搜索框中进行模糊查询
    vsCode中输入wx没有提示?
    uniapp的页面的生命周期:onLoad、onShow、onReady
    MySQL报错:1130Host 'LAPTOPJRI45NVC' is not allowed to connect to this Mysql server
    URLEncoder和URLDecoder
    super和this
    把MIT的算法课程看一遍
    单节点hadoop部署成功
    suse的ssh服务
  • 原文地址:https://www.cnblogs.com/f-g-f/p/9700675.html
Copyright © 2020-2023  润新知