第九篇:面向对象##
Posted littlefivebolg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第九篇:面向对象##相关的知识,希望对你有一定的参考价值。
一、什么是面向对象?
在了解面向对象编程之前,我们需要了解三大编程范式以及其之间的区别和利弊即:面向过程编程、函数式编程、面向对象编程。
一、面向过程编程: 其核心在过程,过程便是解决问题的步骤,即为了解决问题先干嘛后干嘛,面向过程的设计就像一条固定的设计好的流水线,让问题根据这些步骤流程一步步来得到解决。例如: #假设我们让用户登入微信: username="little-five" password="12345" count=0 while count<3: user = input("please enter your username:") passwd = input("please enter your password:") if username==user and password==passwd: print("welcome to wechat...") break else: print("sorry,incorrent username or password..") count+=1 if count==3: print("sorry,you have tried too many times..") #在这个例子里:我们让用户登入微信,然而在整个过程中,我们设计让用户输入用户名和密码,如果用户名和密码正常,就登入成功;而密码错误,则显示用户名或者密码错误;当然我们也不可能让用户一直试下去,只有三次机会,如没成功则显示登入次数太多。 #这便是典型的面向过程设计,根据问题一步步的设计解决步骤。 其优缺点也很明显: 一、优:复杂的问题流程化,进而简单化。即:将一个大的复杂的问题,分成一个个小的步骤去实现,毕竟实现小的问题要简单许多。 二、劣:一条流水线或流程就是用来解决一个问题,但是很难去解决一个相当大的问题,这样会显得十分繁琐。即生产一个复杂的机器很难用一条流水线去解决,即便是能,也得是大改,改一个组件,牵一发而动全身。
二、函数式编程: 其核心在函数,将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念。 函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。 #最纯粹的函数式编程 def cal(x,y): return x+y #而在python下的函数,通常是为了实现某些特定功能而组织到一起的代码块。
三、面向对象编程: 其核心在对象:即万物皆对象,而每个对象均有特征和功能,通过设计将把这些整合在一块便是面向对象设计,面向对象更加注重对现实世界的模拟,存在的为对象,不存在的可以创造出来作为对象。 #创建类,该类的特征和功能是相似的
class teacher(object):
def __init__(self,name,age,course):
self.name=name
self.age=age
self.course=course
def intro(self):
print("%s is %s years old." % (self.name, self.age))
def attend_class(self):
print("%s teach %s"%(self.name,self.course))
其优缺点: 1. 编程的复杂度远高于面向过程,不了解面向对象而立即上手基于它设计程序,极容易出现过度设计的问题。一些扩展性要求低的场景使用面向对象会徒增编程难度,比如管理linux系统的shell脚本就不适合用面向对象去设计,面向过程反而更加适合。
|
二、面向对象设计和面向对象编程
①、面向对象设计其思想为“一切皆对象”,而每个对象均有其特征和功能,将这些特征和功能整合到一块就是面向对象设计,而面向对象编程是通过定义类来整合一类事物的共同属性和函数,并可以通过实例化来创建函数。
②、面向对象编程只是实现面向对象设计的一种方式,而面向对象设计也可通过其他方式进行实现。例如:
1 #-*-coding:utf-8 -*-
2 def dogs(name,age,kind):
3 def init(name,age,kind):
4 dog={
5 "name":name,
6 "age":age,
7 "kind":kind,
8 "intro":intro,
9 "yell":yell
10 }
11 return dog
12
13 def intro(dog):
14 print("This %s‘s name is %s,it‘s %s years old."%(dog["kind"],dog["name"],dog["age"]))
15 def yell(dog):
16 print("The %s is wangwangwang"%(dog["kind"]))
17
18 return init(name,age,kind)
19
20 d1=dogs("amanda",23,"Taddy")
21 print(d1["name"])
22 d1["intro"](d1)
以上是关于第九篇:面向对象##的主要内容,如果未能解决你的问题,请参考以下文章