面向对象和面向过程

一款简单自动运行小游戏模拟:在一维的地图上,有一只虫子和一只蚂蚁。每一次他们都走过一个-3,-2,+2,+3个随机单位的距离(选定走法,若达到地图边界则放弃移动)。当蚂蚁,虫子处于同一位置时,蚂蚁吃掉虫子,程序结束。面向过程:import random

ant_point=random.randint(0,20)worm_point=random.randint(0,20)print ‘ant_point:‘,ant_point,‘worm_point:‘,worm_point

step=[-2,+2,-3,+3]

while ant_point !=worm_point:    astep=random.choice(step)    if 0 <=ant_point+astep<=20:        ant_point+=astep

    astep=random.choice(step)    if 0<=worm_point+astep<=20:        worm_point+=astep    print ‘ant_point:‘,ant_point,‘worm_point:‘,worm_point

random.randint(a,b):用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,Python生成随机数;

random.choice():choice() 方法返回一个列表,元组或字符串的随机项。

面向对象:import random
class Sprite:

    step=[-2,+2,-3,+3]

    def __init__(self,gm,point=None):        self.gm=gm        if point is None:            self.point=random.randint(0,20)        else:            self.point=point

    def jump(self):        astep=random.choice(Sprite.step)        if 0<=self.point+astep<=20:            self.point+=astep

class Ant(Sprite):

    def __init__(self,gm,point=None):        super().__init__(gm,point)        self.gm.set_point(‘ant‘,self.point)

    def jump(self):        super().jump()        self.gm.set_point(‘ant‘,self.point)

class Worm(Sprite):

    def __init__(self,gm,point=None):        super().__init__(gm,point)        self.gm.set_point(‘worm‘,self.point)

    def jump(self):        super().jump()        self.gm.set_point(‘worm‘,self.point)

class GameMap:    def __init__(self):        self.ant_point=None        self.worm_point=None

    def catched(self):        print ‘ant:‘,self.ant_point,‘worm‘,self.worm_point        if self.ant_point is not None and self.worm_point is not None and self.ant_point==self.worm_point:            return True

    def set_point(self,src,point):        if src==‘ant‘:            self.ant_point=point        if src==‘worm‘:            self.worm_point=point

if __name__==‘__main__‘:    gm=GameMap()    worm=Worm(gm)    ant=Ant(gm)    while not gm.catched():        worm.jump()        ant.jump()

实例属性:类被实例化以后才会具有的属性,一般在__init__()方法中创建并初始化,直接使用即定义:self.<属性名>,引用方法:self.<属性名>,self用来代表类的实例的,类外用实例名.属性名方式定义和引用,相同类的不同实例其实例属性不相关,一般不建议在__init__()方法之外创建和初始化实例属性,一般不推荐类外定义和修改,修改可以单独定义方法。
类属性类定义后就存在,而且不需要实例化类属性使的相同类的不同实例共同持有相同变量

私有属性:不提供限制访问属性的关键字(无法限制类的各种属性在类外直接访问)使用__开头的变量名加以标识,只有类对象自己才能访问使用_开头的变量名加以标识,应该只有类对象及其子类才能访问(非强制性),在外部仍能访问

特殊属性:保存对象的元数据:__doc__,__name__,__dict__,__module__,__base__

作业:定义一个类Box,具有实例属性长度(length),宽度(width),高度(height)。具有私有属性体积(由长宽高计算得来),并且它的每个实例可以知道它被实例化的数量。然后实例化它们五次,并输出每个实例的所有属性。

时间: 2024-08-08 18:11:12

面向对象和面向过程的相关文章

面向对象与面向过程

一.面向对象与面向过程的区别: 二者都是一种思想,面向对象是相对于面向过程而言的.面向过程,强调的是功能行为.面向对象,将功能封装进对象,强调具备了功能的对象.面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则. 二.面向对象的三大特征: ①封装(Encapsulation)②继承(Inheritance)③多态(Polymorphism) 面向对象简称OOP( Object Oriented Programming) 面向过程(procedure oriented programm

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

面向对象和面向过程 1.面向过程程序设计方法的实质上是从计算机处理问题的观点来进行程序设计工作:输入——运算——输出.面向过程程序设计者需要变更习惯的思维方法以贴近 计算机的内部工作机理.面向过程程序设计所具有的流的工作性质,试图通过信息流及其转换来认识系统,不仅加大了程序设计的难度,同时亦使得程序的可理解性 比较差. 面向对象程序设计方法中,一种普遍采用的优化方法是使用结构化的程序设计方法. 面向过程程序设计方法一般适宜采用自上而下的设计方法. 面向过程程序设计方法需要在一开始就全面的,自上而

面向对象编程(一)——面向对象和面向过程

面向对象(Object Oriented),通过对象来封装我们的数据.(组织代码,封装数据) 面向对象和面向过程: 面向过程:procedure oriented programming,POP 面向对象:object oriented programming,OOP 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中

编程思想:面向对象和面向过程

感觉写的不够深入,不过基本可行,转载自:http://www.cnblogs.com/BeiGuo-FengGuang/p/5935763.html 何谓面向对象?何谓面向过程?对于这编程界的两大思想,一直贯穿在我们学习和工作当中.我们知道面向过程和面向对象,但要让我们讲出来个所以然,又感觉是不知从何说起,最后可能也只会说出一句就是那样啦,你知道啦.而这种茫然,其实就是对这两大编程思想的迷糊之处.本文通过学生到校报道注册的实例,阐述了面向过程和面向对象两大思想.希望能对你的学习和工作有所帮助.

JavaSE——面向对象与面向过程、类与对象、(属性、方法、构造器)等

一:面向对象与面向过程 二者都是一种思想,面向对象是相对于面向过程而言的. 面向过程: 1.面向过程思想强调的是过程(动作). 2.在面向过程的开发中,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然而由这些功能方法相互调用,完成需求. 3.面向过程的典型代表语言是:C语言. 面向对象: 1.把步骤和方法封装起来,根据不同的功能,进行不同的封装,用的时候,找到对应的类就可以了. 2.将功能封装进对象,强调具备了功能的对象.这就是面向对象的思想.典型的语言是:C++,Java. 3

面向对象和面向过程的编程方式的理解

面向对象和面向过程的区别? 如果说面向对象和面向过程的具体区别,最深入的地方应该是去看设计模式,推荐大话设计模式那本书,讲的比较好.本人只不过简单叙述下,重点是如何进行面向对象和面向过程的编程,只有会编程了,才能真正懂得面向对象和面向过程的区别.否则都是纸上谈兵. 面向过程:是以计算机线性思维的方式进行编程.一步一个脚印的执行.本身也没有问题,但是如果遇到需求多变的情况,或者功能的添加和删除,将极其影响原来的程序代码,必须要重写或者修改,或者重新组织原来的代码. 面向对象:在对需求多变的时候,不

面向对象和面向过程思想 oc

面向对象和面向过程只是两种思想:都能解决问题: 面向过程关注的是解决问题的步骤:例如听歌—打开电脑--打开播放歌曲--关闭电脑 面向对象的思想的:思考的不是步骤,解决这个问题需要用到多少个对象:例如听歌:找对象:电脑这个对象:因为电脑这个对象有开机,播放歌曲,关机这些功能: 面向对象关注的是对象:不是关注步骤:就是干任何事情需要用到哪些对象: OOP面向对象编程object oriented programming: OO面向对象:object oriented: 什么东西都是对象:你要解决面向

Java基础知识强化20:面向对象和面向过程的思想对比

面向对象与面向过程的区别  1. 与面向对象编程思想相比较的,往往是面向过程的编程思想,其实在我来理解,两者并不冲突,原因是面向对象的编程也必须使用面向过程的思维来实现具体的功能,所以我认为,两者的区别是两种思想境界不同,面向过程的思想就像是一个员工在思考问题,他只在意把自己的工作按步骤完成即可,而面向对象的思想就像一个公司的BOSS,他要考虑公司的整体布局,各个部门的职责.以及协调工作,公司的发展方向等,而具体的工作,比如前台接待客户的流程,他不需求亲自考虑,但公司每天的每个具体工作细节又是组

面向对象和面向过程 不同之处

对于不同的语言来说: C是面向过程 C++ JAVA是面向对象 C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制) C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制. 面向对象和面向过程的区别 面向对象简单,面向过程对人员要求素质过高 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了,最重

大话JS面向对象之扩展篇 面向对象与面向过程之间的博弈论(OO Vs 过程)------(一个简单的实例引发的沉思)

一,总体概要 1,笔者浅谈 我是从学习Java编程开始接触OOP(面向对象编程),刚开始使用Java编写程序的时候感觉很别扭(面向对象式编程因为引入了类.对象.实例等概念,非常贴合人类对于世间万物的认知方式和思考方式.对于复杂的事物,人类是如何去认识.归纳.总结的?面向对象式编程就是在努力回答这个问题,而答案的核心就是两个字:抽象.所以面向对象式编程特别适合处理业务逻辑,因此被广泛应用于目前的软件开发当中.因为我们开发软件就是为了解决问题,面向对象式编程符合人类对于“问题”的认知方式),因为我早