建体彩网|中彩网双色球连号|
?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

新蒲京澳門賭場網站:再談面向對象

?

談到面向工具,這方面的文章異常多。然則,明確地給出工具的定義或闡明工具的定義的異常少——至少我現在還沒有發明。其初,“面向工具”是專指在法度榜樣設計中采納封裝、承襲、抽象等設計措施。可是,這個定義顯然不能再得當現在環境。面向工具的思惟已經涉及到軟件開拓的各個方面。如,面向工具的闡發(OOA,Object Oriented Analysis),面向工具的設計(OOD,Object Oriented Design)、以及我們常常說的面向工具的編程實現(OOP,Object Oriented Programming)。許多有關面向工具的文章都只是講述在面向工具的開拓中所必要留意的問題或所采納的對照好的設計措施。看這些文章只有真正相識什么是工具,什么是面向工具,才能最大年夜程度地對自己有所裨益。這一點,生怕對初學者以致是從事相關事情多年的職員也會對它們的觀點隱隱不清。下面我從一樣平常的觀點啟程,再引申到軟件開拓領域新蒲京澳門賭場網站中所涉及到的工具的觀點。

上一篇文章中我曾舉過一個樹的例子來闡明工具的觀點。這里我仍舊使用它對工具的觀點做闡述。“工具”一詞,英文為“Object”,德語為“Sachen”,都可以譯做“物體”。著實所有的物體都可以作為我們的工具——只要我們留意并對它思慮了。一小我從生下來到進行第一次的戶外活動,他將打仗到許許多多的新鮮事物,他將睜大年夜眼睛好奇地看著這陌生的統統。大概對他來說,那些高大年夜的器械,有干,有枝,有葉——雖然那時他并不知道這些——其映象已經深刻地印在了他的腦海中。此時對他來說,樹并不是工具,由于在他的腦筋傍邊只有樹的映象,而沒有對樹的精神上的意向。當他再大年夜一點時,大概他會想著爬到樹上去玩一下子——但此時樹也還不是他的工具。存在的工具只是他自己——他想讓自己去做某件事。長大年夜今后,大概他他成了一名木匠——就像我們成了法度榜樣員,用他的鋸子、斧頭把一棵樹砍下來做成一張桌子——就像我們使用Java 、C/C++說話開拓出一套數據庫系統。在這里,樹是木匠的工具,而數據庫系統是法度榜樣員的工具。于是,我在這里給工具下一個定義:工具是人腦中的物質意識和精神意識。普通地講,便是事物在人腦中的映象和人腦對事物的意向。之以是要在這里強調“事物”,是我要闡明這里所說的“物質”并不是物理學中的物質,思維活動、事物間的關系我們也稱為是物質的。

真正要在較深的層面上評論爭論什么是工具是很繁雜的,由于這要涉及到精神意識本色的問題,遠遠越過了我們要評論爭論的范圍。我們不要評論爭論什么高妙的問題,就以實用為主。我就使用這個觀點來舉一個簡單的例子。木匠前面有一張桌子。他可能要面臨兩個問題:一是給桌子添加一些部件如抽屜,這樣桌子就可以放更多的器械;二是裝飾一下桌子,使得它更美不雅。在這里,桌子是他的工具——他對桌子進行思慮了,這使得他對桌子的意向性也顯著地顯露出來。我們以致可以把改造桌子稱為“面向工具的改造”,由于那不是隨意的改造。這一點我在隨后對面向工具思惟的闡明中提到為什么說是“不是隨意的改造”。斟酌一下“面向工具”,可以知道它是一個動賓關系的短語。動詞“面向”外面,這個短語含有“若何去做”的意思,這可以說是涉及到了措施論的范疇了。這也給我們供給了一個緊張的信息:“面向工具的做......”不僅扳連到什么是工具的問題,還扳連到若何去做的問題。木匠若何去做他的桌子,我們不必擔心:他肯定能做好的——假如他是一個優秀的木匠的話。他有著富厚的履歷,他有一套自己的措施,他知道若何去做。大概在做桌子之初就已經做了優越的設計以為今后的“進級”作籌備。這就像一個履歷富厚的法度榜樣員:他知道怎么設計才能讓自新蒲京澳門賭場網站己的法度榜樣布局清晰、易懂,輕易排錯也易于掩護。

有一點要留意的是,工具不是實體,它可以離開實體而存在。這是由于,工具只不過是人腦思維活動的產物;我們可以用某種要領如自然說話、丹青等將它表示出來,就像我們在軟件開拓中所說的工具用類(法度榜樣傍邊)或系統布局圖(如流程圖,層次圖,HIPO圖等)來描述一樣。

于是,我們就可以工具我們一樣平常在軟件開拓領域里所評論爭論的工具下個定義了:工具由一個數據集以及對該數據集的操作組成。這個定義得當法度榜樣說話中的類,也得當對全部系統而言。大概大年夜家會對這個定義感覺很認識:這新蒲京澳門賭場網站不是法度榜樣或進程的定義嗎?留意,這里的工具是有“自我意識新蒲京澳門賭場網站”的,也便是說,它是有自己的行徑的。而“進程”指的是一系列的二進制流的聚攏,是一次運交活動。在法度榜樣中,我們用類來描述工具,而對全部的系統,我們用系統圖來描述。在這里,系統也是我們的工具。數據集就像事物在我們大年夜腦中的映像,對數據集的操作就猶如我們對事物的意向。假如我們仔細考察系統的各個部分,那么,它們也可以看作是工具。“面向工具的XX”便是要求我們若何合理地分配工具之間的層次布局,使得它清楚清楚明了,在維持效率的同時還便于排錯、掩護。我們有一個專業名詞來表示已經定型、獲得大年夜家認可的軟件措施,那就我們常說的模式。各行各業都邑有它自己的一樣平常的措施模式,如修建業有修建模式,軟件開拓有其開拓模式。我想,當初愛因斯坦之以是做出幾個丑陋的凳子,便是由于他不相識凳子的設計模式吧。這就猶如很多多少編程初學者,輕細大年夜一點的法度榜樣就會寫出紊亂不堪的、除了自己誰也看不懂的代碼,大概過了幾天連自己都看不懂了。

在軟件開拓歷程傍邊,系統(我們面對的最終工具)的闡發、設計才是最緊張的。而這兩方面是慎密結合在一路的。這兩步沒有做好,下面的編碼實現事情很難玩成,可以說是寸步難行。我曾經在一家軟件公司(說是公司,著實加上老板才只有六、七小我)做過一段光陰。那時老板叫我們用Java做一個數據庫系統(藏書樓治理系統),用來當招牌,今后也好對接項目有利。我以為他會先拿出一個設計圖讓我們看,不虞他說現在就開始做。說其實的,那時我對這方面根本沒有履歷。我當時就對他說,你至少得把你設計的藍圖給我們看一看吧?他說沒有,他也不知道若何做,曩昔沒做過。還說我們邊做邊進修。我說那至少你應該先做新蒲京澳門賭場網站一做系統闡發吧。他說如果我有這能力還能在這里呆著?結果可想而知,我們在那里呆了幾天,這里瞧一瞧,那里看一看,又在機子上寫一寫,什么也沒做成。老板望見我們輕細有所松懈,就賡續地催匆匆快做快做。后來我受不了,就一小我跑了。也不知道他們做成了沒有。可以說這是一個不成功的例子。就算是寫成了,沒有闡發、設計的結果肯定也是很難掩護的。這就象是請來的木匠,把一套家具打造得很分歧理,看上去異常糟糕可能還很不實用。有誰會樂意用這樣的家具?法度榜樣包設計得不好,有誰能用得好?無論誰用起來都邑很吃力。假如說一個項目沒有設計好,縱然開拓出來了,后來的掩護事情別人怎么能接手?在我們中國軟件領域有這樣工作的例子很多。當然,孕育發生這樣環境的緣故原由很多,中國的系統體例、公司的實力也是一大年夜方面。然則若何去做,有是一個范圍很寬的話題了。

上面聊得多了。工具是一個對照廣泛的觀點,在我們平日軟件領域里也是這樣。工具之間可以包孕工具。對木匠來說,一套組百口具是一個工具,一件衣柜也是工具——全局和局部都要斟酌。對他們來說,若何從整體到部分的設計出受人好評的家具,是必要富厚的履歷和優越的設計措施的。對我們來說也是這樣。除了要打下踏實的基礎功,積累富厚的履歷,還要留意進修我們的前輩們給我們留下的器械,以及同業們的好的措施。現在,有關面向工具的冊本、文章都很多,我們都應該去看看、去進修。

全文說了這許多,只談了有關面向工具的觀點。有幾位同伙來信問到若何劃分工具層次、布局對系統運行的緊張性等,受篇幅所限,不能述及。還有可能有的同伙對工具的理解不是很合理,這里我談一下我的不雅點。工具在系統運行時是有其生命期的。然則,在運行內工具自身的改變(如,動態地增添、縮減功能,數據集的變更等)不能看作是改變了工具。例如對付一個二叉樹,初始化時只有根節點,當然我們可以看作是一個節點工具,但一樣平常我們是將它當作一個整體的二叉數工具。當樹天生之后,它照樣那個工具,而不能把它當作是別的一個工具了。假如你那樣理解的話,就把工具的各個運行時期分分開來了,這就與工具的觀點有曲解了。

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

建体彩网
河北时时彩开奖号码 江苏十一选五遗漏值 雷速体育怎么开直播间 口袋彩票苹果 2018福彩30选5开奖号码 秒速飞艇哪里开 女子网球比分规则 云南微信麻将群二维码 老快3开奖结果江苏老 北京11选5走势图 任选基本走势