Python之面向过程和面向对象的区别

一、面向过程

  1、面向过程核心是过程二字,过程指的是解决问题的步骤,好比如设计一条流水线,是一种机械式的思维方式。

     就是程序从上到下一步步执行,一步步从上到下,从头到尾的解决问题 。基本设计思路就是程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个小问题或子过程,这些子过程再执行的过程再继续分解直到小问题足够简单到可以在一个小步骤范围内解决。

  2、优缺点

       优点:将复杂的问题流程化,进而简单化。

       缺点:扩展性差

  3、实例:面向过程式的登录注册程序  

import json,re
def login():
    ‘‘‘
    用户输入
    :return:
    ‘‘‘
    usename = input(‘用户名:‘).strip()
    pwd = input(‘密码:‘).strip()
    tel = input(‘电话:‘).strip()
    mail = input(‘邮箱:‘).strip()
    return {
        ‘usename‘:usename,
        ‘pwd‘:pwd,
        ‘tel‘:tel,
        ‘mail‘:mail

    }
def authentication(use_info):
    ‘‘‘
    判断用户名和密码等信息是否合法
    :return:
    ‘‘‘
    is_valid = True # 默认合法
    if len(use_info[‘usename‘])==0:
        print(‘用户名不能为空!‘)
        is_valid = False
    if len(use_info[‘pwd‘])< 6:
        print(‘密码长度不得小于6位!‘)
        is_valid = False
    if len(re.findall(‘1[0-9]{10}‘,use_info[‘tel‘]))==0:
        print(‘电话格式不对!‘)
        is_valid = False
    if not re.search(r‘@.*?.com$‘,use_info[‘mail‘]).group(): # 使用Python的r前缀,就不用考虑转义的问题,‘*‘加个?就可以让‘.‘采用非贪婪匹配
        print(‘邮箱格式不对‘)
        is_valid = False

    return {
        ‘valid‘:is_valid,
        ‘info‘:use_info
    }
def register(auth):
    ‘‘‘
    若输入信息合法则注册,写入文件或数据库
    :param auth:
    :return:
    ‘‘‘
    if auth[‘valid‘]==True:
        with open(‘data.json‘,‘w‘,encoding=‘utf-8‘) as f:
            json.dump(auth[‘info‘],f)
def main():
    ‘‘‘
    主逻辑程序
    :return:
    ‘‘‘
    use_info = login()
    auth = authentication(use_info)
    register(auth)
if __name__==‘__main__‘: # 直接调用时执行下列程序,被调用时不执行
    main()

  注意:一般认为, 如果你只是写一些简单的脚本,去做一些一次性任务,用面向过程的方式是极好的,但如果你要处理的任务是复杂的,且需要不断迭代和维护 的, 那还是用面向对象最方便。

二、面向对象

  1、面向对象:核心是对象二字,特征和技能的结合体。

  2、优缺点:

      优点:可扩展性高

      缺点:编程复杂度高

  3、应用场景:用户需求经常变化,互联网应用,游戏,企业内应用等。

  4、关于面向对象的几个名词解释   

    类:一个类即是对一系列对象相似的特征和技能的结合体,如同一个模板。在类中定义了这些对象的都具备的属性,共同的方法。

    属性:人类包含很多特征,把这些特征用程序来描述的话,叫做属性,比如年龄、身高、性别、姓名等都叫做属性,一个类中,可以有多个属性。

    方法:人类不止有身高、年龄、性别这些属性,还能做好多事情,比如说话、走路、吃饭等,相比较于属性是名词,说话、走路是动词,这些动词用程序来描述就叫做方法。

    实例(对象):一个对象即是一个类的实例化后的实例,一个类必须经过实例化后方可在程序中调用,一个类可以实例化多个对象,每个对象亦可以有不同的属性,就像人类是指所有人,每个人是指具体的对象,人与人之前有共性,亦有不同。

    实例化:把一个类转变为一个对象的过程就叫实例化。

  5、简单实例

# 现实世界中的对象:
‘‘‘
对象1
    特征
        职业:学生
        姓名:王二
        性别:男
        年龄:22
    技能
        学习
        打游戏
对象2
    特征
        职业:学生
        姓名:张三
        性别:男
        年龄:20
    技能
        学习
        打游戏
        看书
对象3
    特征
        职业:学生
        姓名:婉婉
        性别:女
        年龄:18
    技能
        学习
        打游戏
        看书
现实中的类:
    特征:
        职业:学生
    技能:
        学习
        打游戏
        看书
在程序中:
‘‘‘
# 先有类
class School_learn:
    job = ‘student‘
    def study(self):
        print(‘study hard!‘)
    def play_game(self):
        print(‘play games as little as you can‘)
    def read(self):
        print(‘read books more and more‘)

# 再调用类产生对象
student1 = School_learn()
student2 = School_learn()
student3 = School_learn()
print(student1) # <__main__.School_learn object at 0x000002B70F8D7588> 对象
print(student2)
print(student3)

  6、面向对象三大特性

    <1>封装(Encapsulation):在类中对数据的赋值、内部调用对外部用户来说是透明不可见的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法。

    <2>继承(Inheritance):一个类可以派生出子类,在这个父类里定义的属性、方法自动被子类继承。

    <3>多态(Polymorphism):多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,指一个基类中派生出了不同的子类,且每个子类在继承了同样的方法名的同时又对父类的方法做了不同的实现,这就是同一种事物表现出的多种形态。

注意:这里只是简单说明下几大特性,后续我们会深入探讨的的。

  

    

原文地址:https://www.cnblogs.com/schut/p/8541547.html

时间: 2024-10-07 20:17:09

Python之面向过程和面向对象的区别的相关文章

面向过程与面向对象的区别

面向过程与面向对象的区别 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为. 例如五子棋,面向过程的设计思路就是首先分析问题的步骤: 1.开始游戏, 2.黑子先走, 3.绘制画面, 4.判断输赢, 5.轮到白子, 6.绘制画面, 7.判断输赢, 8.返回步骤2, 9.输出最后结果. 把上面每个步骤用分别的函数来

面向过程和面向对象的区别,方法重载和方法重写的区别

先有面向过程,而后退出面向对象 面向过程和面向对象两者都是软件开发思想,先有面向过程,后有面向对象.在大型项目中,针对面向过程的不足推出了面向对象开发思想. 打个比方 蒋介石和毛主席分别是面向过程和面向对象的杰出代表,这样充分说明,在解决复制问题时,面向对象有更大的优越性. 面向过程是蛋炒饭,面向对象是盖浇饭.盖浇饭的好处就是"菜""饭"分离,从而提高了制作盖浇饭的灵活性.饭不满意就换饭,菜不满意换菜.用软件工程的专业术语就是"可维护性"比较好,

面向过程与面向对象的区别-遁地龙卷风

下面例子根据C和Java编写 面向过程与面向对象之间的区别在于认知世界的方式,后者在前者的基础上提供了更高的抽象层次-类. 也就是抽象.封装.继承.多态. 举个例子 输出 小明20岁<=>A,小明打篮球<=>B. 面向过程相当于在类中调用main方法输出A.B public class Test { public static void main( String[] args ) { System.out.println( "小明去上学" ); System.o

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

所谓面向过程,就是将一个具体问题,按照时序的先后顺序,一步一步的完成. 所谓面向对象,就是将一个具体的问题,按照问题空间,划分成不同的小问题空间,层级划分下去,最后再在最小粒度的问题空间里,运用面向过程的思想解决各自的问题. 区别: 面向对象中各个小问题空间使用到的数据,是与其他空间没有必然的关联关系的,也就是说,一个问题空间里的问题不需要使用到另一个问题空间里的数据.而整个问题的解决,是通过客户端程序,将它们按照一定的顺序组合起来,这个是面向过程的思想. 面向过程中,各个函数按照一定的顺序调用

Java基础-学习笔记(五)——面向过程和面向对象的区别

学习面向对象的语言,要弄清楚面向对象,首先要从理解面向过程开始. 回想起之前在学习C语言时,每次拿到一个题目,首先想到的是,先分析出解决问题所需要的步骤,每一个功能点,用一个函数来表示,使用的时候一个一个进行调用就好了,程序的重心在函数上(谓语):面向对象,就是要把问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述每个事物在整个解决问题过程中的行为,强调的是对象本身(主语) 还有就是数据是单独存储还是与操作存储在一起.对面向过程而言,数据是独立的.而在面向对象中,对象本身就

essential C++中关于面向过程和面向对象的说明

昨天在阅读essential C++中看到了一个关于面向过程和面向对象的区别的例子,感觉挺好的.记录下来.... 这个例子是关于照相机的.照相机有三个性质,一个是控制位置:通常使用3个浮点数据来表示其坐标:还有一个视角方向的性质:可以使用3个浮点数据来表示其坐标:最后是一个宽高比的性质,可以使用1个浮点数据来表示. 对于面向过程而言,在编程的过程中势必要不断的在相机的抽象的性质和这7个浮点数据之间反复来回.就好比我们定义一座大楼,面向过程就是要不断在建造大楼的砖头进行打交道,这明显和现实生活的思

面向过程和面向对象

面向过程和面向对象简介 一 .面向过程与面向对象的区别: 前者是一种谓语和宾语的关系:后者是一种主语和谓语的关系 . 二.面向对象的三个特征: 封装 继承 多态 三.类与对象: 对象又称作实例,是实际存在的该类事物的每个个体.类是对某一类事物的描述,是抽象的.概念上的 定义. 面向对象的设计的重点是类的设计. 四.对象的比较: 1 “= =”运算符与equals()方法的区别: 前者辨别实质是否相等:后者辨别长相是否相等. 五. 实现类的封装性: 1不能让外面的类随意修改一个类的成员变量: 2在

面向过程(面向结构)与面向对象的区别

script"> var username = "qq_31108501"; var _blogger = username; var blog_address = "http://blog.csdn.net/qq_31108501"; var static_host = "http://static.blog.csdn.net"; var currentUserName = ""; var fileName

面向过程与面向对象编程的区别和优缺点

面向过程与面向对象编程的区别 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了: 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为. 可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1.开始游戏,2.黑子先走,3.绘制画面,4.判断输赢,5.轮到白子,6.绘制画面,7.判断输赢,8.返回步骤2,9.输出最后结果.