1. 程式人生 > >Python 面向對象和面向過程對比

Python 面向對象和面向過程對比

面向過程 對比 代碼量 print ssa num 可維護 清晰 elephant

# 大象裝冰箱
# 腳本, 此時代碼是最簡單的.  不需要構思整個程序的概況
print("開門")
print("裝大象")
print("關門")

# 函數式編程. 比腳本麻煩. 對功能有了概況.

def kai():
    print(‘開門‘)
def zhuang():
    print("裝大象")
def guan():
    print(‘關門‘)

kai()
zhuang()
guan()

# 面向對象編程, 對整個系統進行分析. 分析出需要哪些對象. 然後給對象進行歸類.
# 先寫類. 然後使用類創建對象. 最後用對象去執行相關的操作
class Elephant:
    def __init__(self):
        print("創建了一個大象")

    def kai(self):
        print("開門")

    def zuan(self):
        print("大象進冰箱")

    def guan(self):
        print("大象把門帶上")
#
dx = Elephant()
dx.kai()
dx.zuan()
dx.guan()

# 第一回合
# 腳本勝
# 函數側重的是功能
# 面向對象側重的是 歸類



# PK2
# # 小豬佩奇. 使用嘴巴嘟嘟技能攻擊 超人
# # 小豬佩奇. 使用嘴巴嘟嘟技能攻擊 蝙蝠俠
# # 小豬佩奇. 使用嘴巴嘟嘟技能攻擊 蜘蛛俠
#
# # 面向過程: 代碼非常的冗余. 尤其是參數
def fight_superman(name, jineng):
    print("%s使用%s攻擊超人" % (name, jineng))

def fight_batman(name, jineng):
    print("%s使用%s攻擊蝙蝠俠" % (name, jineng))

def fight_spiderman(name, jineng):
    print("%s使用%s攻擊蜘蛛俠" % (name, jineng))
#
#
fight_superman(‘小豬佩奇‘, "嘴巴嘟嘟")
fight_batman(‘小豬佩奇‘, "嘴巴嘟嘟")
fight_spiderman(‘小豬佩奇‘, "嘴巴嘟嘟")
#
#
class Pig:
    def __init__(self, name, jineng):
        self.name = name
        self.jineng = jineng

    def fight_superman(self):
        print("%s使用%s攻擊超人" % (self.name, self.jineng))

    def fight_batman(self):
        print("%s使用%s攻擊蝙蝠俠" % (self.name, self.jineng))

    def fight_spiderman(self):
        print("%s使用%s攻擊蜘蛛俠" % (self.name, self.jineng))
#
#
pg = Pig("小豬佩奇", "嘴巴嘟嘟")
# # 不需要向原來一樣傳遞一樣的參數了
# # 面向對象的程序: 結果相對清晰. 缺點: 代碼量比原來大, 上手太難
pg.fight_batman()
pg.fight_spiderman()
pg.fight_superman()


# 如果寫一個定時任務, 半夜12點. 給老板發送財務報表(一張圖)
def send_email(address, name, title, content):
    print("發送郵件")

def send_wechat(wechat_num, name, title, content):
    print("發送微信")

def send_chat(wechat_num, name, title, content):
    print("發送短信")

def send_dd(wechat_num, name, title, content):
    print("發送釘釘")

def send_oa(wechat_num, name, title, content):
    print("發送OA")


class Messager:
    def __init__(self, name, title, content):
        self.name = name
        self.title = title
        self.content = content

    def send_email(self, address):
        print("發送郵件")

    def send_wechat(self, wechat_num):
        print("發送微信")

    def send_chat(self, phone_num):
        print("發送短信")

    def send_dd(self, dd_num):
        print("發送釘釘")

    def send_oa(self, oa_num):
        print("發送OA")


# 用面向對象就比面向過程稍微好一些.
#   可維護性比原來好

# python同時支持面向對象和面向過程:
# 面向過程: 應用程序相對比較小. 不需要大規模的設計
# 面向對象: 程序非常大. 項目管理 維護成本很高. 此時更適合用面向對象(結構)

# java : 純面向對象  => 可以把一個微型項目. 做成巨型項目

  

Python 面向對象和面向過程對比