面向物件程式設計的混亂世界,解釋為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
  • 閱讀 ( 32 )
  • 分類:網際網路

你可能感興趣的文章

c(c)和目標c(objective c)的區別

...C程式可以作為目標C進行編譯和執行。目標C由基本C以及面向物件的概念、訊息傳遞、協議等組成。C與目標C的主要區別在於C是結構化程式語言,而目標C是多正規化程式語言,它是C的超集主要支援反射式和麵向物件的程式設計範...

  • 發佈於 2020-10-16 06:52
  • 閲讀 ( 59 )

菲律賓比索(php)和python(python)的區別

... 菲律賓比索(php)和python(python)的共同點 PHP和Python都支援面向物件程式設計。 兩者都是高階程式語言。 兩者都是免費和開源的。 PHP和Python都可以與MySQL、Oracle等資料庫整合。 這兩種語言都支援XML等檔案。 與C++等語言相比,兩種...

  • 發佈於 2020-10-18 23:19
  • 閲讀 ( 54 )

perl公司(perl)和python(python)的區別

...方法的支援。Perl與Python的關鍵區別在於Perl強調對常見的面向應用程式的任務的支援,而Python則強調對常用程式設計方法的支援。 目錄 1. 概述和關鍵區別 2. 什麼是Perl 3. 什麼是Python 4. Perl和Python的相似之處 5. 並排比較–Perl與Pyth...

  • 發佈於 2020-10-19 17:38
  • 閲讀 ( 43 )

紅寶石(ruby)和python(python)的區別

...的社群支援。Ruby和Python的一個主要優點是這些語言支援面向物件程式設計(OOP)。OOP方法有助於使用物件對一個或一組程式進行建模。Ruby和Python的關鍵區別在於Ruby主要用於web開發,而Python主要用於各種應用程式,包括web開發。...

  • 發佈於 2020-10-19 17:41
  • 閲讀 ( 58 )

r(r)和python(python)的區別

...階通用程式語言。因此,R和Python的關鍵區別在於R是一種面向統計的程式語言,而Python是一種通用的程式語言。R可用於統計計算、機器學習和資料分析。Python可以用於機器學習、web開發、網路、科學計算等。 目錄 1. 概述和主要...

  • 發佈於 2020-10-20 09:33
  • 閲讀 ( 57 )

繼承(inheritance)和java介面(interface in java)的區別

...式語言。Java可以用來開發各種應用程式。它是一種支援面向物件、結構化等多種正規化的語言,Java的主要優點是支援面向物件程式設計(OOP)。程式設計師可以建立類和物件。OOP有四個支柱。它們是繼承、多型、抽象和封裝。...

  • 發佈於 2020-10-25 00:02
  • 閲讀 ( 66 )

初學者最容易學習的6種程式語言

...mbrea認為JavaScript實際上是一個糟糕的開端。Mombrea認為JS是面向物件程式設計的一個壞例子,而且它已經非常有名了。此外,雖然JS是非型別化的,這可能會提高程式設計效率,但錯誤直到執行時才會被發現。因此,他聲稱,如果...

  • 發佈於 2021-03-16 10:37
  • 閲讀 ( 66 )

揭開這個免費電子書現代蟒蛇!

面向物件程式設計(OOP)是一種流行的設計正規化,其中資料和行為被封裝成可以一起操作的方式。 ...

  • 發佈於 2021-03-20 06:10
  • 閲讀 ( 53 )

你應該知道的5種函數語言程式設計語言

... 函式式與面向物件程式設計 ...

  • 發佈於 2021-03-20 18:46
  • 閲讀 ( 54 )

學習c#程式設計的7個實際原因

...相似的名字,但是C語言對新手來說更友好。C#程式設計是面向物件的,有些人認為初學者更容易理解。 ...

  • 發佈於 2021-03-21 18:41
  • 閲讀 ( 66 )
益貝兒
益貝兒

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章