面向对象编程的混乱世界,解释为rpg

面向对象编程(OOP)是一个抽象的概念,当您刚接触编程时,往往很难掌握。“Invent with Python”博客提供了一个很棒的类比,如果你玩过RPG风格的电子游戏,比如魔兽世界或龙与地下城,OOP就更容易理解了。...
Illustration for article titled The Confusing World of Object-Oriented Programming, Explained as an RPG

面向对象编程(OOP)是一个抽象的概念,当您刚接触编程时,往往很难掌握。“Invent with Python”博客提供了一个很棒的类比,如果你玩过RPG风格的电子游戏,比如魔兽世界或龙与地下城,OOP就更容易理解了。

假设你正在创建自己的游戏。你需要代表所有的角色(英雄和怪物),他们的属性(生命值和魔法值),库存物品,等等,还要考虑你的角色受到的生命伤害,库存上升或下降,以及其他状态的变化。用变量(例如,m***ter1Name='Goblin',m***ter2Name='Dragon')和使用列表或字典列表来定义每一件事情很快就会失控,使代码变得比需要的更复杂(而且容易出现bug)。例如:怪物=[{'name':'Goblin','health':20,'magic points':0,'inventory':{'gold':12,'dagger':1}},{'name':'Dragon','health':300,'magic points':200,'inventory':{'gold':890,'magic amulet':1}]

这就是OOP及其类和方法的用武之地:

类是程序中新数据类型的蓝图。面向对象编程提供了一种新的方法来建模盔甲、怪物等,比一大堆列表和字典要好得多,尽管OOP概念需要一些时间才能习惯。

事实上,由于英雄将拥有所有相同的怪物特征(生命值,库存等),我们可以有一个通用的生存类,英雄和怪物共享。

你只需定义一次LivingThing类,就可以快速轻松地从中创建新的怪物。你可以更新LivingThing类,比如说,现在只需添加一行代码就可以跟踪你的RPG角色的饥饿感,而不必单独更新每个对象。正如在另一个洗衣房类比中所解释的,对象封装了复杂性。

查看下面Al-Sweigart的文章,了解完整的RPG-meets-OOP示例。无论您是想创建自己的RPG游戏还是其他类型的程序,这个解释都比大多数OOP教程更有趣。

为什么面向对象编程有用(以角色扮演游戏为例)|“用Python发明”博客

  • 发表于 2021-05-18 05:30
  • 阅读 ( 104 )
  • 分类:互联网

你可能感兴趣的文章

perl公司(perl)和python(python)的区别

...方法的支持。Perl与Python的关键区别在于Perl强调对常见的面向应用程序的任务的支持,而Python则强调对常用编程方法的支持。 目录 1. 概述和关键区别 2. 什么是Perl 3. 什么是Python 4. Perl和Python的相似之处 5. 并排比较–Perl与Python以...

  • 发布于 2020-10-19 17:38
  • 阅读 ( 220 )

红宝石(ruby)和python(python)的区别

...的社区支持。Ruby和Python的一个主要优点是这些语言支持面向对象编程(OOP)。OOP方法有助于使用对象对一个或一组程序进行建模。Ruby和Python的关键区别在于Ruby主要用于web开发,而Python主要用于各种应用程序,包括web开发。Python...

  • 发布于 2020-10-19 17:41
  • 阅读 ( 347 )

什么是面向对象编程?用外行术语解释的基础知识

...初学者编程,甚至开始研究不同的语言,你可能会遇到“面向对象编程”(或“OOP”)这个短语。 ...

  • 发布于 2021-03-24 11:07
  • 阅读 ( 215 )

物体(objects)和班级(classes)的区别

对象与类 面向对象编程语言使用对象和类。C++、.NET、java等都是面向对象的编程语言,它们使用对象和类。 在编程语言中,对象被描述为一个单元,通过使用命令可以使用它。对象的示例有:变量、函数、值和数据结构。在面...

  • 发布于 2021-06-23 17:37
  • 阅读 ( 236 )

斯卡拉(scala)和java(java)的区别

Scala和Java都是基于JVM的面向对象编程语言,用于创建各种各样的应用程序。Java是一种通用编程语言,它无处不在,从台式计算机到**,从网站到应用程序,等等。多年来,Java已经成为最健壮和最复杂的编程语言之一,并且仍然...

  • 发布于 2021-06-25 20:43
  • 阅读 ( 384 )

哦(oop)和流行音乐(pop)的区别

...继承、OOP、POP、多态性、编程范式 什么是哦(oop)? OOP(面向对象编程)允许程序员使用对象来建模真实世界的场景。对象是具有状态和行为的任何实体。它是一个类的实例。状态称为属性、属性或数据。行为称为方法。学生、...

  • 发布于 2021-07-01 00:03
  • 阅读 ( 310 )

perl语言(perl)和红宝石(ruby)的区别

Perl和Ruby的主要区别在于,Ruby比Perl提供了更多的面向对象支持。 Perl和Ruby是两种高级通用语言。这两种语言都支持过程编程和面向对象编程等范式,但是Ruby比Perl更面向对象。然而,这两种语言都有简单易用的语法。它们通常用...

  • 发布于 2021-07-01 12:05
  • 阅读 ( 372 )

C(c)和C++(c++)的区别

...C支持结构化编程,而C++是C的超集,它支持结构编程以及面向对象编程(OOP)。 C是一种通用的编程语言,它是大多数现代编程语言的基础语言。另一方面,C++是C语言的一种增强。任何C程序都是一个有效的C++程序。我们还可以考...

  • 发布于 2021-07-01 12:20
  • 阅读 ( 237 )

面向对象数据库(object oriented database)和对象关系数据库(object relational database)的区别

面向对象数据库与对象关系数据库的主要区别在于,面向对象数据库是一种以对象的形式表示数据的数据库,如面向对象程序设计中的对象,而对象关系数据库是一种基于关系模型和面向对象数据库模型的数据库。 数据库允许...

  • 发布于 2021-07-01 17:25
  • 阅读 ( 615 )

函数式程序设计(functional programming)和面向对象程序设计(object oriented programming)的区别

函数式程序设计与面向对象程序设计的主要区别在于,函数式程序设计是一种用数学函数开发计算机程序的程序设计范式,而面向对象程序设计是一种用对象开发计算机程序的程序设计范式。 函数式编程和面向对象编程是两种...

  • 发布于 2021-07-01 17:38
  • 阅读 ( 901 )
益贝儿
益贝儿

0 篇文章

相关推荐