从processing图形化编程学面向对象编程

来源:互联网 发布:护卫神php套件怎么用 编辑:程序博客网 时间:2024/06/07 06:32

最近选了一门课叫processing图形化编程,使用一个叫processing的软件,这个软件基本就是封装了一些Java的包,使得编写动画或游戏等等更加方便了。

软件中有两个主要的函数,为setup()和draw()函数,setup初始化图形界面,只执行一次。draw()执行频率大概60Hz,自动重复执行,用来在界面上画图形。其他一些mousePressed和keyPressed函数用来响应鼠标和键盘,使编写游戏更加方便。

这门课的编程部分非常简单,但是我在编程的过程中更深刻的体会面向对象编程的思想(在实验报告中写了千百遍,第一次 really mean it)。

下面没有对象的单身狗强行谈一发面向对象编程的感想:

对比面向过程和面向对象编程:

早期由于硬件配置的不足我们习惯使用面向过程的编程方法,而现今由于硬件已经不能成为限制,怎样更好的模拟现实生活成为编程目标。面向对象的编程方法更加形象化,非常适合服务使用者和服务提供者边界模糊关系复杂的现实世界。

面向过程编程:

将软件看做是处理数据的流,编程的过程中首先进行过程抽象,许多过程连在一起形成软件的体系结构。而后开发出在过程中传递使用的数据结构。有时需要使用全局变量来记录软件的状态。所以整个软件系统由算法(过程)和数据结构构成。

这样开发的问题就是当后期过程变化时,整个软件架构可能都要改变,系统维护性能差。所以我们认为在软件设计过程中应该尽量去描述那些变化较少的元素-----对象。在商业活动中类似生产者消费者这些对象的关系和行为可能发生变化,但是他们的存在很少发生变化,所以我们将这些对象抽象为实体。将系统看做是对象的集合。

面向对象编程:

在面向对象编程中我们将软件的参与者抽象为实体。实体中包含过程和属性,过程表示参与者所能出现的行为,属性是过程所需数据。对比与面向过程编程,面向对象更加贴近实际,他可以将现实世界中的事物抽象成实体,将事物的属性抽象成实体中的数据,将事物的行为抽象成方法。

面向对象的软件工程三步:OOA,OOD,OOP

1.面向对象分析(Object Oriented Analysis, OOA)
分析和理解问题域,找出描述问题域和系统责任所需的类及对象,分析它们的内部构成和外部关系,建立OOA 模型。
2.面向对象设计(Object Oriented Design, OOD)
将OOA 模型直接变成OOD 模型,并且补充与一些实现有关的部分,如人机界面、数据存储、任务管理等。
3.面向对象编程(Object Oriented Programming, OOP)
用一种面向对象的编程语言将OOD模型中的各个成分编写成程序,由于从OOA→OOD→OOP实现了无缝连接和平滑过渡,因此提高了开发工作的效率和质量。

看到百度上一篇对比面向对象和面向过程思想的比较非常形象,在这借用一下:

例如编写五子棋:

1.面向过程的编程就是将问题分解为算法和数据结构。

数据结构方面:棋盘使用多维数组保存。

算法方面(过程):使用循环和标志量保证黑白棋下的顺序,在每次落子后遍历数组判断输赢。

2.面向对象的编程则会将问题分解成一个个小对象,就是软件工程首先进行的用例分析---分析在问题中存在多少个实体,也就是后来要定义的类。然后分析每个类中需要的属性和方法,然后进行编码。

在五子棋这个例子中存在三个对象,玩家,棋盘和棋子。

玩家属性:标志量区分黑白方。分数。玩家方法:下棋(棋子),就是初始化棋子对象然后设定棋子坐标。

棋盘对象属性:标志量判定输赢。棋盘方法:遍历所有被使用的棋子来判断输赢。

棋子对象属性:横纵坐标

这样分析对于软件的重用性和可扩展性都有很明显的提高,比如要更改游戏规则时,只需要改变棋盘对象的判断输赢的方法就好,如果要增加玩家(三人五子棋?)时,只需要再初始化添加一个玩家对象即可。


0 0
原创粉丝点击