




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、青 島 理 工 大 學(xué)課程實(shí)驗(yàn)報(bào)告課程名稱軟件設(shè)計(jì)與體系結(jié)構(gòu)班級(jí)軟件132實(shí)驗(yàn)日期2015.06.02姓名田清華學(xué)號(hào)201307208實(shí)驗(yàn)成績(jī)實(shí)驗(yàn)名稱觀察者模式實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康募耙螅?)熟悉觀察者模式的核心思想;(2)掌握觀察者模式解決問(wèn)題的方法。實(shí)驗(yàn)環(huán)境Win7, VS2010實(shí)驗(yàn)內(nèi)容1. 定義內(nèi)部數(shù)據(jù)列表(1)內(nèi)部數(shù)據(jù)列表提供數(shù)據(jù);(2) 每個(gè)數(shù)據(jù)列表項(xiàng)對(duì)應(yīng)界面表格中的一行。2. 定義界面控件DataGridview3. 利用觀察者模式實(shí)現(xiàn)內(nèi)部存儲(chǔ)的數(shù)據(jù)列表數(shù)據(jù)發(fā)生變化時(shí),自動(dòng)更新DataGridview中的內(nèi)容。算法描述及實(shí)驗(yàn)步驟1. 創(chuàng)建model類student2. 創(chuàng)建抽象目標(biāo)類da
2、ta3. 創(chuàng)建具體目標(biāo)類concretedata4. 創(chuàng)建觀察者類DataGridview5. 類圖:1 / 7調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果總結(jié)1. 觀察者模式可以實(shí)現(xiàn)表示層和數(shù)據(jù)邏輯層的分離,定義了穩(wěn)定的消息更新傳遞機(jī)制,并抽象了更新接口,是得可以有各種各樣不用的表示層充當(dāng)具體觀察者角色。2. 在觀察者目標(biāo)和觀察者之間建立一個(gè)抽象的耦合,觀察目標(biāo)只需要維持一個(gè)抽像觀察者的集合,無(wú)需了解其具體觀察者。3. 在C#中實(shí)現(xiàn)Observer模式可以采用更有效的方法-.NET中提供了delegate,委托可以看作是一個(gè)穩(wěn)定的接口(充當(dāng)抽象觀察者角色)。附錄Student.cs:using System;usin
3、g System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace shiyan_6 class student private string name; private string sex; private int age; public student(string name,string sex,int age) = name; this.sex = sex; this.age = age; public string Name
4、 get return name; set name = value; public string Sex get return sex; set sex = value; public int Age get return age; set age = value; Data.cs:using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace shiyan_6 ab
5、stract class data protected List<student> studentList = new List<student>(); protected ArrayList gridviewList = new ArrayList(); /添加觀察者 public abstract void Attach(DataGridview dataGridview); /刪除觀察者 public abstract void Datach(DataGridview dataGridview); public abstract void AddStudent(s
6、tudent stu); public abstract void DeleteStudent(int loc); public abstract void Display(); /通知方法 public abstract void Notify(); concreteData.cs:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace shiyan_6 class concreteData:data pub
7、lic override void Attach(DataGridview dataGridview) gridviewList.Add(dataGridview); public override void Datach(DataGridview dataGridview) gridviewList.Remove(dataGridview); /實(shí)現(xiàn)通知方法 public override void Notify() int i = 0; foreach(object obj in gridviewList) Console.Write("通知第0個(gè)觀察者:",+i);
8、(DataGridview)obj).UpDate(this); /修改數(shù)據(jù) public override void AddStudent(student stu) studentList.Add(stu); Notify(); public override void DeleteStudent(int loc) studentList.RemoveAt(loc); Notify(); public override void Display() foreach (student stu in studentList) Console.WriteLine(stu.Name+" &
9、quot;+stu.Age+" "+stu.Sex); dataGridview.cs:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace shiyan_6 class DataGridview private data data = new concreteData(); public DataGridview(data data) this.data = data; Console.
10、WriteLine("創(chuàng)建一個(gè)DataGridview"); public void UpDate(data data) this.data = data; Console.WriteLine("數(shù)據(jù)改變!"); this.data.Display(); Program.cs:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace shiyan_6 class Progr
11、am static void Main(string args) data data1 = new concreteData(); student stu; DataGridview dataGridview1 = new DataGridview(data1); data1.Attach(dataGridview1); DataGridview dataGridview2= new DataGridview(data1); data1.Attach(dataGridview2); /DataGridview dataGridview3 = new DataGridview(data1); /data1.Attach(dataGridview3); Console.WriteLine("給data添加數(shù)據(jù)"); for (int i = 0; i <3; i+) stu = new student("
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)數(shù)碼經(jīng)絡(luò)治療儀行業(yè)發(fā)展機(jī)遇與投資方向預(yù)測(cè)研究報(bào)告
- 留守兒童與義務(wù)教育論文
- 湖北省“黃鄂鄂”2025年高三下學(xué)期4月聯(lián)考試題 生物 含答案
- 獸醫(yī)病理解剖試題含答案
- 池州市重點(diǎn)中學(xué)2025年高考英語(yǔ)二模試卷含答案
- 遼寧省錦州市第四中學(xué)2025屆高三一診考試英語(yǔ)試卷含解析
- 職業(yè)技術(shù)學(xué)院護(hù)理五年制專業(yè)人才培養(yǎng)方案
- 2025年吉林省長(zhǎng)春市中考二模歷史試題(原卷版+解析版)
- 河南省名校大聯(lián)考2024-2025學(xué)年高一下學(xué)期4月期中數(shù)學(xué)試題(原卷版+解析版)
- 糖果與巧克力食品安全與質(zhì)量控制方法實(shí)踐案例分析實(shí)踐案例考核試卷
- 洗煤廠建設(shè)項(xiàng)目可行性研究報(bào)告申請(qǐng)立項(xiàng)備案
- 2025年聚焦全國(guó)兩會(huì)知識(shí)競(jìng)賽題庫(kù)及答案(共100題)
- 鐵路智能運(yùn)維系統(tǒng)構(gòu)建研究-洞察分析
- 2025年職教高考對(duì)口升學(xué) 護(hù)理類 專業(yè)綜合模擬卷(1)(四川適用)(原卷版)
- 外研版(2025新版)七年級(jí)下冊(cè)英語(yǔ)Unit 6 學(xué)情調(diào)研測(cè)試卷(含答案)
- 生產(chǎn)線和工藝流程管理制度
- DB45T 2155-2020 暴雨強(qiáng)度公式編制技術(shù)規(guī)范
- 2025屆合肥市高考英語(yǔ)二模試卷含解析
- 《甲狀腺腫》課件
- 2024華師一附中自招考試數(shù)學(xué)試題
- 【MOOC】數(shù)控技術(shù)-武漢理工大學(xué) 中國(guó)大學(xué)慕課MOOC答案
評(píng)論
0/150
提交評(píng)論