001---面向对象和面向过程的区别

面向对象和面向过程的区别
  • 面向过程

    • 概念:核心是'过程',指解决问题的步骤。先干什么再干什么,基于面向过程设计程序就好比在设计一条流水线,是一种机械式的思维方式。
    • 优点:复杂的问题流程化,进而简单化。
    • 缺点:可扩展性差。中间某个环节出了问题,影响全局,牵一发而动全身。
    • 应用场景:适用于一旦实现功能就很少改动的场景。比如:简单的脚步和一些一次性任务、Linux内核、git、Apache HTTP Server等。
    • 代码示例:
    import json
    import re
    
    
    # 注册
    def interactive():
        name = input('用户名:').strip()
        pwd = input('密码:').strip()
        email = input('邮箱:').strip()
        return {
            "name": name,
            "pwd": pwd,
            "email": email
        }
    
    
    # 检测数据
    def check(user_info):
        is_valid = True
        if len(user_info['name']) == 0:
            print('用户名不能为空')
            is_valid = False
        if len(user_info['pwd']) < 6:
            print('密码不能小于6位')
            is_valid = False
        if not re.search(r'@.*?\.com$', user_info['email']):
            print('邮箱格式不合法')
            is_valid = False
        return {
            'is_valid': is_valid,
            'user_info': user_info
        }
    
    
    def register(check_info):
        if check_info['is_valid']:
            with open('db.json', 'w', encoding='utf-8') as f:
                json.dump(check_info['user_info'], f)
    
    
    if __name__ == '__main__':
        user_info = interactive()
        check_info = check(user_info)
        register(check_info)
    
  • 面向对象

    • 概念:核心是'对象',站在上帝的角度,万物皆对象。把我们人类当作类,每个人就是一个对象,每个对象都有姓名、年龄、身高和体重等特征。每个对象都有走路、睡觉、说话等行为,总结来说:对象是特征和技能的结合体。
    • 优点:可扩展性强
    • 缺点:编程复杂度高
    • 应用场景:代码量多,功能多,改动大,需不断迭代和维护的软件中。比如:复杂的电商程序、企业内部的管理系统、游戏等。
    • 代码示例:
    class LuffyStudents:
        school = 'Luffy'
    
        def learn(self):
            print('学习')
    
        def eat(self):
            print('吃东西')
    
        def sleep(self):
            print('睡觉')
          
    # 实例化了三个学生对象
    s1 = LuffyStudents()
    s2 = LuffyStudents()
    s3 = LuffyStudents()
    print(s1,s1.school)
    print(s2)
    print(s3)
    
posted @ 2019-01-24 23:54  爬呀爬Xjm  阅读(131)  评论(0编辑  收藏  举报