遵义专业网站建设公司电话,北京自助模板建站,网站空间大小有什么用,盐城市城南建设局网站编程范式 编程即写程序or代码#xff0c;具体是指程序猿用特定的语法数据结构算法编写代码#xff0c;目的是用来告诉计算机如何执行任务。 如果把编程的过程比喻为练习武功#xff0c;那么编程范式指的就是武林中的各种流派#xff0c;而在编程的世界里最常见的两大流派就…编程范式 编程即写程序or代码具体是指程序猿用特定的语法数据结构算法编写代码目的是用来告诉计算机如何执行任务。 如果把编程的过程比喻为练习武功那么编程范式指的就是武林中的各种流派而在编程的世界里最常见的两大流派就是:面向过程和面向对象 面向过程和面向对象在不同的场景下都各有优劣谁好谁坏不能一概而论下面就让我们来详细了解它们。 面向过程的程序设计
概念
核心是“过程”二字“过程”指的是解决问题的步骤即先干什么再干什么。。。。基于面向过程设计程序就好比设计一条流水线是一种机械式的思维方式。若程序一开始是要着手解决一个大的问题面向过程的基本设计思路就是把这个大的问题分解成很多个小问题或子过程这些子过程在执行的过程中继续分解直到小问题足够简单到可以在一个小步骤范围内解决。
优点是
复杂的问题流程化进而简单化一个复杂的问题分成一个个小的步骤去实现实现小的步骤将会非常简单
举个典型的面向过程的例子写一个注册程序分三步输入用户名密码验证写入数据库。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 import json import re def interactive(): nameinput(: ).strip() pwdinput(: ).strip() return { name:name, pwd:pwd, } def check(user_info): is_validTrue if len(user_info[name]) 0: print(用户名不能为空) is_validFalse if len(user_info[pwd]) 6: print(密码不能少于6位) is_validFalse return { is_valid:is_valid, user_info:user_info } def register(check_info): if check_info[is_valid]: with open(db.json,w,encodingutf-8) as f: json.dump(check_info[user_info],f) def main(): user_infointeractive() check_infocheck(user_info) register(check_info) if __name__ __main__: main() 缺点是 一套流水线或者流程就是用来解决一个问题比如生产汽水的流水线无法生产汽车即便是能也得是大改改一个组件与其相关的组件都需要修改牵一发而动全身扩展性极差。
比如我们要加一个邮箱验证功能那么和邮箱相关的代码都要改代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 import json import re def interactive(): nameinput(: ).strip() pwdinput(: ).strip() emailinput( ).strip() return { name:name, pwd:pwd, email:email } def check(user_info): is_validTrue if len(user_info[name]) 0: print(用户名不能为空) is_validFalse if len(user_info[pwd]) 6: print(密码不能少于6位) is_validFalse if not re.search(r.*?\.com$,user_info[email]): print(邮箱格式不合法) is_validFalse return { is_valid:is_valid, user_info:user_info } def register(check_info): if check_info[is_valid]: with open(db.json,w,encodingutf-8) as f: json.dump(check_info[user_info],f) def main(): user_infointeractive() check_infocheck(user_info) register(check_info) if __name__ __main__: main() 应用场景 面向过程的程序设计思想一般用于那些功能一旦实现之后就很少需要改变的场景 如果你只是写一些简单的脚本去做一些一次性任务用面向过程的方式是极好的著名的例子有Linux內核git以及Apache HTTP Server等。但如果你要处理的任务是复杂的且需要不断迭代和维护 的 那还是用面向对象最方便了。 面向对象的程序设计
概念
OOP(Object Oriented Programing编程是利用“类”和“对象”来创建各种模型来实现对真实世界的描述
面向过程 个人视角 1 我要去做大保健我只需考虑我有没有钱去哪家店怎么去做什么价位的就可以你的每一步都要通过程序定义出来写死了在这个程序里你只被设定了去做大保健的功能你说中途我想去个ktv,那可能会导致整个程序的逻辑都得更改。 用面向过程的方式写代码那你care的就是整个事情的执行过程 面向对象 上帝视角 1 2 3 如果你是上帝你现在要创世纪把这么多人、动物、山河造出来上帝光靠自己干一个一个的造人多累呀让你干这个活你肯定是先造模子一个男人模子一个女人模子剩下的就一个个复制就行啦。这个模子的作用是什么模子定义了人这个物种所具备的所有特征\(或者说我们把具备这些特征的个体归为人类\)。 这个世界上所有的东西都是你定义的你需要用最高效的方式去造世界最高效的方式就是先把世界按物种、样貌、有无生命等各种维度分类然后给每类东西建模型再让其在不脱离你基本横型定义的框架下自我繁衍世界要多姿多彩所以即使是同一物种也要有些不一样 核心是“对象”二字对象是特征与技能的结合体。
优点是
可扩展性强 1、使程序更加容易扩展和易更改使开发效率变的更高
2、基于面向对象的程序可以使它人更加容易理解你的代码逻辑从而使团队开发变得更从容 缺点是
编程复杂度高 应用场景
用户需求经常变化互联网应用游戏企业内部应用名词解释
类一个类即是对一类拥有相同属性的对象的抽象蓝图原型、模板。在类中定义了这些对象的都具备的属性variablesdata、共同的方法属性人类包含很多特征把这些特征用程序来描述的话叫做属性比如年龄、身高、性别、姓名等都叫做属性一个类中可以有多个属性方法人类不止有身高、年龄、性别这些属性还能做好多事情比如说话、走路、吃饭等相比较于属性名词说话、走路是动词这些动词用程序来描述就叫做方法
实例对象一个对象既是一个类的实例化后实例一个类必须经过实例化后方可在程序中调用一个类可以实例化多个对象每个对象既可以有不同的属性就像人类是指所有人每个人是指具体的对象人与人之间有共性亦有不同实例化把一个类转变成一个对象的过程就叫实例化
面向对象3大特性
Encapsulation封装
在类中对数据的赋值、内部调用对外部用户是透明的这是类变成了一个胶囊或容器里面包含着的数据和方法 Inheritance 继承
一个类可以派生出子类在这个父类里定义的属性、方法自动被子类继承 Polymorphism 多态
多态是面向对象的重要特性简单点说“一个接口多种实现”指一个基类中派生出了不同的子类且每个子类在继承了同样的方法名的同时又对父类的方法做了不同的实现这就是一种事物表现出的多种形态。
编程其实就是一个将具体世界进行抽象化的过程多态就是抽象化的一种体现把一系列具体事物的共同点抽象出来再通过这个抽象的事物与不同的具体事物进行对话
对不同类的对象发出相同的消息将会有不同的行为。比如你的老板让所有员工在九点开始工作他只要在九点的时候说“开始工作”即可而不需要对销售人员说“开始销售工作”对技术人员说“开始技术工作”因为“员工”是一个抽象的事物只要是员工就可以开始工作他知道这一点就行了至于每个员工当然会各司其职做各自的工作。
多态允许将子类的对象当做父类的对象使用某父类型的引用指向其子类型的对象调用的方法是该子类型的方法。这里引用的调用方法的代码编译前就已经决定了而引用所指向的对象可以在运行期间动态绑定