面向对象 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. 多态

 

原文地址:https://www.cnblogs.com/f-g-f/p/9700675.html