① 抽象到底是什麼意思我怎麼總是弄不明白誰能具體的解釋一下舉個例子,請不要到百度百科那去復制的。
共同特徵是指那些能把一類事物與他類事物區分開來的特徵,這些具有區分作用的特徵又稱本質特徵。因此抽取事物的共同特徵就是抽取事物的本質特徵,舍棄非本質的特徵。所以抽象的過程也是一個裁剪的過程,將不同的、非本質性的特徵全部裁剪掉了。 所謂的共同特徵,是相對的,是指從某一個刻面看是共同的。比如,對於汽車和大米,從買賣的角度看都是商品,都有價格,這是他們的共同的特徵,而從其他方面來比較是,他們則是不同的。所以在抽象時,同與不同,決定於從什麼角度上來抽象。抽象的角度取決於分析問題的目的。
編輯本段主要目的
抽象化主要是為了使復雜度降低,以得到論域中較簡單的概念,好讓人們能夠控制其過程或以綜觀的角度來了解許多特定的事態。
編輯本段思考過程
在哲學里,「抽象化」是一種將觀念抽離原本客體的思想過程。 抽象化使用了簡單的手法,其將具體的細節保留成含糊、曖昧或無定義的樣子;因此對於抽象事物的有效溝通需要在溝通的發受者之間有著某種直覺或共同的經驗。 由具體事物中所抽離出的抽象事物之描述會有點含糊不清,此種含糊或曖昧即為抽象化的特徵之一。因此,如報紙之簡單的事物有可能可以被分成六個等級,例如道格拉斯·理查·郝夫斯台特在《哥德爾、埃舍爾、巴赫》(1979年)這本書中由抽象至具體排出之對含糊的描述: (1)一個出版品 (2)一份報紙 (3)《舊金山紀事報》 (4)5月18日的《舊金山紀事報》 (5)我的5月18日的《舊金山紀事報》 (6)我首次撿起時的我的5月18日的《舊金山紀事報》(而現在則不是我的了,因為我在幾天後丟進火爐里燒了) 抽象化可以因此以不失其一般性的方式包含著每個細節的層級。而或許一個偵探或一位哲學家/科學家/工程師可以以此來學習某些事實,以對細節漸進加深的方式,來解決一場犯罪或一件拼圖。
編輯本段指稱對象
抽象化有時會有些含糊不清的指稱對象;例如,「快樂」(當做為一個抽象化)可以指涉成能使人快樂的人事物。相同地,「建築」不只指涉著安全、功能性建築的設定,也指涉著創作和創新的元素,其目的是為了解決建造、空間利用及試圖引起建造者、擁有者、觀看者和使用者的情緒反應等問題。
具現化
不存在於任一特定地點和時間的事物通常會被認為是抽象的。相對地,此類抽象事物的例子或元素則可能會存在於許多不同的地點及時間內。此類的抽象事會被稱做是「多重具現」的。 但不必然需要將「抽象」的觀念定義成能具現的觀念,也不必然需要將「抽象化」定義成具現化的相反作用。這樣做會令「貓」和「電話」這些概念因不隨外觀而變而為抽象的觀念,而一個特定的貓或一個特定的電話則會是「貓」或「電話」等概念的一個例子。
物質性
一個物理物件(一個概念或一個字的可能指稱對象)被認為是「具體」的(非抽象的),若它是一個會出現在特定的地點和時間的「特定個體」的話。 抽象的事物有時可以被定義成不存在於現實或只存在於感官經驗上的事物,如紅色。但該定義會有如何決定哪些事是真實的(即哪些事是存在於現實中的)之困難性。例如,很難去決定如「神」、「三號」和「女神」等概念是真實的,還是抽象的,亦或是兩者都有。 解決此類困難的一種方法是將其述語不論事物是一真實的、抽象的、具體的或一特定性質(如「好」)等都將其做為一個一般性的詞彙。有關事物性質的問題故而會是個有關其述語的命題,其中的命題則仍然需要由研究者來判斷真偽。在上面的「圖2」中,如連接著方格和橢圓間箭頭的圖像間之關系可以標示著述語。不同抽象化的等級可以以多層的箭頭依序地連在一起來標記。
編輯本段哲學里的抽象
抽象是哲學的根本特點, 抽象不能脫離具體而獨自存在。 我們所看到的大自然景象就是大自然的實物在我們腦海中的抽象。抽象就是我們對某類事物共性的描述。 具體來說,抽象是指: 1、將復雜物體的一個或幾個特性抽出去,而只注意其他特性的行動或過程(如頭腦只思考樹本身的形狀或只考慮樹葉的顏色,不受它們的大小和形狀的限制)。 2、將幾個有區別的物體的共同性質或特性,形象地抽取出來或孤立地進行考慮的行動或過程。 抽象是認識復雜現象過程中使用的思維工具,即抽出事物本質的共同的特性而暫不考慮它的細節,不考慮其他因素。 軟體工程過程中的每一步部可以看作是對軟體解決方法的抽象層次的一次細化。在進行軟體設計時,抽象與逐步求精、模塊化密切相關,幫助我們定義軟體結構中模塊的實體,由抽象到具體地分析和構造出軟體的層次結構,提高軟體的可理解性。
編輯本段藝術里的抽象
大多數在藝術中一般會將「抽象」當做是抽象畫的同義詞。但它可以是指任何由現實世界中精煉出的物件或圖像,或者是完全無關的其他概念。在最現實的意義之下,抽象畫並不是真的是抽象的。 藝術家羅伯特·斯塔克寫道:「距離放棄了形式的風景畫且改去發覺不具表現主題地將顏料自由地塗在畫紙上之更直接的表現方式,已經過了有十年的時間了,我也發展出了一個新的詞彙;明和暗、暖和冷、making marks、brush-strokes like heart-rhythms。每一天都是一次獨自的作畫能力之測試。每一張畫作都會被不斷地被更改、被重製、被擦掉或被重畫,只要它還留在這個工作室里……」
編輯本段抽象藝術
抽象藝術是與具象藝術相對的名稱,也可稱為非具象藝術。它的特徵是缺乏描繪,用情緒的方法去表現概念和作畫,而這種方法基本上就是屬於表現主義的,最早見於康定斯基的作品。它是由各種反傳統的藝術影響融合而來,特別是由野獸派、立體派演變而來。 「抽象」藝術在畢加索看來並不存在,他認為只不過有人強調風格,有人強調生活罷了。在米歇爾·塞弗爾看來,抽象藝術是:「我把一切不帶任何提醒,不帶任何對於現實的回憶——不管這一現實是否是畫家的出發點——的藝術都叫作抽象藝術。 實際上野獸派和立體派促進了形與色的獨立發展。是康定斯基進一步發現了它的奧妙,他在1910年畫了第一幅斷然抽象的水彩畫,是一幅無具象願望的、充滿活力的重疊色點。康定斯基的創造性發明是從音樂中獲得美學啟迪,爾後捷克人庫普卡直接從音樂中獲取靈感進行抽象藝術創作。人稱他是音樂主義畫家鼻祖,後來他們共同組成抽象派。
編輯本段心理學里的抽象
榮格對抽象化的定義將思考過程擴展至包含四個互斥互補的心理功能:知覺、直覺、感情和思維。它們一起形成一個異化著抽象化過程的總體架構。當抽象化作用在相對立的功能之一時,其會排除到其他功能及如情緒等不相關事物在同一時間內的影響。抽象化需要對心裏面功能的結構分歧做選擇性的運用。抽象化的相對為具體化。
編輯本段程序設計的抽象
抽象(Abstraction)是簡化復雜的現實問題的途徑,它可以為具體問題找到最恰當的類定義,並且可以在最恰當的繼承級別解釋問題。它可以忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。
編輯本段科學中的抽象
概述
「抽象」這個詞拉丁文為abstractio,它的原意是排除、抽出。在自然語言中,很多人把凡是不能被人們的感官所直接把握的東西,也就是通常所說的「看不見,摸不著」的東西,叫做「抽象」;有的則把「抽象」作為孤立、片面、思想內容貧乏空洞的同義詞。這些是「抽象」的引伸和轉義。 在科學研究中,我們把科學抽象理解為單純提取某一特性加以認識的思維活動,科學抽象的直接起點是經驗事實,抽象的過程大體是這樣的:從解答問題出發,通過對各種經驗事實的比較,分析,排除那些無關緊要的因素,提取研究對象的重要特性 (普遍規律與因果關系)加以認識,從而為解答問題提供某種科學定律或一般原理。 在科學研究中,科學抽象的具體程序是千差萬別的,決沒有千篇一律的模式,但是一切科學抽象過程都具有以下的環節。我們把它概括為:分離—提純—簡略。 第一,所謂分離,就是暫時不考慮我們所要研究的對象與其他各個對象之間各式各樣的總體聯系。這是科學抽象的第—個環節。因為任何一種科學研究,都首先需要確定自己所特有的研究對象,而任何一種研究對象就其現實原型而言,它總是處於與其他的事物千絲萬縷的聯系之中,是復雜整體中的一部分。但是任何一項具體的科學研究課題都不可能對現象之間各種各樣的關系都加以考察,所以必須進行分離,而分離就是一種抽象。比如說,要研究落體運動這一種物理現象,揭示其規律,就首先必須撇開其他現象,如化學現象、生物現象以及其他形式的物理現象等等,而把落體運動這一種特定的物理現象從現象總體中抽取出來。 把研究對象分離出來;它的實質就是從學科的研究領域出發,從探索某一種規律性出發,撇開研究對象同客觀現實的整體聯系,這是進入抽象過程的第一步。 第二,所謂提純,就是在思想中排除那些模糊基本過程、掩蓋普遍規律的干擾因素,從而使我們能在純粹的狀態下對研究對象進行考察。大家知道,實際存在的具體現象總是復雜的,有多方面的因素錯綜交織在一起,綜合地起著作用。如果不進行合理的純化,就難以揭示事物的基本性質和運動規律。馬克思說:「物理學家是在自然過程表現得最確實、最少受干擾的地方考察自然過程的,或者,如有可能,是在保證過程以其純粹形態進行的條件下從事實驗的。」(《馬克思思格斯選集》第2卷,第206頁)這里,馬克思所說的是藉助於某種物質手段將自然過程加以純化。由於物質技術條件的局限性,有時不採用物質手段去排除那些干擾因素,這就需要藉助於思想抽象做到這一點。伽利略本人對落體運動的研究就是如此。 大家知道,在地球大氣層的自然狀態下,自由落體運動規律的表現受著空氣阻力因素的干擾。人們直觀到的現象是重物比輕物先落地。正是由於這一點,使人們長期以來認識不清落體運動的規律。古希臘偉大學者亞里士多德作出了重物體比輕物體墜落較快的錯誤結論。要排除空氣阻力因素的干擾,也就是要創造一個真空環境,考察真空中的自由落體是遵循什麼樣的規律運動的。在伽利略時代,人們還無法用物質手段創設真空環境來從事落體實驗。伽利略就依靠思維的抽象力,在思想上撇開空氣阻力的因素)設想在純粹形態下的落體運動,從而得出了自由落體定律,推翻了亞里士多德的錯誤結論。 在純粹狀態下對物體的性質及其規律進行考察,這是抽象過程的關鍵性的一個環節。 第三,所謂簡略,就是對純態研究的結果所必須進行的一種處理,或者說是對研究結果的一種表述方式。它是抽象過程的最後一個環節。在科學研究過程中,對復雜問題作純態的考察,這本身就是一種簡化。另外,對於考察結果的表達也有一個簡略的問題。不論是對於考察結果的定性表述還是定量表述,都只能簡略地反映客觀現實,也就是說,它必然要撇開那些非本質的因素,這樣才能把握事物的基本性質和它的規律。所以,簡略也是一種抽象,是抽象過程的一個必要環節。比如說,伽利略所發現的自由落體定律就可以簡略地用一個公式來表示: S=1/2gt2 這里,「S」表示物體在真空中的墜落距離;「t」表示墜落的時間,「g」表示重力加速度常數,它等於981厘米/秒2。伽利略的落體定律刻劃的是真空中的自由落體的運動規律,但是,一般所說的落體運動是由地球大氣層的自然狀態下進行的,因此要把握自然狀態下的落體運動的規律表現,不能不考慮到空氣阻力因素的影響,所以,相對於實際情況來說,伽利略的落體定律是—種抽象的簡略的認識。任一種科學抽象莫不如此。 綜上所述,分離、提純、簡略是抽象過程的基本環節,也可以說是抽象的方式與方法。 抽象作為一種科學方法,在古代、近代和現代被人們廣泛應用。誠然,嚴格意義的經驗科學在古代尚未形成,那時人們關於自然界的知識包溶在渾然一體的自然哲學之中,並且帶有樸素、直觀的特點,但是,這決不意味著當時的自然哲學家們是不應用抽象方法的。例如,古希臘米利都的留基伯和阿不地拉的德謨克利特,他們相信宇宙間萬物都是原子組成的,而原子是不可分的物質。宇宙間有無數的原子,並在一個無限的虛空中永遠運動著。它們既不能創造出來,又不能毀滅掉。應當肯定,留基伯和德謨克利特關於原子的認識,在二千多年前,確是了不起的抽象成果。 在近代,科學抽象法得到更自覺的應用,並對這種方法作出理論上的考察。英國的弗蘭西斯·培根是近代實驗科學的始祖。他所論述的歸納法其中就包含著科學抽象的方法。培根在《新工具》一書中說: 「我們必須不用火而用人心,來把自然完全分解開,分離開,因為人心亦就是火底一種。在發現形式方面講,真正歸納法底第一步是應該先排除了一些性質,因為有一些性質,往往不存在於所與性質存在的例證內,或存在於所與性質不存在的例證內;有時所與性質雖減, 它們卻增,所與性質雖增,它們卻減。因此,在適當地排斥了,拒絕了那些性質以後,一切輕浮的意見便煙消雲散,所余的只有肯定,堅固,真實,分明的形式。」(《新工具》,商務印書館,1936年版,第185頁) 培根所說的「人心」,就是人的思維能力,在他看來,我們必須用人的思維能力「把自然完全分解開,分離開開」,排除那些不相乾的性質,從而揭示現象的因果性和規律性。培根以探索熱現象為例,應用排除法,在排除了所有不相乾的性質以後,發現「熱是某種性質底一個特殊情況,那種性質就是所謂運動」。((新工具》,商務印書館,1936年版,第l86-190頁) 培根所說的排除法,歸納法中巳包含著抽象的方法。但是,科學抽象法並不局限於培根講的排除法、歸納法。 隨著科學的發展,抽象方法的應用也越來越深入,科學抽象的層次則越來越高。如果說與直觀、常識相一致的抽象為初級的科學抽象,那麼與直觀、常識相背離的抽象可以稱之為高層次的科學抽象。日本物理學家湯川秀樹根據對物理學史的考察,指出了物理學的抽象化發展這一規律性。 「如果我們考察物理學史,我們都知道在近三、四百年內曾發生過兩次大革命。第一次革命當然是由伽利略發起的和由牛頓完成的十七世紀革命。第二次革命則在將近十九世紀末發端於這樣一些偉大的事件——X射線、放射性和電子的發現。這第二次革命有兩次高潮:一次是在二十世紀初導致了普朗克和波爾的量子理論以及愛因斯坦的相對論,第二次是發生在本世紀二十年代量子力學建立之時。……」;結果就是導致了物理學的理論概念背離直覺(直觀)和常識。換言之,在從二十世紀初開始的物理學發展過程中,一種抽象化的傾向已經變得引人注目了。當抽象的數學概念是邏輯一致的,而且它們的結論符合於實驗時,即使它們與我們的直觀世界圖象相矛盾,物理學家們也不得不接受它們。」(湯川秀樹《科學思維中的直覺和抽象》,譯文載《哲學譯叢》1982年第2期第17—18頁) 在科學發現過程中,抽象方法起著什麼樣的作用,對於這個問題,歷史上存在過兩種對立的意見,一種意見認為科學發現靠的就是抽象法,科學發現的過程就是從經驗事實中抽出最初的基本概念,然後一層一層地往上抽象,構成金字塔形的科學體系。這是古典歸納主義者的觀點。如弗蘭西斯·培根就持這種觀點。他說:「尋求和發現真理的道路只有兩條,也只能有兩條。……感覺與特殊事物把公理引伸出來,然後不斷地逐漸上升,最後達到最普遍的公理。這是真正的道路」。(《十六——十八世紀西歐各國哲學》,商務印書館,1962年版;第10頁) 與此相反,另一種意見認為抽象法並非科學發現的方法。如愛因斯坦就持這種觀點。他在論述科學體系的層次問題時指出,「抽象法或者歸納法理論的信徒也許會把我們的各個層次叫做『抽象的程度』,但是我不認為這是合理的,因為它掩蓋了概念對於感覺經驗的邏輯獨立性」。(《愛因斯坦文集》,第1卷,商務印書館,1977年版,第34頁)在愛因斯坦看來,與經驗層次最接近的理論命題不是從經驗層次抽象得來,而是從更高層次的理論命題中推導出來的;最高層次的理論命題則是思維自由創造的產物。 科學活動的事實告訴我們,科學發現的過程是多種方法綜合運用的過程。因此不能把抽象法的作用和其他方法的作用,包括直覺的作用在內,互相對立起來。抽象法離開其他各種方法,是不可能孤立地作出科學發現的。 古典歸納主義者認為依靠抽象法就能從經驗事實中找出事物的規律性,形成科學理論,這種觀點是不符合科學發現過程的實際情況的。那麼,是不是說抽象法在科學發現過程中是毫無用處的呢?完全抹煞抽象法的作用,也是不妥當的。 抽象法在科學發現中是一種不可少的方法。人們之所以需要應用抽象法,其客觀的依據就在於自然界現象的復雜性和事物規律的隱蔽性。假如說自然界的現象十分單純,事物的規律是一目瞭然的,那倒是不必要應用抽象法,不僅抽象法成為不必要,就是整個科學也是多餘的了。但是,實際情祝並非如此。科學的任務就在於透過錯綜復雜的現象,排除假象的迷霧,揭開大自然的奧秘,科學地解釋各種事實。為此就需要撇開和排除那些偶然的因素,把普遍的聯系抽取出來。這就是抽象的過程。不管是什麼樣的規律,什麼樣的因果聯系,人們要發現它們,總是需要應用抽象法的。抽象法也同其他的各種科學思維的方法一樣,對於科 學發現來說,起著一種助發現的作用。
抽象的類型和合理性原則
抽象的類型和合理性原則 在科學研究中,抽象的具體形式是多種多樣的。如果以抽象的內容是事物所表現的特徵還是普遍性的定律作為標准加以區分,那麼,抽象大致可分為表徵性抽象和原理性抽象兩大類。
表徵性抽象
所謂表徵性抽象是以可觀察的事物現象為直接起點的一種初始抽象,它是對物體所表現出來的特徵的抽象。例如,物體的「形狀」、「重量」、「顏色」、「溫度」、「波長」等等,這些關於物體的物理性質的抽象,所概括的就是物體的一些表面特徵。這種抽象就屬於表徵性的抽象。 表徵性抽象同生動直觀是有區別的。生動直觀所把握的是事物的個性,是特定的「這一個」,如「部分浸入水中的那支筷子,看起來是彎的」,這里的筷子就是特定的「這一個」,「看起來是彎的」是那支筷子的表面特徵。而表徵性抽象卻不然,它概括的雖是事物的某些表面特徵,但是卻屬於一種抽象概括的認識,因為它撇開了事物的個性,它所把握的是事物的共性。比如古代人認為,「兩足直立」是人的一種特性,對這種特性的隊識已經是一種抽象,因為它所反映的不是這一個人或那一個人的個性,而是作為所有人的一種共性。但是,「兩足直立」對於人來說,畢竟是一種表面的特徵。所以,「兩足直立」作為一種抽象,可以說是一種典型的表徵性抽象。 表徵性抽象同生動直觀又是有聯系的。因為表徵性抽象所反映的是事物的表面特徵;所以,一般來說,表徵性抽象總是直接來自一種可觀察的現象,是同經驗事實比較接近的一種抽象。比如說「波長」,雖然我們憑感官無法直接把握它,但是,藉助於特定的儀器,就可以把握到波長的某種表徵圖象。所以,「波長」也是一種具有可感性的表徵性抽象。又如,「磁力線」的抽象也是如此。大家知道,磁力線本身是「看不見、摸不著』的,但是,如果我們把鐵屑放在磁場的范圍內,鐵屑的分布就會呈現出磁力線的表徵圖象,所以,在這個意義上說「磁力線」也是來自一種可觀察的表徵性抽象。
原理性抽象
所謂原理性抽象,是在表徵性抽象基礎上形成的一種深層抽象,它所把握的是事物的因果性和規律性的聯系。這種抽象的成果就是定律、原理。例如,杠桿原理、落體定律、牛頓的運動定律和萬有引力定律,光的反射和折射定律、化學元素周期律、生物體遺傳因子的分離定律、能的轉化和守恆定律、愛因斯坦的相對性運動原理等等,都屬於這種原理性抽象。 當我們考察原理性抽象的特點時,如下兩點是值得注意的: 第一,原理性抽象不同於表徵性抽象,它所抽取的不是事物的外露的表面特徵,而是事物內在的規律性聯系。比如說,「靜止」、「運動」、「直線」,「等距」等等,可以說是表徵性抽象,它們表徵著物體的一種狀態,而「每個物體繼續保持其靜止或沿一直線作等速運動的狀態,除非有力加於其上迫使它改變這種狀態」([美]H·S.塞耶編《牛頓自然哲學著作選》,上海人民出版社,1974年版第28頁),就可以說是一種原理性抽象,它抽取的是物體運動的一種規律性。正因為原理性抽象抽取的不是外露的表面特鉦,所以它同表徵性抽象相比,更遠離了經驗事實,但又是更探刻的認識,它認識到自然界的內部秘密。 第二,在科學發展的常規時期,原理性抽象的實現是以已有的理論作為指導,抽象的結果——定律、原理,與已有的理論之間的關系是相容的關系,或者說不推翻已有理論的框架,而在科學發展的革命時期,反常的原理性抽象的實現,不僅不依賴於原有理論的指導,而且與原有理論相違背。因此,反常的原理性抽象的實現必須突破已有理論的框架范圍。比如說,經典力學作為一種背景知識,對於預測宏觀低速運動的物體的運動狀態,把握其運動規律,曾經是十分有效的。但是,一旦進入了微觀領域,面臨的是高速運動的微觀物體,如果仍以經典力學為指導,並且在它的理論框架基礎上進行抽象活動,那就不僅不能有效地揭示諸如光、電現象這種高速運動的微觀客體的運動規律,而且反而會阻礙對這方面規律性的發現,所以,必須突破舊有理論的束縛,才能實現反常的原理性抽象,愛因斯坦建立相對論是極有說服力的一個例子。如果不突破牛頓力學的絕對時空觀,那麼就不可能建立相對論。
編輯本段科學抽象應當注意原則
上面我們一般地考察了科學抽象的類型問題,那麼,怎樣才能合理地、有效地進行科學抽象呢?科學抽象應當注意以下的原則:
科學抽象的東西必須是具有普遍性的東西
個別的、表面的東西是偶然的東西,要進行抽象,當然不能完全脫離這些個別的、表面的、偶然的東西,但是抽象的目的並不是去抽取那些個別的、偶然的東西,抽象的目的是在於從個別的經驗事實中抽出普遍性的東西,只有這樣才有意義,才能進一步去認識事物的規律性。當然,普遍性不一定是規律性,但是不普遍的東西不可能是規律性的東西。所以,什麼東西需要抽象,什麼東西不需要抽象,從定性的觀點來看,應當抽象出普遍性的東西。比如從對空氣的觀察和實驗的一系列事實中,抽象地認識存在於體積、溫度以及壓力之間的普遍關系,並進行定量的描述,這樣也就發現了氣體定律。
高層抽象必須能演繹出低層抽象
自然界事物及其規律是多層次的系統,與此相應,科學抽象也是一個多層次的系統。在科學抽象的不同層次中,有低層的抽象,也有高層的抽象。在科學發現中,相對於解釋性的理論原理來說,描述性的經驗定律可以說是低層抽象,而解釋性的理論原理就可以說是高層抽象。 必須指出,我們把科學抽象區分為低層抽象和高層抽象,是相對而言的。理論抽象本身也是多層次的。比如說,牛頓的運動定律和萬有引力定律相對於開普勒的行星運動三大定律來說,是高層抽象,因為我們通過牛頓三大運動定律和萬有引力定律的結合,就能從理論上推導出開普勒由觀測總結得到的行星運動三大定律。 如果高層抽象不能演繹出低層抽象,那就表明這種抽象並未真正發現了更普遍的定律和原理。一切普遍性較高的定律和原理,都能演繹出普遍性較低的定律和原理。一切低層的定律和原理都是高層的定律和原理的特例。如果一個研究者從事更高層的抽象,其結果無法演繹出低層抽象,那就意味著他所作的高層抽象是無效的,不合理的,應予糾正。
總結
抽象思維法是指在感性認識基礎上運用概念、判斷、推理等方式透過現象,抽取研究對象本質的理性思維法。具體地說,科學抽象就是人們在實踐的基礎上,對於豐富的感性材料通過「去粗取精、去偽存真、由此及彼、由表及裡」的加工製作,形成概念、判斷、推理等思維形式,以反映事物的本質和規律。 科學抽象是由三個階段和兩次飛躍構成的辯證思維過程。第一個階段是感性的具體,即通過感官把事物的信息在大腦中形成表象。第二階段是從感性到抽象的規定,也是第一次飛躍。這個階段是將事物的表象進行分解、加工、分析和研究,最終形成反映事物不同側面的各種本質屬性。第三階段是從抽象的規定上升到思維的具體,這是科學抽象的第二次飛躍。它是將事物的各種抽象規定在思維中加以綜合、完整地重現出來,形成對事物內在本質的綜合性的認識。
② 從軟體開發過程來理解抽象與精化
在軟體開發過程中,抽象與精化對應分析類產生過程和設計類產生過程。抽象的過程就是提煉存在於事物之中有別於其他事物的本質的東西,精化是在更細粒度上的抽象,抽象讓我們抓住問題域,從整體上把握問題域,精化則讓我們對問題域分而治之,從細節上把握問題域。
③ 計算機系統的硬體抽象、軟體抽象和分層封裝思想是什麼
抽象是計算機科學中最為重要的概念之一。比如我們為一組函數規定一個簡單的應用程序介面(API)就是一個很好的編程習慣,程序員無需了解它內部的工作便可以使用這些代碼。不同的編程語言提供不同形式和等級的抽象支持,例如Java類的聲明和C語言的函數原型。
如下圖,在處理器里,指令集架構提供了對實際處理器硬體的抽象。使用這個抽象,機器代碼表現得幾號箱運行在一個依稀執行一條指令的處理器上。底層的已經遠比抽象描述的要復雜驚喜,它並行的執行多條指令,但又總是與那個簡單有序的模型保持一致。只要執行的模型一樣,不同的處理器實現也能執行同樣的機器代碼,而有提供不同的開銷和性能。
文件:對I/O設備的抽象
虛擬內存:對程序存儲器的抽象
進程:對一個正在運行的程序的抽象
虛擬機:對整個計算機的抽象,包括操作系統,處理器和程序
④ 軟體開發中用例圖怎麼抽象成表
從UML設計角度來說,用例圖是描述用戶與系統如何交互的,更多是從功能層面考慮,個人覺得無法直接抽象成表。如果有類圖(方法和數據、與其他類關系),其中數據和關系倒是可以做為表的屬性。
業務熟悉了,可以自己創建E-R圖,資料庫設計相關教程應該都有講這個,然後根據E-R關系圖來創建資料庫表。基本上就是確定都有哪些對象,對象都有哪些屬性,這些對象之間有什麼關系。對象就是你的表,其欄位就是屬性,其中你需要確定主鍵(可以沒有,但是建議有),關系也是表,其欄位就是兩個關系對象的主鍵標識ID。
⑤ 操作系統如何對計算機硬體部分的處理機,內存,設備進行抽象
進行抽象?還是進行管理?如果是進行抽象。就請您賜教。如果是管理的話。
對於CUP(中央處理器)也就是處理機。CUP是計算機系統中最重要的硬體資源,也就是相當於人的大腦。---(重要性。計算機的一切處理運算都是在CPU中完成的,只有得到計算機的處理數據,用戶的任務才能得到處理。)---(CPU的功能,這點很容易知道。因為在計算機硬體系統中。我們知道CPU是由運算器和控制器組成。運算器就是對數據進行邏輯運算等等。那麼這里說道的數據從什麼地方來。分兩部分。內存和自身的寄存器。經行處理之後,把處理過的數據保存在內存和自身的寄存器上。)處理器的佔有和利用率之間關繫到計算機和用戶任務的處理效率。---(這點應該是清楚的。就不再多說了。)繼續。每台電腦就只有1個CUP。當多個用戶使用同一個計算機的時候,那麼操作系統就要分配把處理機交給那個用戶先使用。還有就是這個用戶的使用時間---(關於這點。我以前不知道怎麼一台計算機還可以多人使用。不是就我一個人么。。其實我覺得。肯定有這樣的情況的。比如說在QQ上共享資源。可能不恰當。意思是一樣的)
那麼一個大型的操作系統肯定提供的很豐富的調度資源。由操作系統的管理有設置。那麼調度的策略有:分時調度。優先調度。排隊調度。---(這些調度都顧名思義,就不需要在講什麼了)。這個就是操作系統對CPU的管理。小結下。其實就講了。關於CPU怎麼怎麼重要。然後功能是什麼。那麼CPU的佔有和它的利用率就會影響計算機和用戶任務的處理效率。那麼之後又講了。怎麼來配分以及它的調度策略。如果你想了解某種調度策略怎麼來調度的話。就去查點資料就OK了。。
存儲管理也就是內存管理。我們先來看下它管理是管理的什麼。1:對於內外存交換信息的管理。2:配合硬體做地址轉換和存儲保護的工作。3:進行存儲空間的分配和回收。---如果不知道怎麼來內外存信息管理。配合硬體做地址轉換和存儲保護工作。以及存儲空間的分配和回收。先記下來再說。。說道這里會遇到幾個問題。我們知道多個用戶程序共用一個計算機系統的時候,往往就會公用計算的內存儲器。如果把各個用戶程序和數據隔離互不幹擾。又能共享一些數據。那麼就對這個存儲空間經行保護和分配。那麼存儲管理的功能有 1:內存的分配---就是當多個進程同時進入到內存當中,如何來分配內存空間。哪些空間是已經分配的。哪些空間是為分配的。那麼按照如何的演算法和分配策略使得這個空間充分運用。那麼這就是內存分配需要做的事情了。。但是怎麼去做。查閱有關資料 - -.....2:地址的轉換和重定位--用戶在程序中使用的是邏輯地址。那麼CUP執行程序的時候是按照物理地址來經行訪問的。那麼這個存儲管理的軟體配合硬體把邏輯地址轉換成物理地址。3:存儲保護--每個程序都在自己所屬的內存區中操作。那麼必須要保證他們不能相互的干擾。以及破壞。因此。一般由硬體提供保護功能。軟體配合實現。
4:內存共享---其實就和QQ群中共享資源都是一樣的。了解它是什麼就可以了。5:存儲的擴展--那麼就是把內存的空間擴大。那麼用到的技術就是虛擬存儲技術。知道這個就可以了
設備管理,設備管理就是計算機中除CUP內存以外的所有輸入和輸出管理。功能--1:緩沖管理,由於CPU和i/o設備的速度很大。為了緩和這一矛盾。通常在設備管理中建立I/O緩沖區,對緩沖區的有效管理是設備管理的一向重要任務。2:設備分配,根據用戶程序提出的I/O請求和系統中設備的使用情況。按照一定的策略。將所有設備分配給申請者。3:設備處理程序,對於未設置通道的計算機系統其基本任務通常是實現CPU和設備控制器之間的通信。4:設備的獨立性和虛擬設備。設備的獨立性,是指。用戶在編寫程序的時候,無需了解系統具體配置了哪些設備。只需要為所需的設備起個邏輯名就可以了。。。。。。。如果還有什麼不理解的。。就咪我哈。。
⑥ 操作系統如何對計算機硬體部分的處理機,內存,設備進行抽象
對於CUP也就是處理機。CUP是計算機系統中最重要的硬體資源,也就是相當於人的大腦。處理器的佔有和利用率之間關
繫到計算機和用戶任務的處理效率。每台電腦就只有1個CUP。當多個用戶使用同一個計算機的時候,那麼操作系統就要
分配把處理機交給那個用戶先使用。還有就是這個用戶的使用時間
那麼一個大型的操作系統肯定提供的很豐富的調度資源。由操作系統的管理有設置。那麼調度的策略有:分時調度。優
先調度。排隊調度。這個就是操作系統對CPU的管理。
存儲管理也就是內存管理。1:對於內外存交換信息的管理。2:配合硬體做地址轉換和存儲保護的工作。3:進行
存儲空間的分配和回收。存儲管理的功能有 1:內存的分配2:地址的轉換和重定位3:存儲保護
4:內存共享5:存儲的擴展
設備管理,設備管理就是計算機中除CUP內存以外的所有輸入和輸出管理。功能--1:緩沖管理,由於CPU和i/o設備
的速度很大。為了緩和這一矛盾。通常在設備管理中建立I/O緩沖區,對緩沖區的有效管理是設備管理的一向重要任務
。2:設備分配,根據用戶程序提出的I/O請求和系統中設備的使用情況。按照一定的策略。將所有設備分配給申請者。
3:設備處理程序,對於未設置通道的計算機系統其基本任務通常是實現CPU和設備控制器之間的通信。4:設備的獨立
⑦ 如何進行軟體架構設計
軟體架構設計的目的
對於外包業務類型的項目,軟體架構設計的目的與產品類型的項目有所不同,在這里主要討論外包類型項目的軟體架構設計目的。
1、為大規模開發提供基礎和規范,並提供可重用的資產,軟體系統的大規模開發,必須要有一定的基礎和遵循一定的規范,這既是軟體工程本身的要求,也是客戶的要求。架構設計的過程中可以將一些公共部分抽象提取出來,形成公共類和工具類,以達到重用的目的。
2、一定程度上縮短項目的周期,利用軟體架構提供的框架或重用組件,縮短項目開發的周期。
3、降低開發和維護的成本,大量的重用和抽象,可以提取出一些開發人員不用關心的公共部分,這樣便可以使開發人員僅僅關注於業務邏輯的實現,從而減少了很多工作量,提高了開發效率。
4、提高產品的質量,好的軟體架構設計是產品質量的保證,特別是對於客戶常常提出的非功能性需求的滿足。
軟體架構設計的原則
軟體架構設計必須遵循以下原則:
1、滿足功能性需求和非功能需求。這是一個軟體系統最基本的要求,也是架構設計時應該遵循的最基本的原則。
2、實用性原則,就像每一個軟體系統交付給用戶使用時必須實用,能解決用戶的問題一樣,架構設計也必須實用,否則就會「高來高去」或「過度設計」。
3、滿足復用的要求,最大程度的提高開發人員的工作效率。
軟體架構設計的幾種視圖
我們常常在討論架構設計該做些什麼的時候,或是在架構設計評審的會議上,會提出各種各樣的問題,例如開發人員該如何記錄Log,事務如何控制?怎樣才能提高我們的開發人員的工作效率,即在單位時間內更有品質的完成更多的功能?怎樣滿足客戶的非功能性需求?怎樣讓生產環境的平台管理人員更好的維護系統?
上面這些問題,實際上是軟體系統的不同的干係人站在不同的角度上提出的問題,要回答上面這些問題,我們就得從不同的視角來看待軟體架構設計這項工作。
1、邏輯架構視角,從系統用戶的角度考慮問題,設計出來的軟體架構能夠滿足業務邏輯的需求,能夠處理現在越來越復雜的業務邏輯需求。
2、開發架構視角,從系統開發人員的角度來考慮問題,設計的架構要易於理解,易於開發,易於單元測試,最好做到讓開發人員可以用最少的代碼行數完成功能的開發。
3、運行架構視角,從系統運行時的質量需求考慮問題,特別關注於系統的非功能需求,客戶常常都會要求我們系統的功能畫面的最長響應時間不超過4秒,能滿足2000個用戶同時在線使用,基於角色的系統資源的安全控制等。
4、物理架構視角,關注系統安裝和部署在什麼樣的環境上,例如現在最流行的企業應用服務解決方案IBM Http Server + WebSphere Application Server + DB2,WebLogic + Oracle等。
5、數據架構視角,如今我們開發的各類系統,如MIS,ERP,SAP,基本上都是對各類數據的操作,把一堆不太好懂的數據展現成用戶容易看懂的數據,自動處理各類數據的運算等,所以數據的持久化是十分重要的一件事情。
1、分析需求和理解業務模型(或領域建模),並選定關鍵Use case。
軟體的需求,可以分為從用戶視角和開發人員視角來看,從用戶的角度看,又可以分為功能性和非功能性需求,我們必須從不同的視角和級別去全面的認識需求並分析需求,理解業務模型。實踐表明,常常被我們忽視的非功能性需求常常會導致整個項目失敗。
理解業務需求最好的方式莫過於進行領域建模,領域建模與需求分析往往是交替穿叉進行的,領域建模主要有以下三個方面的作用:
◆探索復雜問題,弄清領域知識。Martin Fowler曾經說過,他採用面向對象方法最大的好處就是它有助於解決更為復雜的問題。領域建模本身作為輔助思維的工具,幫助我們將注意力始終保持在最為重要的業務概念及其關繫上,使我們能夠不斷深入地,系統的對需求進行分析和認識。領域建模往往是一個從模糊到清晰,從零散到系統的過程。
◆決定功能范圍,影響可擴展性。任何模型都是對現實世界某種程序的抽象,這種抽象就會忽略某一些東西,例如忽略對象的屬性和對象間的關系,而這些忽略往往都是帶有一定的目的性的,這種忽略就決定了功能的范圍。模型揭示了各種功能背後的結構,如果說定義功能相當於「拍照片」的話,那麼領域建模就相當於「做透視」,更加關注問題領域的內在結構,相當於對問題領域進行了一定的抽象,良好的領域模型不僅能很好的支持現有的功能,而且還可以在一定程度上支持未來可能出現的新需求,體現良好的可擴展性。
◆提供交流基礎,促進有效溝通。領域建模通常會使用UML圖作為呈現的方式,這樣為我們的溝通提供了方便。當然,有時候文字在描述某些特定領域的問題時可能更適合,可以靈活運用。
在我們公司的實際軟體開發流程中,往往領域建模缺少這一環節,這可能是在以後的工作中需要進一步提高之處。
雖然我們總是期望架構設計師能全面掌握需求,但由於時間和精力的限制,擺在我們面前的現實就是架構設計師沒有時間對所有需求進行深入分析,所以我們的策略就是「把好鋼用在刀刃上」,即把大部分時間和精力花在對決定架構最重要的關鍵需求上。在選擇關鍵需求時要注意:高優先順序的需求往往是從用戶的角度來看的,可能並不是真正的關鍵需求。在《RUP實踐者指南》一書中向我們講述了如何確定關鍵功能需求?A.作為應用程序的核心或實現了系統的主要介面的功能,B.必須被實現的功能,即如果這些功能不被實現,則開發出來的軟體就失去了價值,C.覆蓋了系統架構的一些方面,但沒有被其他重要的Use case覆蓋到的功能。
2、分別從各個視角來考慮軟體架構的方方面面。
軟體的架構設計必須考慮到各方面,根據前期工作確立的領域模型,關鍵需求,系統約束等進行設計,必須從系統用戶,開發人員,系統管理員,部署管理員,數據管理員等人員的角度去分析並解決問題。比如說,如果我們的運行架構採用Cluster方式時,就必須小心Cache和Session等的使用;如果我們的業務邏輯要求我們要操作多個資料庫時,就要考慮採用支持二階段事務提交的方式。
只有將這些方方面面的問題都考慮到了,這樣的架構設計才是完整的。至於每一個視圖中,我們應該設計到什麼細節這一問題,實際上與整個項目的過程定義有關。例如,如果我們有專門安排資料庫概要設計的活動,那我們在架構設計的過程中就可以只需要關注更高層次的資料庫特性及資料庫之間的關系,而每一張表的數據字典可以在後續的相關活動中進行設計,但如果沒有這樣的活動,那我們就要細化到每一張表的每一個欄位,以及表之間的關系。
3、解決技術面的重點問題和難題
在軟體架構設計的過程中,我們往往會需要攻克一些技術面的重點問題和難題,這完全是一項極其需要扎實的理論知識和豐富的實踐經驗支撐的工作。例如,我們如何提高整個系統的性能?如何能很好的導出極其復雜的「中國式報表」(一般比西方國家產出的報表要復雜很多,而且很多開源的BI類的框架並不能完全解決問題)?
當遇到確實是很困難的問題,可以去網路一下或Google一下,也可以去請教公司的資深技術人員或專家,或者召開小范圍的技術專題討論會議,採用腦力激盪的方法試著找找答案,這樣才能提高工作的效率。
4、召開架構設計評審會議進行同行評審。
架構設計評審是極其重要的一環,我曾將其形容為「七種武器」中的離別鉤,就是因為在會議上,同行們可能會提很多問題或意見,而且很多意見很尖銳,所以一定要虛心接受,並做好記錄,正所謂「良葯苦口利於病,忠言逆耳利於行」。
在評審會議之前,我們要完成很多准備工作,最好是能准備一份簡明扼要的電子簡報,把最重要的問題列出來,這樣在進行評審會議時,就不會漫無目的,在會議前就將這些資料發給與會人員,請他們抽空先了解一下,在會議進行時,要學會控制會議的進度,提高會議的效率。
5、針對關鍵Use case在設計的架構上實現功能來驗證架構。
對於架構設計的驗證也是一項十分重要的工作,其驗證技術有很多種,在我們公司通常會採用Sample的形式,即XP中所說的迭代0,RUP中所說的切片。這樣做的好處是既可以從實際的產品角度出發來有效的驗證架構是否滿足要求,又可以比拋棄型原型驗證技術節省成本。
這個Sample絕不是我們在解決架構設計中的問題時拿來做實驗的一些代碼的拼湊,而是完整的實現某一關鍵Use case的符合架構設計和一系列規范的可交付的代碼及相關文檔。同時,這個Sample可以作為你在給大家講解或培訓架構時的教材,也可以作為開發人員使用此架構進行開發的藍本,甚至是只需要復制粘貼,加上簡單的修改即可。
6、交付給客戶Review。
這一環節,在很多公司可能並不存在,因為他們的軟體架構並不一定需要客戶Review,但像我們這種做服務的公司,最重要的就是客尊,落實到軟體架構設計這一活動,就是讓客戶理解並接受你的架構設計方案,同時,客戶也會起到幫你驗證架構的作用。通常,我們的架構得到客戶的認可後,便可進入大規模的開發。
在交付給客戶Review時,通常可能會以會議的形式進行Review,所以我們可以參照評審會議時好的做法來召開會議,在這里就不再冗述。
軟體架構設計的常見誤區及解決辦法
1、架構設計的常常會「高來高去」。所謂高來高去,實際上就是我們的架構設計僅停留在模型階段,但也絕不是產生第一支樣常式式。
2、架構設計時常常會在某些方面過度設計(Over engineering)。為了一些根本不會發生的變化而進行一系列復雜的設計,這樣的設計就叫過度設計,往往會帶來資源的浪費並且會增加開發的工作量或難度。雖然我們必須考慮到系統的擴展性,可維護性等,但切忌過度設計。有時候或許你並不能判斷出哪些設計是過度設計,此時你可以請教你的PM,讓他站在整個項目的高度來幫你決策一下。
3、架構(Architecture)不是框架(Framework),也不是簡單的將幾種框架或技術的組合,框架本身也是有架構的。框架一般是針對於某一方面或領域的重用性和可擴展性非常好的半成品,我們可以用一句較為經典的話來總結:框架是軟體,架構不是軟體,框架是一種特殊的軟體。我們在工作中通過將許多方面的可重用的工具類,公共類,基礎類等抽象出來,即可形成一些可重用的框架。
4、架構設計絕不是新技術展示平台,合適的技術才是對於項目有利的技術,必須考慮到開發人員的能力和維護人員的能力。作為一名架構設計師應該更多的考慮如何平衡業務需求,織織運作(主要指團隊中的協作)和技術三者的關系,而不僅僅是去關注那些技術細節。
5、架構設計的成功與否決定著系統品質的好壞,因為架構設計不好而導致交付的系統Bug過多,無法滿足客戶非功能性需求等問題,從而導致項目取消的案例時有發生。架構設計不是架構設計師一個人的事情,也不是幾天就能完成的一項工作,必須是架構設計師付出大量辛勤勞動後的成果,其成敗往往與組織、主管、項目經理的支持有著密切的關系。
關於架構設計的一點通用技巧
1、分層(Layer)規則。這里的層是指邏輯上的層次(Layer),並非指物理上的層次(Tier)。目前的絕大多數的企業級應用系統中都分為三層,即表現層,領域層和數據層。在對各層次進行劃分時,主要可以從以下幾個方面來考慮:A、每一層是一個相對獨立的部分,可以作為一個整體,無需對其它層了解;B、將層次間的依賴性降到最低,即降低耦合;C、可以從某種程度上替換掉某一層,而對其它層不會產生過多的影響;D,層次並不能封閉所有的東西,假如用戶界面上增加了一個欄位,那麼領域層就要增加一個數據域,數據層就要增加一個相應的欄位。同時,過多的分層可能會對性能造成一定的影響。
2、包(package)之間不要產生循環依賴。通常包的劃分會先按不同的邏輯層來劃分,在層的包下面再按功能來劃分。避免包間的循環依賴是一個比較通用的規則,這樣的規則一定有其存在的價值和道理,之所以這樣主要是出於以下原因:A、循環依賴會使分層失去意義;B、循環依賴會帶來許多潛在的風險,如可能會產生嵌套事務(nested transaction,JavaEE標准中並不支持這種事務)的現象,我就曾遇到過這樣的問題,在一個項目中,事務放在業務邏輯層統一控制,但由於開發人員忽視了架構中這樣的原則,在持久層調用了展現層的公用類,形成了迴圈的現象,導致了嵌套事務的發生。
3、設計模式的應用。在很多人的觀念里,提供設計模式就等同於GOF的設計模式,其實設計模式是個廣泛的概念,比如需求模式、領域模式、反模式等都屬於設計模式。模式其實是一門工具,是人們對於過去解決某一類問題的經驗總結,所以我們可以在設計活動中應用各種設計模式,但是在應用這些模式之前一定要先分析清楚問題,否則就可能出現「牛頭不對馬嘴」的現象。
成功的項目總有相似之處,失敗的項目卻各有各的失敗之處。好的軟體架構設計必定是成功項目的相似之處,我們有什麼理由不把軟體架構設計做好了?
⑧ 如何實現抽象類
抽象類是含有純虛函數的類。
純虛函數是指被標明為不具體實現的虛擬成員函數。它用於這樣的情況:定義一個基類時,會遇到無法定義基類中虛函數的具體實現,其實現依賴於不同的派生類。
定義純虛函數的一般格式為:virtual 返回類型 函數名(參數表)=0;
含有純虛函數的基類是不能用來定義對象的。純虛函數沒有實現部分,不能產生對象。定義純虛函數時,不能定義虛函數的實現部分。即使是函數體為空也不可以,函數體為空就可以執行,只是什麼也不做就返回。而純虛函數不能調用。
在派生類中必須有重新定義的純虛函數的函數體,這樣的派生類才能用來定義對象
抽象類的純虛函數表達了一種「規約」和「協議」的含義,只有介面的約定,沒有實現的約束,這樣就使介面與實現完成解耦,便於軟體統一介面的同時保持實現的靈活性,這也正是組件編程的基本思想。
⑨ 什麼是抽象
抽象
抽象是哲學的根本特點, 抽象不能脫離具體而獨自存在。
我們所看到的大自然景象就是大自然的實物在我們腦海中的抽象。抽象就是我們對某類事物共性的描述。
具體來說,抽象是指:
1、將復雜物體的一個或幾個特性抽出去,而只注意其他特性的行動或過程(如頭腦只思考樹本身的形狀或只考慮樹葉的顏色,不受它們的大小和形狀的限制)。
2、將幾個有區別的物體的共同性質或特性,形象地抽取出來或孤立地進行考慮的行動或過程。
抽象是認識復雜現象過程中使用的思維工具,即抽出事物本質的共同的特性而暫不考慮它的細節,不考慮其他因素。
軟體工程過程中的每一步部可以看作是對軟體解決方法的抽象層次的一次細化。在進行軟體設計時,抽象與逐步求精、模塊化密切相關,幫助我們定義軟體結構中模塊的實體,由抽象到具體地分析和構造出軟體的層次結構,提高軟體的可理解性。
⑩ 面向對象軟體開發如何實現抽象
假如你的基類不需要實例化,是根據你的子類去生成的對象,就要用抽象去解決