

信筆隨記......生活點滴的紀錄點。
資料來源:http://www.iiiedu.org.tw/knowledge/knowledge20031231_2.htm
UML是什麼?
UML是Unified Modeling Language的簡稱,中譯為「統一塑模語言」。其中:
●Unified:UML是一種標準語言,廣泛運用於全世界。
●Modeling:UML用途在於塑模(Modeling),也就是畫軟體藍圖。
●Language:UML是一種塑模語言,而非程式語言或標示語言。
也就是說,UML是軟體系統發展人員用以建造模型,而這些模型使得工作團隊能夠:將系統具象化(Visualization)、將系統結構及行為規格化 (Specification)、建構(Construction)系統、以及記錄(Documentation)發展系統過程中之各項決策。
什麼是塑模?
作曲家會將其腦袋中的旋律譜成樂曲,建築師會將其設計之建築物畫成藍圖,行銷廣告人員會將其創意製作成簡報;這些樂曲、藍圖及簡報就是模型(Model),而建構這些模型的過程就稱為塑模(Modeling)。
軟體開發如同音樂譜曲及建築設計,其過程中也必須將需求、分析、設計、實作、佈署等各項工作流程之構想與結果予以呈現,這就是軟體系統之塑模。
為什麼要塑模?
絕大部份的音樂演奏都需要樂譜(除了少數即性式表演外)!
絕大部份的建築施工都需要藍圖(除非要蓋的是一間狗屋)!
同樣的,所有軟體系統的建構最好都有適當的分析設計藍圖,因為軟體開發的過程絕對不是任意的、隨性的、且戰且走的、天馬行空的。
UML在軟體塑模中所扮演的角色是什麼?
軟體發展之方法論中包含了程序(Process)及表示法(Notation)兩個部份,其中:
●程序指的是系統開發的流程,例:瀑布模式、漸增模式、擴展模式、雛型模式、螺旋模式等。
●表示法指的是建構軟體模型中所會用到之符號及規則。
UML所涵蓋的內容是表式法而非程序,UML是與程序無關的(Process Independent),也就是說,無論以任何程序來開發軟體系統,都可以使用UML來建構軟體模型。
UML與物件導向方法之關係
●UML之訂定與物件導向方法的確有非常密切之關係。
●UML中的各種符號及規則與物件導向語言(Java,C++)之結構有完整對應。
●但是,UML絕對不僅限用在物件導向軟體開發,UML中有些概念與圖形甚至可說是與物件導向無關,
例:Use Case Diagram及Statechart Diagram
●因此,軟體開發時無論是否採用物件導向方法,UML都是適用的。
UML的重要性
●UML是OMG公佈的官方標準。
●UML已為全世界軟體業者所廣泛採用,各大軟體公司(Microsoft、IBM、Oracle等)
在其產品中均支援UML。
●UML的應用領域越來越廣(資料庫設計、韌體設計、資訊管理等)。
UML的現行版本
UML現行版本為1.5版(http://www.omg.org/technology/documents/formal/uml.htm),但2.0版將近完成,應會在短期內正式公佈(http://www.omg.org/uml)。
UML的內容到底是什麼?
UML對於軟體開發相關人員而言,其實就只是一組符號及規則,其中包括:
1.Basic Building Blocks(都有其相對的符號)
(1) Things
●Structura˙Things:Class、Interface、Collaboration、Use Case、Active Class、Component、Node
●Behaviora˙Things:Interaction、State Machine
●Grouping Things:Package
●Annotation Things:Note
(2) Relationships:Association、Generalization、Dependence、Realization
(3) Diagrams
●Structural:Class、Object、Component、Deployment
●Behavior:Use Case、Activity、Statechart、Sequence、Collaboration
2.Rules(符號的使用規則)
Name、Scope、Visibility、Integrity、Execution
3.Common Mechanisms(各類符號及圖形通用的機制)
Specification、Adornments、Common Division、Extensibility Mechanisms
如何學習UML?
●找本淺顯易懂的入門書籍,先掌握UML的全貌,千萬不要被過多抽象的軟體工程專有名詞所絆住。記住:UML只是一組符號而已!
●先學習讀圖,讓自己先習慣於UML之各種符號,尤其注意UML中以擴充機制(Extensibility Mechanisms)所產生之符號,此部份最容易使初學者迷惑。
●練習畫圖,訓練自已將心中之構想以UML符號呈現出來,注意各類符號之正確表示法,不要隨意更改之。
●選用適當之CASE工具,Rationa˙Rose,Microsoft Visio,Borland Together都是很好的軟體工具。
如何應用UML於軟體開發?
●選擇一個適當之開發程序(Process),例:RUP
●選擇一個適當之UML發展工具,例:Rationa˙Rose
●相關人員接受完整之訓練
C++ GUI Programming with Qt 4, Second Edition | ||||
by Jasmin Blanchette; Mark Summerfield | ||||
| ||||
Publisher: Prentice Hall | ||||
Pub Date: February 04, 2008 | ||||
| ||||
Pages: 752 |
You enable and disable it by hitting control-shift-numberlock.
Apparently the speaker should beep but mine never does.
Then you use the number pad to move around:
/ * - select mouse buttons: first, second, third in that order
. 8 . becomes . up .
4 . 6 becomes left . right
. 2 . becomes . down .
Holding one of 2,4,6,8 down and pressing number 5 down speeds the mouse
up.
Pressing 5 down on its own does a mouse click with the current button.
Pressing + down on its own does a double-click with the current button.
0 clicks and holds down the current button.
. releases the button that 0 held down.
資料來源:http://www.topology.org/linux/xcursor.html
本來在找其他資料,不小心找到好玩的功能.......
大概是說:如何使用鍵盤來控制滑鼠的功能,
當你按下 control-shift-numberlock 可以啟動此功能
其他功能自己看吧.....
Linux device driver 的種類:
(1) Char module
(2) Block module
(3) Network module (機構獨樹一格,無法掌控、不可預期)
Kernel Module V.S. Programs
Programs : begin with main()
Kernel Module: begin with init_module() ; end by cleanup_module()
Insert ==> init_module()
Remove ==> cleanup_module()
年月:2008年7月 課表 | << 依班級:SI502 >> | 製成時間:2008/7/1上午 01:40:04 |
週別 | 星期一 | 星期二 | 星期三 | 星期四 | 星期五 | 星期六 | 星期日 | |
1 週 | 上 午 | 6/30 | 7/1 陳衍華 TCP/IP 310 | 7/2 黃馨瑧 DS 310 | 7/3 蔡宜璋 嵌入式處理器架構 310 | 7/4 李志賢 OS 310 | 7/5 鄧淇文 驅動程式 310 | 7/6 鄧淇文 驅動程式 310 |
下 午 | | 李志賢 OS 310 | 李志賢 黃馨瑧 專題 孫文駿 106 | 蔡宜璋 嵌入式處理器架構 310 | 黃馨瑧 程式設計(C/C++) 310 | 鄧淇文 驅動程式 310 | 鄧淇文 驅動程式 310 | |
夜 間 | | | | | | | | |
2 週 | 上 午 | 7/7 | 7/8 李俊傑 Socket程式 310 | 7/9 黃馨瑧 程式設計(C/C++) 310 | 7/10 黃馨瑧 程式設計(C/C++) 310 | 7/11 李俊傑 Socket程式 310 | 7/12 蔡宜璋 嵌入式處理器架構 310 | 7/13 鄧淇文 驅動程式 310 |
下 午 | | 李志賢 OS 310 | | 李志賢 OS 310 | 黃馨瑧 程式設計(C/C++) 310 | 蔡宜璋 嵌入式處理器架構 310 | 鄧淇文 驅動程式 310 | |
夜 間 | | | 孫文駿 Linux程式設計 310 | | | | | |
3 週 | 上 午 | 7/14 | 7/15 | 7/16 孫文駿 Linux程式設計 310 | 7/17 李俊傑 Socket程式 310 | 7/18 專題觀摩 310 | 7/19 蔡宜璋 嵌入式作業系統 310 | 7/20 鄧淇文 驅動程式 310 |
下 午 | | 李俊傑 Socket程式 310 | 黃馨瑧 程式設計(C/C++) 310 | 黃馨瑧 DS 310 | 李志賢 OS 310 | 蔡宜璋 嵌入式作業系統 310 | 鄧淇文 驅動程式 310 | |
夜 間 | | | | | | | | |
4 週 | 上 午 | 7/21 | 7/22 | 7/23 李俊傑 Socket程式 310 | 7/24 李俊傑 Socket程式 310 | 7/25 李志賢 OS 310 | 7/26 蔡宜璋 嵌入式作業系統 310 | 7/27 鄧淇文 驅動程式 310 |
下 午 | | 黃馨瑧 程式設計(C/C++) 310 | 李志賢 OS 310 | 李志賢 黃馨瑧 專題 孫文駿 310 | 黃馨瑧 DS 310 | 蔡宜璋 嵌入式作業系統 310 | 鄧淇文 驅動程式 310 | |
夜 間 | | | | | | | | |
5 週 | 上 午 | 7/28 | 7/29 | 7/30 李俊傑 Socket程式 310 | 7/31 黃馨瑧 DS 310 | 8/1 李俊傑 Socket程式 310 | 8/2 陳裕生 嵌入式Linux系統 310 | 8/3 鄧淇文 嵌入式作業系統 310 |
下 午 | | | 李志賢 OS 310 | 李志賢 黃馨瑧 專題 孫文駿 106 | 李志賢 OS 310 | 陳裕生 嵌入式Linux系統 310 | 鄧淇文 嵌入式作業系統 310 | |
夜 間 | | | | | | | |
上課內容精要!!
3.1 堆疊和佇列基本觀念
堆疊(Stack)
加入(push)與刪除(pop)於同一端。後進先出(LIFO)
例子:堆積木、蓋房子
佇列(Queue)
加入與刪除於不同端(front & rear)。先進先出(FIFO)
例子:排隊買票、坐公車
3.2 堆疊的加入與刪除
3.2.1 堆疊加入函數(top的初始值為-1)
3.2.2 堆疊刪除函數
3.3 佇列的加入與刪除
3.3.1 佇列加入函數(front、rear的初始值分別為0、-1)
3.3.2 佇列刪除函數
[ 問題 ] 佇列前端還有空位,但要加入元素卻發現此佇列已滿
[ 解決方式 ] 環狀佇列
3.3.3 環狀佇列加入函數(front、rear的初始值均為MAX-1)
3.3.4 環狀佇列刪除函數
3.4 堆疊與佇列的應用
堆疊的應用 :副程式的呼叫 (subroutine calls)
中序表示式 → 後序表示式
佇列的應用 : 作業系統的工作安排(job scheduling)
中序表示式 :「運算子」(operator)置於「運算元」(operand)的中間
Ex: A*B / C
後序表示式 :「運算子」置於「運算元」的後面
Ex:AB * C /
3.5 如何計算後序表示式
利用<運算元堆疊法>
3.6 老掉牙的應用問題
數獨遊戲 (個人經常給學生玩的數獨網站) http://oddest.nc.hcc.edu.tw/sumain.htm
Algorithm Gossip: 八個皇后
老鼠走迷官(一)
河內塔
(以上三個連結取自 良葛格學習筆記 - 困在技術撰稿人身體裡的小說家)
週別 | 星期一 | 星期二 | 星期三 | 星期四 | 星期五 | 星期六 | 星期日 | |
1 週 | 上 午 | 5/26 | 5/27 孫文駿 Linux程式設計 310 | 5/28 郭惠民 計算機組織 310 | 5/29 孫文駿 Linux程式設計 310 | 5/30 郭惠民 計算機組織 310 | 5/31 莊博景 8051微處理器 310 | 6/1 |
下 午 | 孫文駿 Linux程式設計 310 | 黃馨瑧 DS 310 | 孫文駿 Linux程式設計 310 | | 黃馨瑧 DS 310 | 莊博景 8051微處理器 310 | | |
夜 間 | | | | | | | | |
2 週 | 上 午 | 6/2 孫文駿 Linux程式設計 310 | 6/3 郭惠民 計算機組織 310 | 6/4 黃馨瑧 DS 310 | 6/5 郭惠民 計算機組織 310 | 6/6 | 6/7 | 6/8 |
下 午 | 黃馨瑧 DS 310 | 孫文駿 Linux程式設計 310 | 黃馨瑧 專題 310 | 孫文駿 Linux程式設計 310 | | | | |
夜 間 | | | | | | | | |
3 週 | 上 午 | 6/9 | 6/10 | 6/11 黃馨瑧 DS 310 | 6/12 孫文駿 Linux程式設計 310 | 6/13 李志賢 嵌入式系統概論 310 | 6/14 蔡宜璋 嵌入式處理器架構 310 | 6/15 |
下 午 | | 李志賢 嵌入式系統概論 310 | 陳衍華 TCP/IP 310 | 黃馨瑧 DS 310 | 孫文駿 Linux程式設計 310 | 蔡宜璋 嵌入式處理器架構 310 | | |
夜 間 | | | | | | | | |
4 週 | 上 午 | 6/16 | 6/17 陳衍華 TCP/IP 310 | 6/18 蔡宜璋 嵌入式處理器架構 310 | 6/19 陳衍華 TCP/IP 310 | 6/20 陳衍華 TCP/IP 310 | 6/21 | 6/22 |
下 午 | | 黃馨瑧 DS 310 | 蔡宜璋 嵌入式處理器架構 310 | 黃馨瑧 DS 310 | 黃馨瑧 程式設計(C/C++) 310 | | | |
夜 間 | | | | | | | | |
5 週 | 上 午 | 6/23 | 6/24 陳衍華 TCP/IP 310 | 6/25 | 6/26 蔡宜璋 嵌入式處理器架構 310 | 6/27 | 6/28 莊博景 8051微處理器 310 | 6/29 鄧淇文 驅動程式 310 |
下 午 | | 黃馨瑧 程式設計(C/C++) 310 | 黃馨瑧 程式設計(C/C++) 310 | 蔡宜璋 嵌入式處理器架構 310 | 黃馨瑧 程式設計(C/C++) 310 | 莊博景 8051微處理器 310 | 鄧淇文 驅動程式 310 | |
夜 間 | | | | | | | | |
6 週 | 上 午 | 6/30 | 7/1 | 7/2 陳衍華 TCP/IP 310 | 7/3 蔡宜璋 嵌入式處理器架構 310 | 7/4 方華韋 OS 310 | 7/5 鄧淇文 驅動程式 310 | 7/6 |
下 午 | | 方華韋 OS 310 | 李志賢 黃馨瑧 專題 孫文駿 106 | 蔡宜璋 嵌入式處理器架構 310 | 黃馨瑧 程式設計(C/C++) 310 | 鄧淇文 驅動程式 310 | | |
夜 間 | | | | | | |
delay的問題
//********************** 4_1.c *******************
//動作:令P10反相輸出指定時間的方波,送到喇叭發出聲音
//***********************************************
#include
void delay_1m(unsigned int dly); //宣告延時1m秒函數
main()
{
P0 = 0x04;
loop:
P1=P1^0x01; //P10和1做xor會反相,令喇叭發出聲音
delay_1m(1); //呼叫延時函數1ms,自行調整延時時間
goto loop;
}
void delay_1m(unsigned int dly) //自訂1ms延時函數
{
int count;
while(dly>0)
{
count=120; //延時1ms的空轉次數
while (count>0) count--; //延時1ms
dly--; //dly遞減
}
}//********** 4_2.c *****************************
//動作:令P10輸出方波到喇叭發出聲音,由P3決定延時時間
//**********************************************
//#include
#include "reg51.h"
unsigned int dly;
void delay (void); //宣告自定延時函數
main()
{
while(1) //不斷循環執行
{
// P1_0=!P1_0; //P10反相,令喇叭發出聲音
P1 = ~P1;
delay(); //呼叫延時函數
}
}
void delay(void) //自訂延時函數
{
dly= P3*100; //由P1輸入決定延時時間
while (dly>0) //若dly>0 則再遞減
dly--; //dly遞減
}
//********** 4_3.c *****************************
//動作:令P10輸出嗶嗶聲
//**********************************************
#include
void delay(int dly); //宣告自定延時函數
void beep(char i);
main()
{
while(1)
{
beep(1); //嗶一聲
delay(30000); //間隔時間
beep(2); //嗶一聲
delay(30000); //間隔時間
beep(3); //嗶一聲
delay(30000); //間隔時間
}
}
void beep(char i)
{
int j;
while(i>0) //嗶聲次數
{
for(j=0;j<400;j++) //令輸出反相400次
{
P1_0=!P1_0; //P10反相,令喇叭發出聲音
delay(10); /呼叫延時函數
}
delay(10000); //嗶聲的間隔時間
i--;
}
}
void delay(int dly) //自訂延時函數
{
while (dly>0) //若dly>0 則再遞減
dly--; //dly遞減
}
未解碼七段顯示器範例實習
l程式7seg.c
l修改程式使七段顯示器顯示0~9
l讓七段顯示器顯示0~9,在顯示9~0
l配合作業1的版子,用兩個PORT的輸出控制兩個七段顯示器動作做00~99的計數(SEG4.c)
作業
設計一程式,使用一個七段顯示器及一顆按鈕,設計亂數程式,按下按鈕後使七段顯示器亂數顯示1~6的其中一個數字。(參考3-82頁3_45.c使用rand()函式)