物件导向虚拟程式设计.ppt_第1页
物件导向虚拟程式设计.ppt_第2页
物件导向虚拟程式设计.ppt_第3页
物件导向虚拟程式设计.ppt_第4页
物件导向虚拟程式设计.ppt_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

物件導向虛擬程式設計,鄭士康國立台灣大學電機工程學系/,計算機程式設計與作文,以程式語言指示計算機工作說明文敘述事物內容同樣以簡潔明確為目標,作文技巧與程式設計,構思立意(解法構想)布局謀篇(模組規畫)度句裁章(流程設計)用字遣詞(變數運算),兒童作文缺失(1/2),低年級小朋友.尚無法完整表達意念、掌握形式結構,內容常跳躍,不能聯貫主題。低年級階段的寫作以我手寫我口為主要訓練方式.剛升上中年級的小朋友,在遣詞造句上易流於口語化,甚至常重複出現相同的語詞、句型.,*蘇國書、林瑋,國語日報兒童園地版兒童寫作觀察報告(九十七年一月到六月)三之二,國語日報,中華民國97年9月18日,兒童作文缺失(2/2),大部份的小朋友都是想到什麼就寫什麼,往往把主要內容全寫進某一個段落。這樣一來,不僅段落雜亂,整篇文章也缺乏分段的概念。高年級學生.需要加強的,則是大多慣用條列式思考,缺少在每一條列下衍生細膩描述的能力,*蘇國書、林瑋,國語日報兒童園地版兒童寫作觀察報告(九十七年一月到六月)三之二,國語日報,中華民國97年9月18日,虛擬程式設計,程式設計二進位碼組合語言程式語言就解決問題而言,高階程式語言仍是過細必須先想好問題解法,才能轉成程式問題解法先區分模組,寫成演算法,才容易寫成程式模組區分與演算法構思:虛擬程式設計,範例:二十一點,/w/index.php?title=Image:Blackjack_game_example.JPG如莊家爆煲,未有爆煲或報到的閒家便可得賠金回收已使用的牌及打賞注:回收已使用的牌必須順序回收。如分開大牌和小牌個別回收等不正常收牌行為,便有出千的可能,並且可能會被請提出異議而被迫離開。,/w/index.php?title=%E4%BA%8C%E5%8D%81%E4%B8%80%E9%BB%9E&variant=zh-tw#.E5.9F.BA.E6.9C.AC.E7.8E.A9.E6.B3.95,維基百科,點數計算與發牌,A作一點或十一點,2-10作該牌之點數,J、Q、K作十點。首先由一位玩家作莊家負責發牌,其餘玩家為閒家。閒家會向莊家投下一定注碼,莊家會以順時鐘方向向眾閒家派發一張暗牌(即不掀開的牌),然後向自己派發一張暗,接著莊家會以順時鐘方向向眾閒家派發一張明牌(即掀開的牌),之後又向自己派發一張明牌。當眾人手上各擁一張暗牌和一張明牌,莊家就以順時鐘方向逐位閒家詢問是否再要牌(以明牌方式派發),玩家此時要計算是否要牌,因為排牌局的最終目的,是要玩家手上擁有的牌總點數達到21點(或最接近又小於21點),然後和莊家比大小。當一位閒家決定不再要牌後,莊家才向下一位閒家詢問是否再要牌。(按:在一般賭場的賭局,莊家並不一定是發牌者。),/w/index.php?title=%E4%BA%8C%E5%8D%81%E4%B8%80%E9%BB%9E&variant=zh-tw#.E5.9F.BA.E6.9C.AC.E7.8E.A9.E6.B3.95,維基百科,爆煲(超過21點),若果閒家要牌後,其手上擁有的牌的總點數超過21點,便要揭開手上所擁有的牌,俗稱爆煲,該閒家的注碼會歸莊家。反之若其手上擁有的牌的總點數不超過21點,該閒家可決定是否繼續要牌。當最後一位閒家決定不再要牌後,莊家就必須揭開自己所有手上的牌,若總點數少於17點,就必須繼續要牌;如果莊家爆煲的話,便向原來沒有爆煲的閒家,賠出該閒家所投住的同等的注碼。,/w/index.php?title=%E4%BA%8C%E5%8D%81%E4%B8%80%E9%BB%9E&variant=zh-tw#.E5.9F.BA.E6.9C.AC.E7.8E.A9.E6.B3.95,維基百科,點數決勝與例牌報到,如果莊家最終沒有爆煲的話,原來沒有爆煲的眾閒家便要揭開手上所有的牌,比較點數決定誰勝誰負,點數較大的取勝。(例牌例外,詳見下文閒家例牌先報到和特別規例)若某閒家例牌,必須向立即莊家揭開手上所有的牌(即俗稱報到),莊家亦必須向該擁有例牌的閒家賠上一定注碼。,/w/index.php?title=%E4%BA%8C%E5%8D%81%E4%B8%80%E9%BB%9E&variant=zh-tw#.E5.9F.BA.E6.9C.AC.E7.8E.A9.E6.B3.95,維基百科,保險、加註、分牌,當莊家面牌是10或A,閒家可以外加註碼的一半買保險,以賭莊家的二張牌總和是不是21點,如莊家不是21點便沒收保險金,如是21點便以注碼的一倍半賠償。如閒家首兩張牌點數之和為11點,可以選擇加倍投注,但加註後僅獲發1張牌。有些賭局容許閒家在首兩張牌總和為10點(甚至任何點數)時加註。如閒家首兩張牌點數相同,可以選擇分牌,並須加註。分出每門的下注金額須與原注相同。若閒家打兩張A分開,則每張A只獲發1張牌,不可再要牌。有些分牌後後不可再分牌。,/w/index.php?title=%E4%BA%8C%E5%8D%81%E4%B8%80%E9%BB%9E&variant=zh-tw#.E5.9F.BA.E6.9C.AC.E7.8E.A9.E6.B3.95,維基百科,二十一點、同花順、五龍,如果閒家手中的一張暗牌和一張明牌分別是一張A牌(可作11點)和一張十點牌(K、Q、J、10),這副牌叫做二十一點(BlackJack)(屬例牌),該閒家可向莊家報到,莊家須向該閒家賠上1倍注碼。有些賭場會加設這一賠彩規例,即玩家的牌面是同花的6、7、8便可即收3倍的彩金。如果閒家要牌直至手上有5張牌而又沒有爆煲,這副牌叫做五龍(屬例牌),該閒家可向莊家報到,莊家須向該閒家賠上2倍注碼。,/w/index.php?title=%E4%BA%8C%E5%8D%81%E4%B8%80%E9%BB%9E&variant=zh-tw#.E5.9F.BA.E6.9C.AC.E7.8E.A9.E6.B3.95,維基百科,莊家食夾棍,若莊家和眾閒家要以點數決勝(各方都沒有出現爆煲的情況),若該閒家和莊家手上所擁有的牌的總點數一樣的話,算莊家取勝,即俗稱莊家食夾棍,該閒家的注碼會歸莊家。賭場規則,廿一點是沒有食夾棍這規例,如閒家和莊家手上牌總點數一樣的話,是打和,閒家可以拿回原先的注碼。注意:莊家是五龍而閒家的點數比莊家大的話,仍算莊家取勝,不過莊家食夾棍的權利不適用於閒家例牌(BlackJack和五龍)的情況,因為閒家BlackJack和五龍屬於例牌先賠。,/w/index.php?title=%E4%BA%8C%E5%8D%81%E4%B8%80%E9%BB%9E&variant=zh-tw#.E5.9F.BA.E6.9C.AC.E7.8E.A9.E6.B3.95,維基百科,兩則做事方法的名言,物有本末,事有始终,知所先後,則近道矣。大學開宗明義學而不思則罔,思而不學則殆荀子勸學篇,15,80-20定律、要事第一、工程方法,80-20定律要事第一(Firstthingsfirst)工程方法(Engineeringapproach)辨識問題核心(Core)訂定優先順序(Priority)快速原型製作(Fastprototyping)逐步演化(Evolution)定時定量研究法,釐清問題,核心關鍵Nicetohave優先順序問題簡化從實例簡化開始嘗試做中學,工程方法,v0.2,工程方法,配合實作逐漸熟悉問題,而非開始即要求全面了解避免過度分析(analysisparalysis),及早獲得可用程式隨版本演進,有系統地完成程式隨時有產出,增進信心越重要的部份較早完成,經歷越多測試,較確實可靠穩定;避免後期發現錯誤,須全面改寫程式越重要的部份越早完成,可依照環境時程的改變,修改後續版本需求,富有彈性,程式目的,使玩家可以與電腦玩二十一點遊戲,二十一點遊戲模擬v0.1流程,產生牌疊電腦(莊家)向玩家(一人)及本身派發一張明牌電腦向玩家及本身派發一張明牌莊家詢問玩家是否加牌,直至玩家不加牌或報到莊家如不足17點便需加牌直至超過或等於17點對未有爆煲或報到的玩家,比點數大小,大者勝,如莊家爆煲,玩家勝,後續版本規劃,v0.2:區分明牌暗牌v0.3:允許下注v0.4:處理莊家食夾棍v0.5:處理同花順與五龍v0.6:處理保險、加註、分牌v0.7:使用多付牌,測試規劃,規劃程式須能處理的場景實例增進對問題的確實了解有助對程式架構與流程的思考做為各版本程式紙筆測試、偵錯、驗證的依據場景實例規畫由簡到繁輸入錯誤資料等例外狀況可延後規劃程式的功能與強健(robustness)程度,隨版本演進與通過的測試場景增加而成長,二十一點遊戲模擬原型之測試規劃:場景1,二十一點遊戲模擬原型之測試規劃:場景2,二十一點遊戲模擬原型之測試規劃:場景3,二十一點遊戲模擬原型之測試規劃:場景4,二十一點遊戲模擬原型之測試規劃:場景5,二十一點遊戲模擬原型之測試規劃:場景6,物件與類別,物件(Object)狀態與功能:例如,某台特定電視機類別(Class)藍圖:例如,泛稱電視機狀態:變數(Variables)資料成員,Datamember,Field,Attribute功能:函式(Function)方法成員,Memberfunction,Method,Operation,Responsibilities,31,物件導向思維,什麼是程式要完成的功能?需要那些物件/類別才能完成程式功能?物件/類別需要那些行為才能合作完成程式功能?例:MissionImpossible,RPG,參考書籍,N.M.Wilkinson,UsingCRCCards:AnInformalApproachtoObject-OrientedDevelopment,NewYork:SIGSBooks,1995.,練習,實際演練二十一點遊戲模擬原型的CRC卡會議,CRC卡會議,定義問題產生類別演練場景整理卡片,產生類別,腦力激盪過濾類別分配卡片初步建立繼承關係描述類別初步寫出方法成員(Responsibilities)初步寫出資料成員(Attributes),物件/類別之識別,流程敘述中的名詞、代名詞、名詞片語可能需要轉換為物件/類別(CRC卡)流程敘述中的動詞、動詞片語可能需要轉換為物件/類別的方法(CRC卡)需要相同方法的物件可以歸納出一個類別(CRC卡)類別之間的關係可以畫UML類別圖表示主程式及類別的方法可以用虛擬碼進一步描述,必也正名乎,物件、類別、狀態、功能之名稱力求精準使用一致命名規範物件、類別、狀態:名詞片語功能:動詞片語條件判斷:形容詞片語、判斷句多字連用,除第一字另外考慮外,各字開頭字母大寫物件、狀態:第一個字小寫起頭humanPlayer類別、功能:第一個字大寫起頭HumanPlayer,資料成員與類別之區分,資料成員通常表示類別的狀態變數,而非單獨之類別或型別撲克牌之花色借書資料之到期日期但資料成員如可操作,且可用藍圖描述,可能可以構成一個類別,而資料成員變成一個物件日期,責任之分配,原則上責任分配給擁有最方便完成工作之資源的類別,演練場景,列出場景清單逐一演練場景寫下類別負責功能、合作類別、資料成員先演練簡單場景複雜場景可能包括其他簡單場景例外場景押後演練,整理卡片,刪除沒用到的類別、方法成員、資料成員發現繼承結構繪出類別圖(ClassDiagram),CRC卡正面,類別名稱,父類別,負責功能,合作類別,CRC卡背面,類別描述,資料成員,類別CRC卡正面,ClassName:Card,ResponsibilitiesKnowssuitKnowsrank,Collaborators,DeckHand,類別CRC卡背面,Description:Thesetofobjectstorepresentthe52playingcardsinthesystem.,Attributessuitrank,類別CRC卡正面,ClassName:Deck,ResponsibilitiesKnowsremainingcardsDealscards,Collaborators,CardHumanPlayerComputerPlayer,類別CRC卡背面,Description:Thesetofobjectstorepresentthecarddeckfromwhichtheplayingcardisdealttothehumanplayerandthedealer.,Attributescards,類別CRC卡正面,ClassName:Hand,ResponsibilitiesKnowscardsfortheplayerComputecardpoints,Collaborators,CardHumanPlayerComputerPlayer,類別CRC卡背面,Description:Thesetofobjectstorepresentthecardshavingbeendealttothehumanorthecomputerplayer.,Attributeshandtotalpoints,類別CRC卡正面,ClassName:HumanPlayer,ResponsibilitiesKnowscardsownedbythehumanplayerDecideswhethertoaskforonemorecardSaveacardfromthedecktothehandChecksifitisBlackJackChecksifitgoesburst,Collaborators,DeckHandGame,類別CRC卡背面,Description:Thesetofobjectstorepresentthehumanplayer.,Attributeshand,類別CRC卡正面,ClassName:ComputerPlayer,ResponsibilitiesKnowscardsownedbythecomputerplayerDecideswhethertoaskforonemorecardSaveacardfromthedecktothehandChecksifitisBlackJackChecksifitgoesburst,Collaborators,DeckHandGame,類別CRC卡背面,Description:Thesetofobjectstorepresentthecomputerplayer.,Attributeshand,類別CRC卡正面,ClassName:Game,ResponsibilitiesKnowsdeckKnowshumanplayerKnowscomputerplayerControlsgameflow,Collaborators,DeckHumanPlayerComputerPlayer,類別CRC卡背面,Description:Thesetofobjectstorepresentthegame.,Attributesdeckhumanplayercomputerplayer,UML,UnifiedModelingLanguageOO設計之圖像符號系統工具RationalRoseJUDE-Communityhttp:/jude.change-,類別UML符號,UML類別圖(ClassDiagram),練習,以大富翁遊戲模擬為目標,規畫版本,進行CRC卡會議,產生CRC卡,繪出UML類別圖,JUDECommunity,用JUDECommunity畫類別圖,FileNewDiagramClassDiagram工具列點選Class符號在工作區按左鍵左下角Base標籤輸入類別名稱左下角Attribute標籤Add按鈕輸入資料狀態名稱、型別、可見度左下角Operation標籤Add按鈕輸入功能函式名稱、傳回值型別、可見度,用JUDECommunity畫類別圖,工具列Association符號旁箭頭選擇所需Association符號起點類別圖形按左鍵,轉折點按左鍵終點類別圖形連按左鍵兩次按起點、終點類別圖形調整位置或按Shift鍵點選要對齊的圖形Alignment選擇調整方式EditCopytoClipboard

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论