UML講義2-面向?qū)ο蠹夹g(shù).ppt_第1頁
UML講義2-面向?qū)ο蠹夹g(shù).ppt_第2頁
UML講義2-面向?qū)ο蠹夹g(shù).ppt_第3頁
UML講義2-面向?qū)ο蠹夹g(shù).ppt_第4頁
UML講義2-面向?qū)ο蠹夹g(shù).ppt_第5頁
已閱讀5頁,還剩91頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、第2章 面向?qū)ο蠹夹g(shù),面向?qū)ο?Object Oriented,OO),2.1 面向?qū)ο蟪绦蛟O(shè)計語言,C+ Java C# Delphi(Pascal) VB.NET(VB),Delphi 和C#之父:Anders Hejlsberg,語言大師:安德爾斯,Anders Hejlsberg與Delphi 畢業(yè)于丹麥科技大學(xué),曾是Borland公司的創(chuàng)始人之一。在Borland期間,Anders Hejlsberg開發(fā)了著名的Turbo Pascal語言,并在其基礎(chǔ)上將Turbo Pascal變成一種面向?qū)ο蟆⒄嬲龘碛锌梢暬幊汰h(huán)境和卓越的數(shù)據(jù)庫庫訪問特性的應(yīng)用程序開發(fā)語言Delphi?,F(xiàn)在Del

2、phi依然是Borland公司的拳頭和旗幟性產(chǎn)品,并成為了廣大開發(fā)人員最喜歡的RAD(快速編程語言)應(yīng)用開發(fā)工具之一。,真正的程序員用C,聰明的程序員用Delphi。,Anders Hejlsberg與Visual Basic 20世紀(jì)90年代Anders領(lǐng)導(dǎo)開發(fā)的Delphi取得巨大成功,這也對微軟的Visual Basic構(gòu)成了極大的威脅,因此比爾蓋茨再次啟用微軟發(fā)家法寶之一的“挖人”招術(shù):用豐厚的薪水、股票認(rèn)購權(quán)和巨額的加盟獎金將Anders挖到了微軟。1996年Anders來到微軟。,Delphi號稱Visual Basic 殺手,Anders Hejlsberg與Visual J+(

3、Java) 1996年Anders來到微軟后,直接主抓Visual J+的研發(fā)工作。后來由于在Java開發(fā)工具授權(quán)問題上和Sun公司的糾紛,微軟停止了Visual J+的后續(xù)開發(fā)。,Java語言的優(yōu)勢是跨平臺性。,Anders Hejlsberg與C# 微軟在Visual J+項目中處于極為被動的局面,就在人們認(rèn)為微軟不可能再有改觀的時候,微軟另辟蹊徑,在anders的主持下,推出了.NET計劃和C#語言。,code once ,run anywhere。,2010年3月編程語言排行榜,2009年4月20日,視頻:甲骨文74億美元收購Sun,歐盟無條件批準(zhǔn)Oracle公司對Sun收購案的消息,

4、實際上宣告了一個偉大公司的離去。,Java之父James Gosling在自己的博客貼出了一幅畫,應(yīng)該代表了許多技術(shù)人的心情。,悼念一個偉大的公司,Java的輝煌還能延續(xù)多久,鏈接:Java之父離開Oracle,Gosling博客全文如下: 是的,那些傳言都是真的:我已經(jīng)在一周前(4月2日)從Oracle辭職。我要對周三參加圣彼得堡TechDays希望聽我演講的所有人道歉。沒能出席,我感到非常難受。至于離開的原因,我很難回答:能說的任何準(zhǔn)確而且真實的話都弊大于利。最困難的地方,是無法再與這些年來我有幸一起工作的所有人共事了。除了在找工作之前休息一段時間之外,我不知道下一步會做些什么。,小結(jié):

5、C+是目前功能最為強大的語言。 Visual Basic是最容易使用的語言。 Delphi兼具C+功能強大和VB易于使用的特點,最跨平臺性不于java,java和.NET打亂了Delphi的發(fā)展計劃。 Java的突出特點是跨平臺性,但功能不如C+。 C#是最年青、面向?qū)ο笞顝氐椎恼Z言,結(jié)合了C+、java、Delphi等各種語言的優(yōu)點。,點擊打開全文,2.2 面向?qū)ο缶幊?以C# 語言為例,注意:UML是獨立于程序語言的。,“如果你有一只貓,你想把它賣給一個編程者,那么,與其強調(diào)其可愛與溫順,或如何能捉老鼠,不如直接告訴買家,這只貓是面向?qū)ο蟮摹!?關(guān)于貓與面向?qū)ο蟮慕?jīng)典名言非常形象的揭示了面

6、向?qū)ο笤贗T界乃至整個學(xué)術(shù)界的地位。,一、C#概述 1、C#的產(chǎn)生 2000年6月,Microsoft .NET開發(fā)平臺的發(fā)布,標(biāo)志著近10年來Microsoft公司開發(fā)平臺一個重大的轉(zhuǎn)變。,C#是一種安全的、穩(wěn)定的、簡單的,由C和C+衍生出來的面向?qū)ο蟮木幊陶Z言。它在繼承C和C+強大功能的同時去掉了一些它們的復(fù)雜特性(例如沒有宏和模版,不允許多重繼承)。C#綜合了VB簡單的可視化操作和C+的高運行效率,以其強大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言。,比爾.蓋茨者,美華盛頓州人也,初,就讀于哈佛大學(xué),茨平素嬉游無度,不務(wù)于正業(yè),每逢試,

7、動輒為C,雖偶有B,未曾見有A者,故老師同學(xué)皆譏之。茨乃心中不憤,遂決心使C乃為名動天下之字母,乃輟學(xué)。后結(jié)識一人,共創(chuàng)今日之C語言,并立公司曰微軟。且出Visual Studio系列,中有VB,VC,然未有VA者,蓋避其學(xué)業(yè)之諱也。世人皆用之,然其內(nèi)幕稀知矣。 時易事移,C已顯老邁不可之態(tài),乃創(chuàng)其更新版本,欲名C+。然同創(chuàng)業(yè)者,皆曰C+何若C+也,似應(yīng)名之為此。茨迫于眾意,勉強可之。故今日之C+,本應(yīng)名C+者也,此亦緣何由C徑至C+而逾過C+之因也。,C#的故事,時至新世紀(jì),茨欲將C+再升一級,將名之曰C+。時有漢人李開復(fù)者,乃獻(xiàn)言。復(fù),漢之臺灣人也,就業(yè)于美之名??反髮W(xué),時任微軟中國研究

8、院之主任。復(fù)曰:“竊為明公不可也。”茨曰:“何哉?”復(fù)乃答曰:“C+太顯累贅,吾有一字,明公鑒之?!贝脑唬骸昂巫??”復(fù)曰:“莫若C卅,或C豐最妙。”茨頗不解:“卿何意哉?”復(fù)乃詳言曰:“夫卅者,三+橫排也;夫豐者,三+豎排也。言簡而意賅,豈不妙哉?”茨大悅,乃于董事會上宣布之。然一派言C卅優(yōu),蓋卅橫排三+,恰C+之意也。另一派言C豐乃妙,蓋豎排三+,乃喻微軟之蒸蒸日上也。,二派糾辨甚兇。茨無奈,復(fù)就詢于開復(fù),乃許之曰:“卿若解此難,吾可以副總裁之位許卿。”復(fù)心狂喜,乃表曰:“明公勿急。前有從C徑升C+,今何不從C+徑升C+,而逾C+乎?吾中華上國,有一井字,乃四+所并而成,何不名下一版本為c#

9、乎?”茨然其言,乃如約升之為微軟之副總裁。,Visual Studio .NET 2002 (7.0) Visual Studio .NET 2003 (7.1) Visual Studio 2005(VS2005) (8.0) Visual Studio 2008(VS2008) (9.0),2、C#編程和編譯環(huán)境,windows 應(yīng)用程序 ASP.NET網(wǎng)站 控制臺應(yīng)用程序,VS2005,二、C#簡明語法 1、數(shù)據(jù)類型 整型: int 浮點型:float、double 字符型:char 字符串:string 布爾型:bool,class Uninitial public static vo

10、id Main() int num; num=10; Console.WriteLine(num); ,2、運算符,3、控制臺程序的輸入與輸出 (1)輸出:Console.WriteLine() 用于向控制臺輸出一行信息 (2)輸入: Console.ReadLine() 用于從控制臺中一次讀取一行字符串,直到遇到Enter鍵才返回讀取的字符串。,class Program static void Main(string args) string x; string y; int z; Console.Write(請輸入第一個數(shù):); x = Console.ReadLine(); Conso

11、le.Write(請輸入第二個數(shù):); y = Console.ReadLine(); z = int.Parse(x) + int.Parse(y); Console.WriteLine(兩個數(shù)的和為:0, z); ,4、程序控制語句 (1)if語句,形式2: if (表達(dá)式) 語句1 else 語句2,形式1: If (表達(dá)式) 語句;,class Add public static void Main() int a,b; string c; Console.Write(請輸入一個數(shù)值:); c= Console.ReadLine(); a=int.Parse(c); b=20; if(

12、a10) Console.WriteLine(“大于”); ,class Compare public static void Main() int a, b, x; Console.Write(請輸入一個數(shù)值: ); a=int.Parse(Console.ReadLine(); Console.Write(請再輸入一個數(shù)值: ); b=int.Parse(Console.ReadLine(); if (ab) x=a; else x=b; Console.WriteLine(the max is: 0 , x); ,(2)while語句 while (條件表達(dá)式) 語句,【例】使用whil

13、e語句,計算1+2+3+.+100。 class Sum1 public static void Main() int sum=0, i=1; while (i=100) sum=sum+i; i=i+1; Console.WriteLine(sum=0, sum); ,三、C#面向?qū)ο蟪绦蜓菔?目標(biāo):面向?qū)ο蟪绦虻奶攸c,引出相關(guān)的概念,面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實現(xiàn),使用的時候一個一個依次調(diào)用就可以了。 面向?qū)ο笫前褬?gòu)成問題事務(wù)分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。 來源:互聯(lián)網(wǎng),面向?qū)?/p>

14、象與面向過程的區(qū)別,面向過程的程序員認(rèn)為計算機世界是由一系列功能構(gòu)成,功能的核心是算法,圍繞算法有許多數(shù)據(jù),數(shù)據(jù)從簡單到復(fù)雜,統(tǒng)稱為數(shù)據(jù)結(jié)構(gòu),程序就是功能之間通過數(shù)據(jù)銜接。面向?qū)ο蟮某绦騿T認(rèn)為計算機世界是由許許多多的對象組成,每個對象都有屬于自己的各種動作,程序就是對象之間通過動作進行交互。,簡單地面向?qū)ο蟪绦蜓菔荆╟ode/exame) 情景假設(shè):1名學(xué)生的補考: 1、老師出卷 2、老師安排考試 (1)向教務(wù)處向教室和時間 (2)要求學(xué)生開始答題 3、老師改卷,class teacher public string name; public teacher(string x) name =

15、x; public void ChuJuan() /出卷 Console.WriteLine(name + 老師出卷); ,public void AnPaiKaoShi(JiaoWuChu j,student s) j.AnPaiShiJianDiDian(UML); s.DaTi(); public void GaiJuan() /改卷 Console.WriteLine(name + 老師改卷); ,class student public string name; public student(string x) name = x; public void DaTi() /答題 Con

16、sole.WriteLine(學(xué)生 + name + 答題); ,class JiaoWuChu /教務(wù)處s public void AnPaiShiJianDiDian(string s) /安排時間地點 Console.WriteLine(s + “的考試地點:西苑10-806;考試時間: 第10周周五上午10:00-12:00); ,class Program static void Main(string args) teacher t = new teacher(李維); JiaoWuChu j = new JiaoWuChu(); student s = new student(張

17、三); t.ChuJuan(); /老師出卷 t.AnPaiKaoShi(j,s); /老師安排考試 t.GaiJuan(); /老師改卷 ,小結(jié):面向?qū)ο缶幊痰年P(guān)鍵步驟 定義類 通過類創(chuàng)建對象 調(diào)用對象的操作,訪問對象的屬性,比較:面向過程編程與面向?qū)ο缶幊?在面向過程編程模式中,圍繞功能(步驟)來構(gòu)造系統(tǒng)。,在面向?qū)ο缶幊棠J街?,圍繞對象來構(gòu)造系統(tǒng)。,2.3 面向?qū)ο蟮幕驹?面向?qū)ο蟮乃枷脒@樣認(rèn)識世界:,客觀世界由各種各樣的實體組成,這些實體稱為對象。 每個對象都有各自的內(nèi)部狀態(tài)和運動規(guī)律,在外界其他對象或環(huán)境的影響下,對象會根據(jù)發(fā)生的具體事件作出不同的反應(yīng),進行對象間的交互。 按照對

18、象的屬性和運動規(guī)律的相似性,可以將相近的對象劃分為一類。 復(fù)雜的對象由相對簡單的對象通過一定的方式組成。 不同對象的組合及對象間的相互作用和聯(lián)系構(gòu)成了各種不同的系統(tǒng),構(gòu)成了人們所面對的客觀世界。,一、客觀世界由各種各樣的實體組成,這些實體稱為對象,OOP:從問題域中客觀存在的事物出發(fā)來構(gòu)造軟件系統(tǒng),用對象用為對這些事物的抽象表示,并以此作為系統(tǒng)的基本構(gòu)成單位。,面向?qū)ο蟮男蜗蠼忉專?) 所謂對象,在 Developer 眼里萬物皆為對象。比如,我們從早上起床開始: 睜開眼(Object)看見天(Object)亮了,那是因為有光(Object),抬頭(Object)望望窗(Object)外,太陽

19、(Object)出來了.,面向?qū)ο蟮男蜗蠼忉專?) 那么我們是怎么區(qū)分這些對象呢?天上有一個太陽一個月亮,我們從小就知道它們是不同的,甚至不需要理由。為什么?因為它們的外觀形態(tài)、活動規(guī)律都有極大的區(qū)別。 比如你看見一個對象,它有5噸重,3米高,四條粗腿,一條長鼻子,兩只大白牙,即使你從沒見過你也應(yīng)該知道它是什么。 再比如我現(xiàn)在敲這段文字的時候,腿上一陣奇癢,不用看我就知道屋子里至少有一只蚊子而且還是位蚊子小姐,因為我已經(jīng)知道在這種情況下只有母蚊子才具有“?!边@種行為。,二、每個對象都有各自的內(nèi)部狀態(tài)和運動規(guī)律,在外界其他對象或環(huán)境的影響下,對象會根據(jù)發(fā)生的具體事件作出不同的反應(yīng),進行對象間的交

20、互。,面向?qū)ο蟮男蜗蠼忉專?) 新的問題又來了。比如我們這個小區(qū)有不少養(yǎng)寵物的,每天傍晚狗跳貓躥的煞是熱鬧。雖然每只狗都有不同,每只貓也都相異,但看上去狗都是,狗貓都是貓。原因是它們主要的狀態(tài)和行為雖然都完全相同,這就有了類(Class)。類的狀態(tài)稱為屬性(Property),而行為就是方法(Method)了。,三、按照對象的屬性和運動規(guī)律的相似性,可以將相近的對象劃分為一類,MP3,計算機,類是這些對象的抽象描述,每個對象是類的一個實例。,四、復(fù)雜的對象由相對簡單的對象通過一定的方式組成,對象具有可分解性和組合性。,面向?qū)ο蠓椒ǖ膭倮?五、不同對象的組合及對象間的相互作用和聯(lián)系構(gòu)成了各種不同

21、的系統(tǒng),構(gòu)成了人們所面對的客觀世界。,2.4 面向?qū)ο蟮幕靖拍?面向?qū)ο笫且环N運用對象、類、繼承、封裝、多態(tài)、消息等概念來構(gòu)造系統(tǒng)的軟件開發(fā)方法。,面向?qū)ο?對象+類+封裝+繼承+多態(tài),一、對象與類 對象:客觀世界中的實體,對象由一組屬性和操作組成。 類:具有相同屬性和行為的對象集合。,抽象為,MP3對象:,class student public string name; public student(string x) name = x; public void DaTi() /答題 Console.WriteLine(學(xué)生 + name + 答題); ,創(chuàng)建學(xué)生對象 student s

22、1 = new student(張三); student s2 = new student(李四);,類:student 對象:s1、s2,思考題: 一個類可以創(chuàng)建多個對象,這些對象之間的區(qū)間體現(xiàn)在 (A)屬性的類型不同 (B)屬性的個數(shù)不同 (C)操作的個數(shù)不同 (D)屬性值不同,二、對象的特性:封裝 封裝是把對象的屬性和操作結(jié)合成一個獨立的系統(tǒng)單位,并盡可能地隱藏對象的內(nèi)部細(xì)節(jié)。 封裝有兩重含義: 1、把相關(guān)的數(shù)據(jù)(屬性)和操作結(jié)合在一起,組成一個一個不可再分的獨立單元,即對象。 2、封裝允許有選擇地隱藏對象中的屬性和操作(通過可見性來實現(xiàn))。,class student public s

23、tring name; public student(string x) name = x; public void DaTi() /答題 Console.WriteLine(學(xué)生 + name + 答題); ,三、類的特性:繼承(派生、泛化),子類擁有父類的全部屬性和操作。定義子類時不必重復(fù)定義那些已經(jīng)在父類中定義過的屬性和操作,在此基礎(chǔ)上還可以添加自己的屬性和操作。,A B K(),C W(),如果A繼承于B,則:,單重繼承,多重繼承,只有C+還支持多重繼承,其他語言(C#、java)等都已經(jīng)取消了多重繼承。,程序演示:code/graduate,class student public

24、int number; public string name; public string myclass; class graduate:student public string research; public string teacher; ,class Program static void Main(string args) graduate g1 = new graduate(); g1.number = 1000; = 張三; g1.myclass = 管理科學(xué)與工程062; g1.research = 管理系統(tǒng)工程; g1.teacher = 汪應(yīng)洛; Con

25、sole.WriteLine(姓名:+); Console.WriteLine(導(dǎo)師:+g1.teacher); ,程序演示:code/graduate,四、對象之間的聯(lián)系紐帶消息 對象之間通過傳遞消息來相互作用,消息在代碼中體現(xiàn)為 函數(shù)(操作)的調(diào)用。,消息包含三個方面的內(nèi)容: 消息的接收者 接收對象應(yīng)采用的方法 方法所需要的參數(shù)(可以為空),消息: class teacher public void AnPaiKaoShi() /安排考試 j.AnPaiShiJianDiDian(UML); s.DaTi(); ,五、類的特性:多態(tài) 多態(tài)性:同名的操作被不同的對象接收時,可產(chǎn)生不同的動作或執(zhí)行效果。 多態(tài)性允許在多個類(尤其是有繼承關(guān)系)中定義同名的操作,并在每一個類中有不同的實現(xiàn)。,在C語言中,不能有同名的函數(shù),老大要收高利貸,對三個小弟說,給我去跟某某某收高利貸。三個小

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論