初學C#,什么是面向對象?為什么要使用面向對象編程?(一)
2021-08-23
總結:
對于 C# 初學者,什么是面向對象?為什么要使用面向對象編程?面向對象分析屬于軟件開發(fā)過程的問題定義階段,其目標是清晰準確地定義問題域。傳統(tǒng)的系統(tǒng)分析會產生一套面向過程的文檔,這些文檔定義了目標系統(tǒng)的功能;面向對象分析產生了描述系統(tǒng)功能和問題域基本特征的綜合文檔。原則 面向對象分析的主要原則如下。 1.從許多事物中抽象地摒棄個別的、非本質的特征,提取共同的本質特征。這叫做提取
對于 C# 初學者,什么是面向對象?為什么要使用面向對象編程?面向對象分析屬于軟件開發(fā)過程的問題定義階段,其目標是清晰準確地定義問題域。傳統(tǒng)的系統(tǒng)分析會產生一套面向過程的文檔,這些文檔定義了目標系統(tǒng)的功能;面向對象分析產生了描述系統(tǒng)功能和問題域基本特征的綜合文檔。
原則
面向對象分析的主要原則如下。
1.摘要
從許多事物中摒棄個別的、非本質的特征,提取共同的本質特征,稱為抽象。 抽象是形成概念的必要手段。
抽象原理有兩層意思:第一,問題域中的事物雖然復雜,但分析者不需要了解和描述它們的一切,只需要分析和研究與系統(tǒng)目標相關的事物,他們的本質。 特點。其次,通過丟棄個體事物細節(jié)上的差異,提取它們的共同特征,我們可以得到事物的一些抽象概念。 .
抽象是面向對象方法中使用最廣泛的原則。抽象原則包括兩個方面:流程抽象和數(shù)據(jù)抽象。流程抽象意味著完成一個功能的任何操作序列都可以被其用戶視為單個實體,盡管實際上它可能由一系列較低級別的操作完成。數(shù)據(jù)抽象是指根據(jù)對數(shù)據(jù)施加的操作來定義數(shù)據(jù)類型面向對象的編程語言,而對數(shù)據(jù)值的限制只能通過這些操作進行修改和觀察。數(shù)據(jù)抽象是面向對象分析的核心原則。它強調將數(shù)據(jù)(屬性)和操作(服務)集成為一個不可分割的系統(tǒng)單元(即對象)。對象的外部只需要知道它做了什么,而不是它是怎么做的。
2.封裝
封裝就是將一個對象的屬性和服務組合成一個不可分割的系統(tǒng)單元,盡可能隱藏對象的內部細節(jié)。
3.繼承
特殊類的對象所擁有的通用類的所有屬性和服務,稱為特殊類對通用類的繼承。
面向對象分析采用繼承的原則,即在一個通用類和一個特殊類形成的每個通用-特殊結構中,通用類和所有特殊類的對象實例都具有屬性和特征。一次性共享服務。在通用類中明確定義。在特殊類中,通用類中定義的事物不是重復定義的,而是在語義上,特殊類自動隱式地具有其通用類(以及所有更高級別的通用類)和服務中定義的所有屬性。繼承原則的優(yōu)點是使系統(tǒng)模型更加簡潔明了。
4.分類
是將具有相同屬性和服務的對象歸為一類,并以此類作為對這些對象的抽象描述。分類原則實際上是抽象原則應用于對象描述的一種表現(xiàn)形式。
5.聚合
聚合的原理是把一個復雜的事物看成是幾個簡單事物的集合,從而簡化了對復雜事物的描述。
6.聯(lián)系方式
相關性是人類在思考問題時經(jīng)常使用的一種思維方式:將一件事與另一件事聯(lián)系起來。人們之所以能夠聯(lián)想,是因為事物之間存在某種聯(lián)系。
7.簡訊
這個原則要求對象只能通過消息進行通信,不允許在對象外直接訪問對象的內部屬性。消息通信是由封裝原理引起的。在OOA中,需要一個消息連接來表示對象之間的動態(tài)關系。
8.粒度控制
一般來說,面對一個復雜的問題域,一個人不可能同時看大局和洞察力。因此,你需要控制你的視野:在考慮全局時,注意它的主要組成部分,暫時不檢查每個部分的具體細節(jié);在考慮某一部分的細節(jié)時,暫時將其余部分擱置一旁。這就是粒度控制的原理。
9.行為分析
現(xiàn)實世界中事物的行為是復雜的。由大量事物組成的問題域中的各種行為往往是相互依存和交織在一起的。
階段
面向對象的分析過程可以分為兩個階段:問題域分析和應用分析。
問題域分析是軟件開發(fā)的基本部分。目的是讓開發(fā)者了解問題域的結構,建立通用的系統(tǒng)實現(xiàn)環(huán)境。問題領域分析給出了一組抽象概念(代表問題領域知識的高層次,往往超出了當前應用的范圍)作為制定特定系統(tǒng)需求的參考。問題域分析實際上是一個學習過程。在這個階段,軟件開發(fā)者應該盡可能多地了解當前系統(tǒng)中與應用相關的知識,自由思考,放寬考慮范圍,盡可能識別與應用相關的概念。 問題域分析的邊界可能是模糊的。憑借對問題領域的廣泛了解,當涉及到具體的應用時,可以更快地進入狀態(tài)面向對象的編程語言,掌握應用的核心知識。而且,當用戶對目標系統(tǒng)的需求發(fā)生變化時,廣泛的分析可以幫助我們預測目標系統(tǒng)會發(fā)生哪些變化。通常進行小組分析,小組成員可以包括領域專家和分析師。在分析過程中,系統(tǒng)的基本概念(對象、類、方法、關系等)。 ) 應該承認,應該承認問題域的特征,并將這些概念整合到問題域的模型中。問題域的模型必須包含概念之間的關系以及每個概念的所有信息。識別出的相關概念應根據(jù)信息內容有機地整合到問題域的綜合視圖中。
應用分析是基于在問題域分析過程中建立的問題域模型。應用分析時,將問題域模型應用到當前的特定應用中。 一、利用收集到的用戶信息在問題區(qū)域之間進行選擇,以用戶需求為約束,減少問題區(qū)域的信息量。因此,問題域分析的視野大小直接影響應用分析保留的信息量。一般來說,問題域分析階段生成的模型不需要用編程語言表達,而應用分析階段生成的影響條件需要用某種編程語言表達。模型識別的需求可以是一個應用程序,也可以是多個應用程序。通常我們關注兩個方面,即應用程序視圖和類視圖。在類視圖中,必須詳細說明每個類的屬性和操作,必須顯示類之間的交互。
目標
Coad 和 Coad 認為面向對象分析應該主要考慮與特定應用程序相關的對象,以及對象之間的結構和交互關系。在面向對象分析中,需要建立分析模型來描述系統(tǒng)的功能。
面向對象分析需要完成以下兩個任務:
——正式說明所面臨的應用問題,最終成為軟件系統(tǒng)基本結構的對象,以及系統(tǒng)必須遵守的、由應用環(huán)境決定的規(guī)則和約束。
-明確說明構成系統(tǒng)的對象如何協(xié)同工作以完成指定的功能。
通過面向對象分析建立的系統(tǒng)模型是以概念為中心的,所以稱為概念模型。概念模型由一組相關的類組成。面向對象分析可以通過自上而下的逐層分解構建系統(tǒng)模型,也可以從定義的類自下而上構建新的類。概念模型的構建和審核包括以下五個層次:
——類和對象層
——屬性層
——服務層
——結構層
——專題層
這五個層次不是構成軟件系統(tǒng)的層次,而是分析過程中的層次。也可以說這個問題有不同的方面。每個級別的工作都會向系統(tǒng)規(guī)范添加一個組件。當所有五個層次的工作都完成時,面向對象分析的任務就完成了。
在實際操作中,面向對象分析的目標是獲取問題域的功能模型、對象模型和動態(tài)模型,并用相應的UML圖來表示。
步驟
面向對象分析通常遵循以下步驟:
(1)識別對象和類??梢詮膽妙I域開始,逐步確定構成整個應用的基本類和對象。這一步需要分析目標系統(tǒng)在領域中的職責,調查系統(tǒng)環(huán)境,并確定有用的類和對象。
(2)Logo結構。有兩種典型的結構,分別是通用-特殊結構和整體-部分結構。通用-特殊結構是指通用類是基類,特殊類是派生類。對于比如car是cars的基類是通用-特殊結構,整體part結構代表聚合,屬于不同類的成員聚合成一個新的類,比如輪子、車身、汽車底盤都是part一輛車,這些不同功能的部件聚合成一輛車的整體。
(3) 標識屬性。對象保存的信息稱為它的屬性。類的屬性描述了狀態(tài)信息。在類的實例中,屬性的值代表了該對象的狀態(tài)值對象。需要找出目標系統(tǒng)中的每個對象。對象所需要的屬性,并將屬性排列在適當?shù)奈恢?,找出實例連接,最后檢查。每個屬性的名稱和描述應該是給定,并對屬性進行特殊限制(如只讀、屬性值限制在一定范圍內等)。
(4)身份認證服務。對象收到消息后進行的操作稱為對象提供的服務。它描述了系統(tǒng)需要執(zhí)行的處理和功能。定義服務的目的是定義對象的行為和對象之間的通信關系,具體步驟包括:
——標識對象的狀態(tài)
- 確定必要的服務
- 識別消息連接
——描述服務
服務可以用類似于流程圖的圖表來表示。
(5)識別主體。為了更好地理解包含大量類和對象的概念模型,需要確定主體,即劃分模型,給出模型的整體框架,并劃分層次。您可以按照以下步驟確定主題。
——確定主題
——改進和完善主題
——將主題添加到分析模型中
標題是一個應用相關的概念,不是隨便畫的。主題級工作有助于理解分析結果。
優(yōu)勢
面向對象分析的要點是:
(一)加強對問題域和系統(tǒng)職責的理解;
(2)改善與分析相關的各個人員之間的溝通;
(3)對需求變化的適應能力很強;
(4)支持軟件復用;
(5)整個軟件生命周期的一致性;
(6)實用性;
(7)促進用戶參與。
面向對象更符合人類思維,更適合對客觀問題進行建模
把所有的編程當作一個對象,用正常的方式思考。
如撲克牌、分體牌、玩家牌、牌等
世界上的一切都是對象。說白了,還是用面向對象比較實用。如果你想修改它,它會更容易,更靈活。示例:您有 5 個頁面使用相同的查詢功能。在這5頁上寫一次代碼方便嗎?當然也可以復制粘貼,但是如果要修改會比較麻煩,那么可以使用重寫的方法創(chuàng)建A類,寫自己想寫的,需要的時候再調用。如果你修改它,你只需要修改它。方便嗎?
什么是 C# 面向對象
? 0? 0C# 面向對象? 0? 0 面向對象思維:面向過程的編程往往會導致所謂的單一應用,即所有的功能都包含在幾個模塊中(通常包含在一個代碼模塊中)。在使用oop(面向對象)技術時,經(jīng)常會用到很多代碼模塊。每個模塊提供特定的功能,每個模塊之間相互隔離,甚至完全獨立于其他模塊。這種模塊化的編程方法提供了極大的多樣性,大大增加了代碼重用的機會。 ? 0? 0 在傳統(tǒng)的應用程序中,執(zhí)行過程通常是簡單和線性的。應用程序加載到內存中,從A點執(zhí)行到B點,然后從內存中卸載。在此過程中可能會使用各種其他實體,例如媒體文件的存儲或圖形卡功能,但處理的主體始終位于一個地方。有了oop,事情就不那么簡單了。雖然可以得到同樣的效果,但是實現(xiàn)的方式卻完全不同。 Oop技術基于數(shù)據(jù)結構、意義、數(shù)據(jù)和數(shù)據(jù)交互。這通常意味著必須在項目的設計階段投入更多的精力,但項目的可擴展性相對較高。一旦就某類數(shù)據(jù)的表達達成一致,該表達將適用于未來版本的應用程序,甚至是全新的應用程序。這將大大減少開發(fā)時間。 ? 0? 0 (一)類:?0?0 類描述了一組相似對象的共同特征。類和結構實際上是創(chuàng)建對象和提供處理和訪問數(shù)據(jù)的對象的模板。?0?0 類定義了以下元素:?0?01.定義了該類的對象操作的數(shù)據(jù)結構(屬性的名稱和類型);?0?02.這些對象要執(zhí)行的操作,特別是哪些操作,以及如何執(zhí)行call 類的對象執(zhí)行這些操作,以及執(zhí)行這些操作的對象的“后臺操作”。?0?0 注意:類中變量的聲明必須指明該變量是否為?0?int i;//聲明一個int變量并且這個變量是共享的,也就是說只要對象被啟用,客戶端就可以在客戶端使用它。如果定義為私有產品,那么即使對象被啟用,不能在客戶端使用 ?0?0 類定義:? 0? 0 (小程序開發(fā)2@什么是對象? 0? 0 對象是 oop 應用程序的組件。這個組件封裝了應用程序的一部分,可以是一個進程、一些數(shù)據(jù)或者一些更抽象的實體。 ?0?0 C#中的對象是由類型創(chuàng)建的,就像前面的變量一樣,對象的類型在oop中有一個特殊的名字:可以使用類的定義來實例化對象,即創(chuàng)建對象的實例班級。
C#面向對象的特點是什么?
1.封裝:首先,我們可以把世界上的一切都當成一個對象。這里我們以人為例,那么人就是一個對象。封裝是什么意思?可以理解,封裝就是人要完成一件事。他需要的所有工具都在他身邊,他需要的技能在他的腦海中。這可以在沒有其他人幫助的情況下完成。這樣做的好處是,如果我要命令這個人完成一件事情,我不需要知道它是如何完成的,我也不需要協(xié)助他完成它。我只知道結果。如果它完成了,它就會完成。至于它,我們不需要知道先做什么,后做什么。這將幫助他盡最大努力完成這些事情。書面語言的解釋是:每個對象都包含其操作所需的所有信息,因此該對象不必依賴其他對象來完成自己的操作。 二、繼承:以人為例。我們知道每個人都有一些共同的特征,并且必須做同樣的事情。例如:每個人都有一個頭,兩只胳膊和兩只腳。這是一個共同的特點,對吧? 如果你在生活中必須吃喝,所有這些都是一樣的。如果我們現(xiàn)在要聲明很多個人,每個人都會有這些特點,那么我們需要寫很多重復的代碼嗎?因此,我們首先創(chuàng)建一個人的父類別。這個父類不代表特定的人,它只是一個具有一個人所有共同特征的虛擬人。下次我們要實例化一個特定的人,我們只需要繼承上面的“虛擬人”,他就會擁有一個人的所有共同特征。無需編寫通過繼承重復的代碼。
其實,繼承的目的不僅僅是為了節(jié)省代碼,還有實現(xiàn)背后的多態(tài)。普通初學者只需要了解繼承就可以少寫很多代碼,在項目中繼續(xù)學習。書面解釋如下: 對象繼承代表一種“is-a”關系。如果兩個對象A和B都可以描述為“B是A”,那么就意味著B可以繼承A。需要注意的是,如果A繼承了B,那么A不僅擁有B除私有特性之外的所有特性,但是A也可以有自己獨特的特點。在上面這個人的例子中,一個人繼承了一個“虛擬人”,那么他就有了一個頭、兩條胳膊和兩只腳。他需要吃吃喝喝,或許還能編程。所以編程是他的特點,不是每個人都能編程。三:什么是多態(tài):多態(tài)之前必須有繼承。需要理解的是,只有多個類同時繼承同一個類。有一種說法叫多態(tài)。說到人,舉個例子。我們之前說過,人們必須“吃”同樣的東西。 “吃”是課堂表現(xiàn)的方式。因為一切都是人來做的,所以我們在“虛擬人”里寫了這個方法之后,吃的方式就不一樣了。有筷子和叉子,有的要飯,有的要面。所以如果我們要描述不同人的進食過程,就必須把這個過程放到一個具體的子類中。同樣,子類可以用不同的方式實現(xiàn)。這意味著存在多態(tài)性。有助于程序的靈活性。需要注意的是,如果在子類中重寫了父類的方法(多態(tài)),則不會再次調用父類中的方法。
c#面向對象
其實只要理解了繼承、多態(tài)、封裝,也就理解了面向對象。他會問你關于面向對象的問題。其實你只需要跟他解釋一下繼承多態(tài)封裝的含義就可以了。