freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

c語言程序設計(中)ppt(參考版)

2024-10-20 00:38本頁面
  

【正文】 ? 對消息的響應不是必須的。 類、對象和消息 (10/10) ? 消息機制的特性 ? 同一對象可以接收不同的消息,并有不同的響應。 rpt?borrowBook(12)。ref = zhang。zhang。 //聲明 Reader類的對象 zhang Reader reader[1000]。 //借書證號 }。 //還書 private: char *name。 //注冊 int borrowBook(int bookNo)。 // 返回鏈首指針 } 學習目的檢測 ? 理解自引用結構和鏈表的含義 ? 掌握通過動態(tài)分配和釋放內存來建立和維護鏈表 作業(yè) +上機 ? ? ? 第 10章 面向對象程序設計基本概念 講授內容 ? 面向對象程序設計方法的產(chǎn)生和發(fā)展 ? 面向對象程序設計語言 ? 面向對象程序設計的特點 ? 類和對象的基本概念 ? 消息 面向對象語言和方法 (1/6) ? 六十年代末期 ——Simula 67( 面向對象語言的鼻祖 ) ? 包含了類和繼承的概念 ? 類 ——描述特性相同或相近的一組對象的結構和行為 ? 繼承 ——將多個類組織成層次結構,實現(xiàn)數(shù)據(jù)和操作的共享 面向對象語言和方法 (2/6) ? 七十年代末八十年代初 ——Smalltalk( 第一個真正的集成開發(fā)環(huán)境 ) ? 包含類和繼承,更嚴格的信息隱藏 ? 帶有一個巨大的、標準類庫 ? 第一個使用 MVC(ModelViewController)模式開發(fā)交互式應用軟件 面向對象語言和方法 (3/6) ? Smalltalk使面向對象方法為人們注目 ? 面向對象語言被分為兩大陣營 ? 純粹的面向對象語言: Smalltalk、Eiffel、 Java ? 混合型面向對象語言: C++和 CLOS ? 基于對象的語言: Ada支持數(shù)據(jù)抽象類型(包)、函數(shù)和運算符重載、多態(tài)性,但不支持繼承 面向對象語言和方法 (4/6) ? 結構化程序設計 ? 軟件的結構化分析、設計方法 ? 工程化的概念的方法 ? 但無法很好地支持越來越復雜、龐大的系統(tǒng)需求 ? 面向對象方法 ? 直接將問題的求解映射到問題本身上 ? 有目的地將系統(tǒng)分解為模塊 ? 將問題分解為一系列的實體(對象) ? 方便設計,可維護性、可擴充性好 面向對象語言和方法 (5/6) ? 簡單的例子 ——圖書館管理系統(tǒng) ? 包含 reader( 讀者)對象、 librarian( 圖書管理員)對象、 bookshelf( 書架)對象等 ? 所有的操作由各對象協(xié)作完成 ? 借書 ? reader對象向 librarian對象提出借書請求 ? librarian對象向 bookshelf對象提出查書和取書請求 ? 然后逐步響應,逐步返回,共同完成借書操作 ? 萬物皆對象 面向對象語言和方法 (6/6) ? 面向對象方法的一些特性 ? 程序設計的重點在數(shù)據(jù)而不是函數(shù) ? 程序由對象組成 ? 對象之間通過相互協(xié)作來完成功能 ? 大多數(shù)對象的定義以數(shù)據(jù)為中心 ? 函數(shù)與相關的數(shù)據(jù)緊密結合 ? 數(shù)據(jù)可以被隱藏 ? 很容易擴充新的數(shù)據(jù)和函數(shù) 類、對象和消息 (1/10) ? 面向對象程序設計的一般步驟 ? 分析實際問題,分辨并抽取其中的類和對象 ? 設計相應的類,并根據(jù)這些類創(chuàng)建各種對象 ? 協(xié)調這些對象完成程序功能(消息) 類、對象和消息 (2/10) ? 萬物皆對象 ? 每個學生、每個班級、每個學校、每個國家、每棵樹、每本書、每部汽車 ——具體的實體 ? “ 張三 ” 、 “ 李四 ” 都是對象 ,但“人”不是 ? “人”不是具體的實體,是類,是抽象概念 ? 類是某些對象共同特征的表示 ? 類是創(chuàng)建對象的模板,對象是類的實例 類、對象和消息 (3/10) ? 如何區(qū)分類和對象 ——以“人”和“張三”為例 ? “人”描述了所有人(包括“張三” )都具有的屬性和行為,如有姓名、身高、體重,有鼻子、眼睛、四肢,能交流、能思維等等 ? 類(“人”)描述的概念是抽象的 ? “人”的姓名是什么? ? “人”的身高是什么? ? 對象(“張三”)是具體的 ? “張三”的姓名是“張三” ? “張三”的身高是 185CM 類、對象和消息 (4/10) ? 還有哪些類和對象的例子 ? 教室 ——301105教室 ? 國家 ——中國 ? 學校 ——國防科技大學 ? …… 例子:讀者類 Reader class Reader { public: Reader()。 } delete curNode。 } else { curNodeprenext = curNodenext。 } 例子 9:編寫函數(shù),在雙向鏈表中查找并刪除指定 if (curNodepre == NULL) { head = headnext。t find n endl。 curNodedata != n) curNode = curNodenext。 // 指向當前節(jié)點 while ( curNode amp。 return head。 newNodepre = preNode。 } 例子 8:編寫函數(shù),將整數(shù) n插入到一個已排序的雙向鏈表中 (從小到大 ) else {//鏈中 preNodenext = newNode。 newNodenext = NULL。 } if (curNode == NULL) { // 鏈尾 newNodepre = preNode。 if (curNode != NULL) curNodepre = newNode。 if(preNode==NULL) { //鏈頭 newNodenext = curNode。 return head。 } newNode = new node 。(curNodedata n)) { preNode = curNode。 // 指向新建節(jié)點 //尋找插入位置 while((curNode != NULL)amp。 // 指向插入點的后節(jié)點 node *preNode = NULL。 return。 curNode = curNode next。 cout curNodedata。 node *curNode = head。 } } return head 。 tailnext = temp。 tempnext = NULL。 return head。 temp = new node 。 i n 1。 tail = head。 headnext = NULL。 return NULL。 head = new node 。 int num。 //指向前面的節(jié)點 }。 node * next。 return head。 else preNodenext = curNodenext。 return head。 } if (curNode == NULL) { coutCan39。 curNodedata != n) { preNode = curNode。// 指向當前節(jié)點的前驅節(jié)點 while (curNode amp。 (2)如果 c有前驅節(jié)點 (設為 d,用指針 dptr指向d), 則將 d的后繼指針指向 c的后繼節(jié)點:dptrnext=cptrnext (3)釋放 c占用的空間 例子 5:編寫一個函數(shù),刪除鏈表中包含指定整數(shù)的節(jié)點 node * deleteData(int n, node * head) { node *curNode = head。 return head。 } else { preNodenext = newNode。 if (preNode == NULL) //插入到鏈表頭 { newNodenext = curNode。 return head。 } newNode = new node 。(curNodedatan)) { preNode = curNode。// 指向新建節(jié)點 while ((curNode!=NULL)amp。// 指向插入點的后節(jié)點 node *preNode = NULL。 } 單向鏈表的操作 ? 在鏈表中節(jié)點 a之后插入節(jié)點 c (1) 指針 cptr指向節(jié)點 c,aptr指向節(jié)點 a; (2) 把 a后繼節(jié)點的地址賦給節(jié)點 c的后繼指針 cptrnext= aptrnext; (3) 把 c的地址賦給節(jié)點 a的后繼指針 aptrnext=cptr。t find n in the list.endl。 } curNode = curNodenext。 while ( curNode ) { if ( curNodedata == n) { coutFind n in the list.endl。 return。 curNode = curNode next。 while ( curNode ) { cout curNodedata。 例子 2:編寫一個函數(shù),輸出例 1鏈表中各節(jié)點的 data成員的值 void outputList(node * head) { cout List: 。 ? 一般遍歷方法 node * curNode = head。 } 建立鏈表過程 tail temp head NULL 初始狀態(tài) NULL NULL 讀入 1后 tail temp head 1 NULL 建立鏈表過程 讀入 2后 tail temp head 1 2 NULL 讀入 3后 tail temp head 1 3 NULL 2 單向鏈表的操作 ? 遍歷鏈表 ? 依次訪問鏈表中的每個節(jié)點的信息 headdata = 15。 tail = temp。 tempnext = NULL。 return head。 temp = new node 。 i n 1。 tail = head。 } else { headdata = num。 // 為新節(jié)點動態(tài)分配內存 if (head == NULL) { cout No memory available!。 cin num。 } 例子 1:建立鏈表,讀入 n個整數(shù),每個整數(shù)作為一個新結點插入到鏈尾 node *createList(int n) { node *temp, *tail = NULL, *head = NULL 。 if (n 0) listHead = createList(n)。 cout Please enter the number of nodes:。 int main() { int n。 }。 單向鏈表的操作 ? 建立單向鏈表 ? 聲明一個鏈首指針變量 head, 并賦初值NULL(包含 0個節(jié)點的鏈表 ) ? 動態(tài)分配一個新節(jié)點,將該節(jié)點鏈入鏈尾 ? 重復上一步 例子 1:建立鏈表,讀入 n個整數(shù),每個整數(shù)作為一個新結點插入到鏈尾 include struct node { int data。 ? 動態(tài)申請內存的方法 student *p=(student*) malloc(sizeof(student))。 student * next。 char sex。 ? next: 指向下一個 node類型的結構,連接 node 的紐帶 head 28 52 2 96 NULL 單向鏈表定義 ? 存放學生信息的鏈表節(jié)點 struct student { int num。 node * next。 day = (weekday)2
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1