• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Kisser Leon

            這個kisser不太冷
            posts - 100, comments - 102, trackbacks - 0, articles - 0

            談談面向對象

            Posted on 2007-04-09 20:52 kk 閱讀(520) 評論(0)  編輯 收藏 引用 所屬分類: IT隨感

            面向對象是當前計算機界關心的重點,它是90年代軟件開發方法的主流。面向對象的概念和應用已超越了程序設計和軟件開發,擴展到很寬的范圍。如數據庫系統、交互式界面、應用結構、應用平臺、分布式系統、網絡管理結構、CAD技術、人工智能等領域。

            不過我想上面說的應該是國外吧!不知道國內的90年代OO是否風靡啊。偶是21世紀才開始接觸電腦的。記得那時候老師在給我們上C++課的時候,拼命說什么C++好啊,面向對象啊,大說了一通。總之,給我的感覺是,OO才開始風靡。后來,學校里又開了一門課,叫著面向對象×××什么什么的,忘了,反正就是在講面向對象。老師也是一個勁的給我們灌輸OO思想,叫我們區別好OOOP的差別。不知道為什么會有這么一段,可能想說國內的技術比國外的慢太多了。很多時候,其實,語言也是一種原因!畢竟國內好的翻譯太少了!而且不能總是等侯杰大叔叔來翻譯啊。記得以前在論壇上看到一句“名言”啊:不要看國內作者寫的書,不要看國內譯者翻譯的書,括弧(侯杰除外)。看起來似乎有點偏激,不過卻不無道理啊!很多的作者和譯者都是垃圾啊!!!!偶深受其害,因為偶很愛買書(看書就。。。呵呵)。記得我去年看重構的時候,我覺得這個名詞還是很新的啊,看了那本書之后才發現原來這本書寫于上個世紀,昏迷啊,國內的技術太落后了。偶的e文也太落后了!要多關注關注國外的新技術。

            扯遠了。回來再談OO

            OO,很早就已經學過了,很早以前就以為自己懂了,今天突然發現自己還不懂什么是OO,為什么要OO?以前的想法可能太簡單了一點,認為只要是全都是對象就是OO了。

            沒錯,在OO的思想中,所有一切東西都是O!但是,我發現在實際編程中,我連這一點都無法保證!而且,我也無法做到理論聯系實際,把理論應用到實際。在實際運用中,幾乎沒有考慮過O的問題。更多的時候是在考慮什么模塊怎么劃分,一個模塊應該有幾個類阿,每個類都有些什么功能阿。但是我沒有把那個類作為一個對象來考慮,或者說沒有把那個類作為一類抽象的對象來考慮。需要什么東西就直接往里面加。不管加的東西跟那個類有沒有關系,都往里面塞!行為相當惡劣。簡直就是OP啊,每個類都成了一組functionwrapper了,相當悲哀!不管function是否應該屬于該類(或者說該對象)。搞不好什么時候就設計出個:一個人有爬的行為!(結果肯定會被一群人狂揍哦)。

            OO有什么優點呢?為什么要OO

            OO使人們得變成與實際的世界更加接近,所有的對象被賦予屬性和方法,結果編程就更加富有人性化。

            維護簡單模塊化是面向對象編程中的一個特征。實體被表示為類和同一名字空間中具有相同功能的類,我們可以在名字空間中添加一個類而不會影響該名字空間的其他成員。

            可擴充性面向對象編程從本質上支持擴充性。如果有一個具有某種功能的類,就可以很快地擴充這個類,創建一個具有擴充的功能的類。

            代碼重用,由于功能是被封裝在類中的,并且類是作為一個獨立實體而存在的,提供一個類庫就非常簡單了。事實上,任何一個.NET Framework編程語言的程序員都可以使用.NET Framework類庫,.NET Framework類庫提供了很多的功能。更令人高興的是,我們可以通過提供符合需求的類來擴充這些功能。

            在實際的編程中你有考慮過這些問題嗎?Sorry,偶是沒有考慮過。基本上是,維護很難!擴充相對較容易,因為直接拷貝過來,在修改(這有算是OO嗎?顯然否)。這種根本就是沒有利用到面向對象中的重用性。擴充起來也不容易,需要什么功能就胡亂繼承一通,搞得類的層次太多了,無形之中給后人維護帶來了極大的困難。出現這些情況的原因是什么呢?前面的代碼設計的不夠好。面向對象的三大特點:封裝,繼承和多態有沒有都考慮進來?面向對象是一種思想,是我們考慮事情的方法,通常表現為我們是將問題的解決按照過程方式來解決呢,還是將問題抽象為一個對象來解決它。很多情況下,我們會不知不覺的按照過程方式來解決它,而不是考慮將要解決問題抽象為對象去解決它。有些人打著面向對象的幌子,干著過程編程的勾當。

            OOA呢?OOA有什么幫助呢?

            OOA的主要優點

            ·         加強了對問題域和系統責任的理解;

            ·         改進與分析有關的各類人員之間的交流;

            ·         對需求的變化具有較強的適應性;

            ·         支持軟件復用。

            ·         貫穿軟件生命周期全過程的一致性。

            ·         實用性;

            ·         有利于用戶參與。

            OOA方法的基本步驟
             
            在用OOA具體地分析一個事物時,大致上遵循如下五個基本步驟:
            第一步,確定對象和類。這里所說的對象是對數據及其處理方式的抽象,它反映了系統保存和處理現實世界中某些事物的信息的能力。類是多個對象的共同屬性和方法集合的描述,它包括如何在一個類中建立一個新對象的描述。

            第二步,確定結構(structure)。結構是指問題域的復雜性和連接關系。類成員結構反映了泛化-特化關系,整體-部分結構反映整體和局部之間的關系。

            第三步,確定主題(subject)。主題是指事物的總體概貌和總體分析模型。

            第四步,確定屬性(attribute)。屬性就是數據元素,可用來描述對象或分類結構的實例,可在圖中給出,并在對象的存儲中指定。

            第五步,確定方法(method)。方法是在收到消息后必須進行的一些處理方法:方法要在圖中定義,并在對象的存儲中指定。對于每個對象和結構來說,那些用來增加、修改、刪除和選擇一個方法本身都是隱含的(雖然它們是要在對象的存儲中定義的,但并不在圖上給出),而有些則是顯示的

             

            OO是個好東西啊。要理解OO的思想,并能夠在實際中運用它。不過OO現在已經不是最熱的了,在現在web2.0的年代,基于網頁上的應用會更火啊。你開發個軟件,如果是單機版的,你都不好意思說!如果是C/S架構的,你也是會被BS的。呵呵。現在什么SOAAJAX那個火 啊!SOAservice oriented architectureAJAX是什么東東?中間件、CRPCPM等等,現在也是牛一B啊。學無止盡,學不能曬網啊;跟上時代的腳步,對新技術保持必要的觸覺。恩。

            以上純屬胡言亂語,部分摘自網上。如果有興趣,偶歡迎大家一起來討論啊。

            99久久精品午夜一区二区| 色妞色综合久久夜夜| 精品久久一区二区| 久久久久九九精品影院| 亚洲第一极品精品无码久久| 国产精品久久毛片完整版| 久久精品成人| 精品久久久久久无码专区| 久久久久久久久久久免费精品| 久久久高清免费视频| 婷婷久久综合九色综合98| 亚洲精品无码久久久| 欧美亚洲国产精品久久蜜芽 | 无码精品久久久天天影视 | 欧美噜噜久久久XXX| 伊人久久综在合线亚洲2019 | 精品国际久久久久999波多野| 久久国产精品视频| 国产亚洲综合久久系列| 思思久久99热只有频精品66| 亚洲乱亚洲乱淫久久| 久久超碰97人人做人人爱| 亚洲中文字幕无码久久2020| 久久国产精品偷99| 99久久国产综合精品成人影院| 亚洲精品白浆高清久久久久久 | 精品国产VA久久久久久久冰| 色狠狠久久综合网| 亚洲七七久久精品中文国产| 久久被窝电影亚洲爽爽爽| 国产精品免费看久久久| www.久久99| 久久青草国产手机看片福利盒子| 久久精品天天中文字幕人妻| 久久婷婷国产剧情内射白浆| 久久亚洲国产成人影院| 一个色综合久久| 国产A三级久久精品| 一本久久知道综合久久| 亚洲精品乱码久久久久久中文字幕| 伊人热热久久原色播放www|