提到面向对象,就不得不提面向过程
什么是面向过程: 1、自定向下顺序执行,逐步求精; 2、其程序结构是按功能划分为若干个基本模块这些模块形成树状结构; 3、各模块之间的关系尽可能简单,在功能上相对独立; 4、每一模块内部均是由顺序、选择、循环三种基本结构组成; 5、其模块化实现的具体方法就是使用子程序; 6、程序流程在写程序时就已经绝对。
什么是面向对象: 1、把数据及对数据的操作方法放在一起,作为一个合成的个体。对象 2、对同类对象抽象其共性,形成类; 3、类中的大多数数据,只能用本类的方法进行处理; 4、类通过一个简单的外部接口与外界发生关系,对象之间通过消息进行同学 5、程序流程由用户在使用中决定 面向对象是相对于面向过程而言 面向过程强调的是功能行为,关注的是解决问题需要哪些步骤; 面向对象将功能封装进对象,强调具备了功能的对象,关注的是解决问题需要哪些对象 面向对象是基于面向过程的
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。
如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。
本段摘自:https://blog.csdn.net/jerry11112/article/details/79027834
面向对象:
何为对象:
对象是程序的一个组成部分,它知道如何执行特定的操作,知道如何去和程序的其他部分进行交互。一个对象包含一个或多个数据值及应用于这个对象的一些函数,其中这些数据值定义了这个对象的状态或者属性,和对象关联的函数表示可以对该对象做些什么及该对象是如何运作的。对象可以是任何事物,例如人、计算机,甚至是像银行账户这样的无形的东西。
类:
类是一个广义的范畴,可以如下理解:
这个范畴的对象所包含的特征,成为属性或类的数据成员;
应用于这个范畴的对象的函数,称为类的成员函数或方法:
类是对具体事物的抽象,万事万物均可以看作一个类。
人把大象装进冰箱(大象真惨...),人可以看作是一个类,冰箱可以看作一个类,大象也可以看作一个类。
在人这个类中,人具有姓名、性别、年龄等,这就叫类的属性,打开冰箱门、把大象塞入冰箱,关上冰箱门这些操作叫做方法。
在设计一个类时:
''' 设计类 类名:首字母大写,其它遵循驼峰原则 属性:尽量用英文起名 行为: 类本身不占用内存空间,实例化后的对象才占空间 格式: class 类名(父类列表) 属性 行为 object:基类,所有类的父类 '''
class person(object):
name =""
age =18
height = 0
weight = 0
#定义方法(定义函数)
def run(self):
print("run")
def eat(self,food):
print("eat" +food)
上面就是一个人的类,类具有类名,属性以及方法
人具有姓名、年龄、身高、体重这些固有属性,人会跑,会吃饭,这些是人的方法,不排除有些人不能吃饭不能跑,这些就涉及到子类的特有属性等继承有关的东西了。
在创建了类以后,我们就能访问类的属性与方法,通过实例化一个对象来访问
class person(object):
name =""
age =18
height = 0
weight = 0
#定义方法(定义函数)
def run(self):
print("run")
def eat(self,food):
print("eat " +food)
def openDoor(self):
print("我已经打开了冰箱门")
def fillEle(self):
print("我已经把大象装入了冰箱")
def closeDoor(self):
print("冰箱门关闭了")
per =person()
'''
访问属性
格式:对象名.属性名
赋值:对象名.属性名 = 新值
'''
per.name= "sunck"
per.age=18
per.height=160
per.weight=80
print(per.name,per.age,per.height,per.weight)
'''
访问方法
格式:对象名.方法名(参数列表)
'''
per.openDoor()
per.fillEle()
per.closeDoor()
per.eat("apple")