C 之面向物件
話說三國時期,曹操帶領百萬大軍攻打東吳,大軍在長江赤壁駐紮,軍船連成一片,眼看就要滅掉東吳,統一天下,曹操大悅,於是晏眾文武,在酒席間,曹操詩興大發,不覺吟道:“喝酒唱歌,人生真爽”,眾文武其呼:“丞相好詩!”於是一臣子速命印刷工匠刻版印刷,以便流傳天下。樣本出來給曹操一看,曹操感覺不妥,說道:“喝與唱,此話過俗,應改為‘對酒當歌’較好!”,於是此臣就命工匠重新來過,工匠眼看連夜刻版之工,徹底白費,心中鬱悶,只得照辦。樣本再次出來請曹操過目,曹操細細一品,覺得還是不好,說:“人生真爽太過直接,應改問語才夠意境,因此應改為‘對酒當歌,人生幾何?’”當臣轉告工匠之時,工匠吐血身亡!可惜三國時期活字印刷術還未發明,所以類似事情是有發生,如果有了活字印刷,則只需更改個別字即可,實在妙哉。
所以說,四大發明之活字印刷是面向物件的勝利,世界上的萬事萬物都是有聯絡的,活字印刷是如何和我們的面向物件進行完美結合的呢?第一,要改,只需更改要改之字,此為可維護;第二,這些字並非用完這次就無用,完全可以在後來的印刷中重複使用,此乃可複用;第三,此詩若要加字,只需另刻字加入即可,這是可擴充套件;第四,字的排版其實有可能是豎排也有可能是橫排,此時只需將活字移動就可做到滿足排列需求,此為靈活性。但是在活字印刷術之前,上面的四種特性都無法滿足,要修改,必須重刻,要加字,必須重刻,要重新排列,必須重刻,印完這本書後,此版已無任何可在利用的價值。
由上述故事,想到在敲學生管理系統和機房收費系統的時候,為實現某個功能的時候,我們的直覺是用計算機能夠理解的邏輯來描述和表達待解決的問題及具體的求解過程,這個其實是用計算機的方式去思考問題,比如說機房收費系統中,上機這個小功能,邏輯思維如下所示:
根據我們的邏輯思維進行相應判斷,得到我們想要實現的上機這個小功能,這個過程本身沒有錯,但是這樣的思維卻使得我們的程式只為滿足當前的需求,缺少靈魂,這樣的軟體做出來是不規範的,不易維護的,不易擴充套件的,以及不易複用的。那麼面向物件到底是什麼?有著怎樣神奇的面孔,接下來,我們翻開嶄新的一頁:
面向物件的知識,前面的博文中有相關介紹,再此不在一一贅述,總的來說面向物件的主要優點以及與面向過程有著那些不一樣的地方,如下:
面向物件程式設計中有兩個重要概念,Class和Object,以及OMT和麵向物件的三個基本特徵,具體介紹如下:
對面向物件有了一些基本的掌握,以及類和物件的把控,我們來深入瞭解C#中的類,類是一種自定義的資料型別,就像整型和字元型,可以使用類來宣告變數,用類宣告的變數稱之為引用變數,所以,類是引用型資料型別,C#提供了建立了類和物件的功能,用C#程式設計時,要做的主要工作就是定義組成程式各種類,類定義可以作為一個模板或藍圖,封裝了她的物件的資料和行為,一旦類定義好了,就可以以她作為模板來建立類的物件和例項,那麼,接下來,我們以C#視訊中的一個例子-修改密碼來看一下,類的建立和例項,首先,我們需要做的是宣告一個能判斷密碼是否正確,並且能夠更改密碼的類,並在類中定義相關方法:
class Authentic //宣告一個判定密碼是否正確,並能夠更改密碼的類 { private string PassWord = "dengyigegushi"; //在類中定義密碼 public bool IsPasswordCorrect(string userPassword) //在類中宣告判斷密碼是否正確的方法 { return (PassWord == userPassword) ? true : false; } public bool ChangePassWord(string oldPassWord, string newPassWord)//在類中宣告更改密碼的方法 { if (oldPassWord == PassWord) { PassWord = newPassWord; return true; } else return false; }
將類例項化
class Program { static void Main(string[] args) { Authentic simon = new Authentic(); //simon是authentic例項化得到的名字 bool done; done = simon.ChangePassWord("dengyigegushi", "dangxingfulaiqiaomen"); if (done == true) Console.WriteLine("密碼已更改"); else Console.WriteLine("密碼更改失敗!"); } }
我們再來舉個小例子,具體詳細講述類的建立:
[<訪問說明符>] [<修飾符>] class <classname>
{
//body of class
}
其中class是C#建立類所使用的關鍵字;<classname>是類的名稱;<body of class>是類的成員,主要包括屬性和方法!C#之旅,未完待續......
再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://blog.csdn.net/jiangjunshow