面向物件程式設計(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發明”部落格
...C程式可以作為目標C進行編譯和執行。目標C由基本C以及面向物件的概念、訊息傳遞、協議等組成。C與目標C的主要區別在於C是結構化程式語言,而目標C是多正規化程式語言,它是C的超集主要支援反射式和麵向物件的程式設計範...
... 菲律賓比索(php)和python(python)的共同點 PHP和Python都支援面向物件程式設計。 兩者都是高階程式語言。 兩者都是免費和開源的。 PHP和Python都可以與MySQL、Oracle等資料庫整合。 這兩種語言都支援XML等檔案。 與C++等語言相比,兩種...
...方法的支援。Perl與Python的關鍵區別在於Perl強調對常見的面向應用程式的任務的支援,而Python則強調對常用程式設計方法的支援。 目錄 1. 概述和關鍵區別 2. 什麼是Perl 3. 什麼是Python 4. Perl和Python的相似之處 5. 並排比較–Perl與Pyth...
...的社群支援。Ruby和Python的一個主要優點是這些語言支援面向物件程式設計(OOP)。OOP方法有助於使用物件對一個或一組程式進行建模。Ruby和Python的關鍵區別在於Ruby主要用於web開發,而Python主要用於各種應用程式,包括web開發。...
...階通用程式語言。因此,R和Python的關鍵區別在於R是一種面向統計的程式語言,而Python是一種通用的程式語言。R可用於統計計算、機器學習和資料分析。Python可以用於機器學習、web開發、網路、科學計算等。 目錄 1. 概述和主要...
...式語言。Java可以用來開發各種應用程式。它是一種支援面向物件、結構化等多種正規化的語言,Java的主要優點是支援面向物件程式設計(OOP)。程式設計師可以建立類和物件。OOP有四個支柱。它們是繼承、多型、抽象和封裝。...
...mbrea認為JavaScript實際上是一個糟糕的開端。Mombrea認為JS是面向物件程式設計的一個壞例子,而且它已經非常有名了。此外,雖然JS是非型別化的,這可能會提高程式設計效率,但錯誤直到執行時才會被發現。因此,他聲稱,如果...
...相似的名字,但是C語言對新手來說更友好。C#程式設計是面向物件的,有些人認為初學者更容易理解。 ...