面向過程程式設計和麵向物件程式設計
阿新 • • 發佈:2021-12-02
程式設計本質:
- 定義出一系列資料,定義出一些列功能,用功能操作資料實現人們想要的要求
針對問題/要實現的功能,先列出具體的解決步驟,再分佈寫具體內容
類似工廠的流水線,每一工序完成一個功能,前後是有邏輯關係的.
優點:
邏輯清晰,便於理解
缺陷:
後期要更改某塊程式碼,那麼會牽一髮而動全身,很可能多個功能模組都做一定更改(擴充套件性較差)
例項
import json """ 1 面向過程程式設計 擴張性差案例 <使用者註冊系統> 以下都封裝成函式 1 輸入使用者資訊 2 校驗資訊(為示例方便:這裡僅校驗使用者輸入是否為空) 3 註冊 4 三個函式再封成一個函式,到時候呼叫此函式就是執行註冊2面向物件程式設計 定義:基本思路 把程式用要用到的,相關聯的資料和功能整合到物件裡邊去,然後去使用 3 類與物件""" # 思考: 本例中函式返回值如何組織的及函式形參如惡化寫的,為什麼? # step1 def interinfo(): username = input('username>>>:').strip() password = input('password>>>:').strip() return {'username': username, 'password': password} # step2 def check_interfo(interinfo_return): is_register = True# # 寫法1 # if len(interinfo_return.get('username')) == 0: # print('使用者名稱不能為空') # is_register = False # if len(interinfo_return.get('password')) == 0: # print('密碼不能為空') # is_register = False # 寫法2 if len(interinfo_return.get('username')) != 0 and len(interinfo_return.get('password')) != 0: pass else: print('密碼或使用者名稱輸入為空') is_register = False return {'is_register': is_register, 'interinfo_return': interinfo_return} # step3 def register(check_info_return): if check_info_return.get('is_register'): import json with open(r'a.txt', 'w', encoding='utf-8') as f: # 注意:a.txt 是相對路徑 json.dump(check_info_return.get('interinfo_return'), f) # step4 def start(): interinfo_return = interinfo() check_info_return = check_interfo(interinfo_return) register(check_info_return) if __name__ == '__main__': start()
- 定義:
- 物件: 存放資料與功能的容器
- 將原本分散的相關資料和功能整合到物件裡
- 類: 存放多個物件相同資料和功能的容器
- 類的意義:節省空間,減少程式碼冗餘的機制,面向物件程式設計核心使用物件
- 詳細理解
# # 1 定義一個類 # class Student(): # 類名:駝峰體 # school = 'sh' # 'school': 'bj' # # def __init__(self, name, age, course): # self.name = name # self.age = age # self.course = [] # # return 在類中不能有函式返回值 # def choose_course(self, course): # self.course.append(course) # print('%s選課%s' % (self.name, self.course)) """ 2 產生物件/例項化 定義:呼叫類的過程就是例項化 格式: 要產生的物件名 = 類名(屬性名) """ # stu1 = Student('jack', 23, 'art') # 每例項化一次Student,就得到一個學生物件 # stu2 = Student() """ 3 (增加/更改/刪除)物件屬性(增改刪類屬性方法一樣) 格式 增: 簡寫: 物件名.新屬性名 = 屬性值 # 等價於 >: 物件名句點符雙下dict = 屬性值 改: 簡寫: 物件名.屬性名 = 新屬性值 # 等價於 >: 物件名句點符雙下dict = 新屬性值 刪除格式: del 物件名.屬性名 """ # 改 # stu1.name = 'tom' # stu1.__dict__['name'] = 'tom' # 增 # stu1.hobby = 'run' # stu1.__dict__['name'] = 'tom' # print(stu1.__dict__.get('hobby')) # run # 刪 # del stu1.hobby # print(stu1.__dict__.get('hobby')) """ 4 如何檢視物件屬性<物件內部資料是用字典組織的> 格式: 1: print(物件名.屬性名) 2: 用字典取值方法 >: print(物件名.__dict__.get('屬性名')) """ # print(stu1.name) # print(stu1.__dict__) # print(stu1.__dict__.get('name')) """ 5 物件,類 呼叫類中資料和函式屬性 """ # 1 呼叫資料屬性 # print(stu1.school) # print(Student.school) # 2 呼叫函式屬性 # stu1.choose_course('art') # Student.choose_course(stu1, 'art')