• 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)
      
  • 相关阅读:
    10000个线程更新同一行数据
    CountDownLatchTest
    创建 oracle dblin
    extjs日期控件使用
    JAVA Date超强工具类,可直接取代util.Date使用
    JSP&Servlet学习手册
    JAVA 文本 TXT 操作工具类
    Leetcode 526.优美的排列
    Leetcode 525.连续数组
    Leetcode 523.连续的子数组和
  • 原文地址:https://www.cnblogs.com/xjmlove/p/10317630.html
Copyright © 2020-2023  润新知