迷你文心蘭在2015.12.26更換介質後,過了5天發現葉子變黃了!!,於是去植栽詢問專業人員,了解到可能是更換介質時,傷到了根部,且有可能細菌感染,所以建議我使用B-1活力素幫助開根,希望迷你文心蘭能好起來.
2015年12月26日 星期六
UML (Unified Modeling Language, 統一建模語言)
UML 的作用是可以讓程式設計師在實作系統前,先規劃出整個系統的架構,像是物件與物件之間的關係,物件本身的設計等。如此可以清楚了解系統內的類別之間的關係,降低程式修改的次數。
以下是UML使用的表示圖形。
介面圖分為三層,三層的表示跟類別圖相同。
花抽象類別繼承植物抽象類別,繼承關係以空心三角形+實線表示。
文心蘭類別,實現花開介面,實現介面以空心三角形+虛線來表示。
當一個類別知道另一個類別的時候,用關聯關係。
聚合關係是一種弱的擁有關係,說明A物件可以包含B物件,但B物件不是A物件的一部分。
合成關係是一種強的擁有關係,說明了部分和整體的關係,部分和整體的生命週期一樣。
依賴關係以此例表示植物需要水和陽光,也就是植物需要依賴水和陽光。
以下是UML使用的表示圖形。
類別圖 |
類別圖分為3層:
第一層為類別名稱,如果類別為抽象,則名稱以斜體表示。
第二層為類別的屬性,int為屬性的型別,attribute前面的符號,"-"表示該attribute的存取屬性為private,另外還有"+"表示public,"#"表示protected 。
第三層為類別的方法或功能,void表示該方法或功能不回傳值。
範例如下:
類別圖範例 |
介面圖分為三層,三層的表示跟類別圖相同。
Interface Iblossoms { bool IsAlive; void Blossoms(); }
介面圖 |
花抽象類別繼承植物抽象類別,繼承關係以空心三角形+實線表示。
abstract class Flower:Plant { }
繼承表示圖 |
文心蘭類別,實現花開介面,實現介面以空心三角形+虛線來表示。
class Oncidium:Iblossoms { IsAlive = true; void blossoms() { } }
實現介面表示圖 |
當一個類別知道另一個類別的時候,用關聯關係。
class Oncidium { private Climate climate; }
關聯關係表示圖 |
聚合關係是一種弱的擁有關係,說明A物件可以包含B物件,但B物件不是A物件的一部分。
class ClusterofFlowers { private Oncidiums[] oncidiums; }
聚合關係表示圖 |
合成關係是一種強的擁有關係,說明了部分和整體的關係,部分和整體的生命週期一樣。
class Flower { private Sepal sepal; public Flower() { Sepal = new Sepal(); } }
合成(組合)關係表示圖 |
依賴關係以此例表示植物需要水和陽光,也就是植物需要依賴水和陽光。
abstract class Plant { public NatureElement(SunLight sunlight, Water water) { } }
依賴關係表示圖 |
參考書籍: 大話設計
2015年12月24日 星期四
Arduino 入門
Arduino是一個開放原始碼的單晶片微控制板 (Micro-controller Unit,MCU),微控制器是使用ATMEL公司的ATMEGA系列的晶片,主要的差異為下表 :
ATMEGA系列晶片記憶體大小比較
|
||||
記憶體容量
|
ATMEGA8
|
ATMEGA168
|
ATMEGA328
|
ATMEGA1280
|
Flash
|
8KB
|
16KB
|
32KB
|
128KB
|
SRAM
|
1KB
|
1KB
|
2KB
|
8KB
|
EEPROM
|
512bytes
|
512bytes
|
1KB
|
4KB
|
腳位0,1:序列通訊,RX為接收,TX為傳送。
腳位3,5,6,9,10,11:PWM類比輸出 (PWM, Plus Width Modulation) 。
腳位0-13:數位輸入或輸出。
GND為接地接腳,也代表電池的負極。
AREF為類比參考。
腳位A0-A5:類比輸入(也可以做為數位I/O之用)。
Vin:連接至9-15V直流電壓輸入。
GND為接地接腳。
3.3V和5V為電壓輸出。
RESET重置。
Arduino程式的結構包含setup()及loop()兩個函數:
setup()用來初始化變數、設定接腳模式為輸入或輸出等。在每次通電或重置Arduino電路板時,setup()只會被執行一次。
*電阻 : 一般LED只需要1.7到4伏特,但使用的電池的電壓有5伏特,所以要確保LED不會接收過多的電流,就會使用電阻,來阻止過多的電流到LED
void setup() { }
void loop() { }loop()用來控制Arduino電路板執行所需的功能,loop函式執行完,會一直被重複呼叫執行,直到關閉電源。
*電阻 : 一般LED只需要1.7到4伏特,但使用的電池的電壓有5伏特,所以要確保LED不會接收過多的電流,就會使用電阻,來阻止過多的電流到LED
2015年12月21日 星期一
[WPF] 從Access檔案直接轉成類似Excel的圖表呈現 (有提供原始碼)
加入參考System.Windows.Controls.DataVisualization.Toolkit
在開頭引用參考
<window xmlns:DVC="clr-namespace: System.Windows.Controls.DataVisualization.Charting; assembly=System.Windows.Controls.DataVisualization.Toolkit">
參考下圖程式
using System.Collections.Generic; using System.Windows.Controls.DataVisualization; using System.Windows.Controls.DataVisualization.Charting; //宣告變數 var listmed = new List>(); var listatten = new List >(); var listdelta = new List >(); var listtheta = new List >(); var listalpha1 = new List >(); var listalpha2 = new List >(); var listbeta1 = new List >(); var listbeta2 = new List >(); var listgamma1 = new List >(); var listgamma2 = new List >(); //圖表的數值 for (int i = 0; i < 180; i++) { listmed.Add(new KeyValuePair (int.Parse(cn.txt_meditation[i]), i + 1)); listatten.Add(new KeyValuePair (int.Parse(cn.txt_attention[i]), i + 1)); listdelta.Add(new KeyValuePair (int.Parse(cn.txt_delta[i]), i + 1)); listtheta.Add(new KeyValuePair (int.Parse(cn.txt_theta[i]), i + 1)); listalpha1.Add(new KeyValuePair (int.Parse(cn.txt_alpha1[i]), i + 1)); listalpha2.Add(new KeyValuePair (int.Parse(cn.txt_aloha2[i]), i + 1)); listbeta1.Add(new KeyValuePair (int.Parse(cn.txt_beta1[i]), i + 1)); listbeta2.Add(new KeyValuePair (int.Parse(cn.txt_beta2[i]), i + 1)); listgamma1.Add(new KeyValuePair (int.Parse(cn.txt_gamma1[i]), i + 1)); listgamma2.Add(new KeyValuePair (int.Parse(cn.txt_gamma2[i]), i + 1)); } //將數值顯示在圖表上 ((LineSeries)mcChart.Series[0]).ItemsSource = listmed; ((LineSeries)mcChartatten.Series[0]).ItemsSource = listatten; ((LineSeries)mcChartDelta.Series[0]).ItemsSource = listdelta; ((LineSeries)mcChartTheta.Series[0]).ItemsSource = listtheta; ((LineSeries)mcChartalpha1.Series[0]).ItemsSource = listalpha1; ((LineSeries)mcChartalpha2.Series[0]).ItemsSource = listalpha2; ((LineSeries)mcChartbeta1.Series[0]).ItemsSource = listbeta1; ((LineSeries)mcChartbeta2.Series[0]).ItemsSource = listbeta2; ((LineSeries)mcChartgamma1.Series[0]).ItemsSource = listgamma1; ((LineSeries)mcChartgamma2.Series[0]).ItemsSource = listgamma2;
程式範例操作步驟
選擇檔案
路徑G:\ExcelFigure\ExcelFigure\bin\Debug\brainwave\m1
點選加入的檔案
點選下拉式選單選擇想看的數值資料
結果呈現
2015年12月19日 星期六
[WPF] 提示畫面功能Splash Screen
SplashScreen splash = new SplashScreen("img.png") //splash.Show(true)表示提示圖片顯示後會自動消失,若把true改為false,提示圖片會一直顯示,直到執行splash.Close(new TimeSpan()) splash.Show(true); //從開始消失到完全不見的時間為5秒 splash.Close(new TimeSpan(0,0,5));P.S., SplashScreen只能用於顯示圖片的提示,不能做文字提示
2015年12月18日 星期五
[WPF] Model-View-ViewModel (MVVM)
MVVM 是 Model-View-ViewModel 的縮寫, 是一種撰寫程式設計的方式,以MVVM的方式撰寫程式,可以降低程式之間的相依性,使每個程式負責的內容分工的很清楚;使用者介面程式歸使用者介面程式,商業邏輯程式歸商業邏輯程式,資料歸資料,在日後的修改、維護上比較容易。下圖為MVVM的示意圖,上層是較接近跟使用者的互動,下層是較接近程式設計者。
*注意:上圖中的箭頭是有意義的,上層的物件可以向下存取,但是下層的物件並不會知道上層的東西長什麼樣子,透過此原則,才得以做到乾淨的分層與鬆散藕合。
各層分工如下:
·
Model : 用來描述資料實體(Entity)的簡單類別(Class),也可以在這邊實作商業邏輯以及與資料庫溝通等資料存取相關的功能。
·
View : 其實就是XAML檔,也就是使用者介面,使用者介面設計人員只需要在Blend中進行對它的編輯,並透過Binding來和ViewModel溝通(DataContext指定為某個ViewModel,以更進一步的與其中的屬性進行Binding)。
·
ViewModel : 就是供View使用的Model,透過公開的屬性(public property) 給View進行Binding,供其使用。
內容部分引用來自 :
https://www.dotblogs.com.tw/ouch1978/archive/2011/04/23/introducing-mvvm.aspx
http://blog.sanc.idv.tw/2011/12/wpf-mvvm.html
範例原始碼 Source Code
緣起性空,行所當行,受所當受
敦珠仁波切:「雖然你可以看到各式各樣的現象,實際上它們的本質卻是空的;但在空中,你卻可以看到各式各樣的現象。雖然可以聽到各種聲音,這些聲音卻是空的;但在空中你卻可以聽到聲音。
各種念頭會升起,這些念頭都是空的;但在空中,你卻可以知道你有念頭。
不管你看到什麼,聽到什麼,都不要去理會,不要去執著。讓聽留在聽中,讓看留在看中,而不要讓你的執著進入覺受之中。
出自:西藏生死書
2015年11月26日 星期四
[WPF] C# 讓控制項根據不同電腦的畫面(解析度)調整大小和位置
Step 1. 要把"Grid"設定高度跟寬度 ,這樣之後再加入其他控制項會比較好調整大小.
Step 2. 在XAML加入則就不會動態調整大小了.
訂閱:
文章 (Atom)