python--面向对象,python3面向对象,面向对象与面向过程的


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

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。

如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。

上述的内容是从网上查到的,觉得这个例子非常的生动形象,我就写了下来,现在就应该理解了他俩的区别了吧,其实就是两句话,面向对象就是高度实物抽象化、面向过程就是自顶向下的编程!

初步理解类和对象

所谓的类,就像是一个模板;所谓对象,就像是通过模板生成的具体的事物。类一般具有比较大的共性,对象一般是具体的,带有自己的特性。

类与对象的关系,例如人类和人,鸟类和麻雀,交通工具和自行车。其中人类、鸟类、交通工具类都是一种类型称呼,它们中的任何一种都具有像模板一样的共性。例如人类的共性是能说话、有感情、双脚走路、能思考等等,而根据这个人类模板生成一个人,这个具体的人是人类的实例,是一个人类对象,每一个具体的人都有自己的说话方式、感情模式、性格、走路方式、思考能力等等。

类与类的关系。有的类的范畴太大,模板太抽象,它们可以稍微细化一点,例如人类可以划分为男性人类和女性人类,交通工具类可以划分为烧油的、电动的、脚踏的。一个大类按照不同的种类划分,可以得到不同标准的小类。无论如何划分,小类总是根据大类的模板生成的,具有大类的共性,又具有自己的个性。

在面向对象中,小类和大类之间的关系称之为继承,小类称之为子类,大类称之为父类。

类具有属性,属性一般包括两类:像名词一样的属性,像动词一样的行为。例如,人类有父母(parent),parent就是名词,人类能吃饭(eat),eat这种行为就是动词。鸟类能飞(fly),fly的行为就是动词,鸟类有翅膀(wing),wing就是名词。对于面向对象来说,名词就是变量,动词行为就是方法(也就是子程序)。通常,变量和方法都成为类的属性。

当子类继承了父类之后,父类有的属性,子类可以直接拥有。因为子类一般具有自己的个性,所以子类可以定义自己的属性,甚至修改从父类那里继承来的属性。例如,人类中定义的eat属性是一种非常抽象的、共性非常强的动词行为,如果女性人类继承人类,那么女性人类的eat()可以直接使用人类中的eat,也可以定义自己的eat(比如淑女地吃)覆盖从人类那里继承来的eat(没有形容词的吃),女性人类还可以定义人类中没有定义的跳舞(dance)行为,这是女性人类的特性。子类方法覆盖父类方法,称之为方法的重写(override),子类定义父类中没有的方法,称为方法的扩展(extend)。

当通过类构造出对象后,对象是类的实例,是类的具体化,对象将也具备类的属性,且对象的属性都有各自的值。例如,student类具有成绩、班级等属性,对于一个实际的学生A对象来说,他有成绩属性,且这个成绩具有值,比如89分,班级也一样,比如2班,此外,学生B也有自己的成绩和班级以及对应的值。也就是说,根据类模板生成对象后,对象的各个属性都属于自己,不同对象的属性互不影响。

无论是对象与类还是子类与父类,它们的关系都可以用一种"is a"来描述,例如"自行车 is a 交通工具"(对象与类的关系)、"笔记本 is a 计算机"(子类与父类的关系)。

python--面向对象

评论关闭