《面向?qū)ο蟪绦蛟O(shè)計課程介紹》由會員分享,可在線閱讀,更多相關(guān)《面向?qū)ο蟪绦蛟O(shè)計課程介紹(29頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,2014-09-14,,?#?,面向?qū)ο蟪绦蛟O(shè)計,,課程介紹,計算中心 張巖峰,(),,程序設(shè)計語言的發(fā)展,機器語言,由計算機硬件系統(tǒng)可以識別的二進制指令組成的語言。,,程序設(shè)計語言的發(fā)展,機器語言,由計算機硬件系統(tǒng)可以識別的二進制指令組成的語言。,匯編語言,將機器指令映射為一些可以被人讀懂的助記符,如,ADD,、,SUB,。,程序設(shè)計語言的發(fā)展,機器語言,由計算機硬件系統(tǒng)可以識別的二進制指令組成的語言。,匯編語言,將機器指令映射為一些可以被人讀懂的助記符,如,ADD,、,SUB,。,高級語言,屏蔽了機器的細節(jié)
2、,采用具有一定含義的數(shù)據(jù)命名和容易理解的執(zhí)行語句,。,程序設(shè)計語言的發(fā)展,機器語言,由計算機硬件系統(tǒng)可以識別的二進制指令組成的語言。,匯編語言,將機器指令映射為一些可以被人讀懂的助記符,如,ADD,、,SUB,。,高級語言,屏蔽了機器的細節(jié),采用具有一定含義的數(shù)據(jù)命名和容易理解的執(zhí)行語句。,面向?qū)ο蟮恼Z言,將客觀事物看作一個具有屬性和行為的對象,通過抽象同一類對象的共同屬性和行為,形成類。,面向?qū)ο蟮姆椒?結(jié)構(gòu)化程序設(shè)計方法,設(shè)計的基本原則是自上而下、逐步求精。 按照程序所需實現(xiàn)的功能,將其劃分為若干個關(guān)系簡單、相對獨立的模塊;,每一個模塊內(nèi)部都是由三種基本的程序結(jié)構(gòu),——,順序結(jié)構(gòu)、選擇結(jié)構(gòu)
3、和循環(huán)結(jié)構(gòu)組成。,優(yōu)點,分解程序設(shè)計的復(fù)雜性,缺點,命名難以控制,程序不便于開發(fā)、維護,程序難以擴展,面向?qū)ο蟮姆椒?面向?qū)ο蠓椒?將數(shù)據(jù)及對數(shù)據(jù)的操作方法放在一起,作為一個相互依存、不可分離的整體,——,對象,。,同類對象的共性形成,類,,類通過統(tǒng)一的外部接口與外界發(fā)生關(guān)系,.,對象與對象之間通過,消息,進行通信。,五子棋程序,面向過程,main{,while(true){,,黑棋下子;,,繪制畫面;,,白棋下子;,,繪制畫面;,if(,勝負已分,){,,輸出結(jié)果;,},},},面向?qū)ο?main{,,選手,A = new,選手;,,選手,B = new,選手;,,棋盤界面,= new,棋盤
4、;,,五子棋規(guī)則,= new,規(guī)則;,,while(true){,,選手,A.,下子;,,棋盤界面,.,繪制;,,選手,B.,下子;,,棋盤界面,.,繪制;,if(,五子棋規(guī)則,.,判斷勝負,){,,輸出結(jié)果;,},},},class,選手,{,,選手名字,;,,下子,(){…},},,class,棋盤,{,,棋盤規(guī)格,;,,繪制,(){…},},,class,規(guī)則,{,,規(guī)則名字,;,判斷勝負,(){…},},,,,,,,思考,面向過程和面向?qū)ο蟪绦虻膬?yōu)缺點?,五子棋程序,面向過程,main{,while(true){,,黑棋下子;,,繪制畫面;,,白棋下子;,,繪制畫面;,if(,勝負已分
5、,){,,輸出結(jié)果;,},},},面向?qū)ο?main{,,選手,A = new,選手;,,選手,B = new,選手;,,棋盤界面,= new,棋盤;,,五子棋規(guī)則,= new,規(guī)則;,,while(true){,,選手,A.,下子;,,棋盤界面,.,繪制;,,選手,B.,下子;,,棋盤界面,.,繪制;,if(,五子棋規(guī)則,.,判斷勝負,){,,輸出結(jié)果;,},},},class,選手,{,,選手名字,;,,下子,(){…},},,class,棋盤,{,,棋盤規(guī)格,;,,繪制,(){…},},,class,規(guī)則,{,,規(guī)則名字,;,判斷勝負,(){…},},,,class,新選手,extend
6、s,選手,{,,選手,IQ;,,選手頭像,;,,選手裝備,;,},五子棋程序,面向過程,main{,while(true){,,黑棋下子;,,繪制畫面;,,白棋下子;,,繪制畫面;,if(,勝負已分,){,,輸出結(jié)果;,},},},面向?qū)ο?main{,,選手,A = new,選手;,,選手,B = new,選手;,,棋盤界面,= new,棋盤;,,五子棋規(guī)則,= new,規(guī)則;,,while(true){,,選手,A.,下子;,,棋盤界面,.,繪制;,,選手,B.,下子;,,棋盤界面,.,繪制;,if(,五子棋規(guī)則,.,判斷勝負,){,,輸出結(jié)果;,},},},class,選手,{,,選手名
7、字,;,,下子,(){…},},,class,棋盤,{,,棋盤規(guī)格,;,,繪制,(){…},},,class,規(guī)則,{,,規(guī)則名字,;,判斷勝負,(){…},},,,class,新選手,extends,選手,{,,選手,IQ;,,選手頭像,;,,選手裝備,;,},class,象棋選手,extends,新選手,{,,下子,();,,悔棋,();,,特殊技能之連走兩步,();,},class,棋盤,{,,棋盤規(guī)格,;,,繪制,(){…},},class,選手,{,,選手名字,;,,下子,(){…},},class,規(guī)則,{,,規(guī)則名字,;,判斷勝負,(){…},},,,,面向?qū)ο蟮姆椒?使,程序員
8、更好的,理解和管理龐大而復(fù)雜的程序,,它在結(jié)構(gòu)化程序設(shè)計的基礎(chǔ)上完成進一步的抽象。這種在設(shè)計方法上更高層次的抽象正是為了適應(yīng)目前軟件開發(fā)的特點。,面向?qū)ο蟮某绦蛟O(shè)計方法絕非是要摒棄現(xiàn)有的結(jié)構(gòu)化程序設(shè)計方法,相反,它是在充分吸收結(jié)構(gòu)化程序設(shè)計優(yōu)點的基礎(chǔ)上,引進了一些新的、強有力的概念。,面向?qū)ο蟮某绦蛟O(shè)計方法把,可重復(fù)使用,性視為軟件開發(fā)的中心問題,,通過裝配可重用的部件來生產(chǎn)軟件,,而不是像目前編程所用的那樣,通過調(diào)用函數(shù)庫中的函數(shù)來實現(xiàn)。事實上,在對象內(nèi)部的實現(xiàn)上,我們也常常調(diào)用函數(shù)庫中的很多有用的函數(shù),然而從程序的總體結(jié)構(gòu)上說,它是由一系列對象構(gòu)成的,對象之間能夠以某種方式進行通信和協(xié)作,
9、從而實現(xiàn)程序的具體功能。,,面向?qū)ο笤O(shè)計的特征,利用對象進行抽象,基于對象和對象間的相互作用,面向?qū)ο蠹夹g(shù)對真實世界進行抽象。,對象具有生命周期,每一個對象都是獨一無二的,都有創(chuàng)建、生存、銷毀的過程。,對象通過消息進行通信,對象可以與其他對象相互操作。,面向?qū)ο笤O(shè)計的特征,封裝良好的類,對外部隱藏所有實現(xiàn)的細節(jié),便于修改和替換,對象所屬的類具有層次結(jié)構(gòu),關(guān)聯(lián),聚合或組合,繼承,多態(tài)性,多態(tài)性是面向?qū)ο笙到y(tǒng)最終表現(xiàn)出來的基本特征,即同樣的語句產(chǎn)生不同的行為。,面向?qū)ο蟮恼Z言,Smalltalk,這是第一種成功的面向?qū)ο蟪绦蛟O(shè)計語言,也是,Java,的基礎(chǔ)語言。,C++,C++,是,C,的超集,設(shè)
10、計于,80,年代,增加了面相對象的概念。,優(yōu)點:數(shù)據(jù)抽象和封裝,豐富的內(nèi)置函數(shù)庫;,缺點:除包含,C,語言的缺點外,程序過于復(fù)雜而容易出錯;,Java,90,年代開始廣泛使用的網(wǎng)絡(luò)編程語言;,Smalltalk,的思想,,C++,語法的簡化。,編程語言使用率排行榜,JAVA,語言與其它語言的關(guān)系,相比較于,C++,高可移植性,Windows,、,MacOS,、,UNIX,等平臺,豐富的支持類庫,易擴展,Web,編程、企業(yè)計算、嵌入計算,自動內(nèi)存管理,調(diào)試更簡單,,與其它語言互為補充,C,語言(底層,速度快),Python,、,Ruby,、,Perl,、,PHP,(腳本語言,簡單),MatLab
11、,、,R,(數(shù)據(jù)分析語言,數(shù)學(xué)分析計算功能強大),SQL,(數(shù)據(jù)庫管理語言,數(shù)據(jù)管理的增刪改查),,,教學(xué)內(nèi)容,Java,語言基礎(chǔ),數(shù)組與方法,類和對象,文件操作,圖像界面,swt,多線程編程,/,網(wǎng)絡(luò)編程,連接數(shù)據(jù)庫,Hadoop MapReduce,分布式編程(,optional,),課程表,理論課,時間:,1-19,周,,周一,1-2,節(jié),地點:采礦館,203,,實驗課,時間:,4-19,周,,周一,5-6,節(jié),地點:計算中心微機?室,教學(xué)模式,理論講授(,20%,),實例演示(,20%,),討論思考(,10%+?%,),上機實踐(,50%+?%,),,考核方法,,平時成績,20%,三次
12、作業(yè),30%,課程設(shè)計(考試),50%,,強調(diào)問題,曠課、遲到、早退,不及時交作業(yè),上課違紀,3,次,作業(yè)抄襲、課程設(shè)計抄襲,,上課可以帶筆記本電腦,參考書推薦,MOOC,MOOC,(,Massive Open Online Course,),學(xué)堂在線,,慕課中國,,遼寧省資源共享課,,翁愷,用,Java,學(xué)編程,問題?,為什么學(xué)“編程”?,程序員是個什么樣子的工作?,“編程”有多難?,怎樣能把編程能力提高?,經(jīng)驗與建議,編程不同于理論學(xué)習(xí),要培養(yǎng)動手能力,Just do it!,Just google it!,讀別人寫的優(yōu)秀的代碼,在已有代碼之上修改,不要浪費時間在看書上,把書當(dāng)成工具書,帶著目的的去讀書,,練習(xí),,