--- tags: 視窗程式設計 --- # 視窗應用程式介紹 各位同學大家好,我們這學期視窗應用程式設計課程,主要利用 Visual Studio Communuity 2019 與 C# 程式語言,幫助同學學習建立基本的 ==**「視窗應用程式」**(以後我們會簡稱它**視窗程式**)==,我們預計的主題包括: * C# 程式語言回顧 * 建立簡單計算機程式 * 檔案處理程式 * 資料庫連接與查詢程式 我們預計學期末同學可以具備以下能力: * 基本視窗應用程式的建置能力 * 加強 C# 語言能力 * 資料庫程式設計基礎 # 為什麼要學習視窗應用程式? 現在其實很多程式應用都會以 Web 網頁方式來設計使用者介面,工具有很多,從最簡單的 HTML 表單到複雜的網頁框架都有(例如:React.js、Vue.js 等)。 但是視窗應用程式有不少公司內部的系統仍然會用到,尤其更重視安全性的公司,可能 ERP 系統都還是單機版應用程式。如果公司開發單機的應用軟體,也一定是要寫視窗程式,而且只要微軟繼續開發 Windows 作業系統,視窗程式永遠都會存在。 :::info Windows 至少這十幾年內都會存在,除非,大家都不用個人電腦了,這種可能性太低了 ::: # .NET Framework 基本介紹 .NET Framework的介紹其實[維基百科](https://zh.wikipedia.org/zh-tw/.NET%E6%A1%86%E6%9E%B6)就有 ... > .NET Framework是由微軟開發,一個致力於敏捷軟體開發(agile software development)、快速應用開發(rapid application development)、平臺獨立性和網路透明化的軟體框架。.NET是微軟為2000年代對伺服器和桌上型軟體工程邁出的第一步。.NET包含許多有助於網際網路和內部網套用迅捷發的技術。 > > .NET Framework是微軟公司繼Windows DNA之後的新發平台,採用系統虛擬機器運行,以通用語言運行庫(Common Language Runtime)為基礎,支援多種語言(C#、F#、VB.NET、C++、Python等)的開發。 > >.NET也為應用程式介面(API)提供了新功能和發工具。這些革新使得程式設計員可以同時進行Windows應用軟體和網路應用軟體以及元件和服務(web服務)的開發。.NET提供了一個新的反射性的且物件導向程式設計編程介面。.NET設計得足夠通用化從而使許多不同高階語言都得以被匯集。 以上會不會看不懂?看不懂很正常,畢竟如果你程式語言寫得不多,也大概很難理解上面在說甚麼? 簡單來說,如果你要設計一個電腦軟體,無論用甚麼程式語言,必須要可以把寫好的程式轉成作業系統可以跑的執行檔(這個動作叫「編譯」)。但是作業系統很多種,你設計的軟體不一定能在不同的作業系統執行。不同的程式語言,也不見得可以「編譯」成任何一種作業系統可以執行的軟體。 所以假如你寫「某個 A 程式語言」的程式,必須確定這個程式要執行的作業系統,具有 A 程式語言可以執行的環境。換句話說,這個 A 程式語言寫好的程式,它不一定可以「跨平台」。 .NET Framework 就是一個微軟提出的「跨平台」程式開發平台,只要是 .NET Framework 支援的程式語言  # 視窗應用程式開發技術 目前比較常見的視窗應用程式開發技術大概就這幾種: * Windows Form * Windows Presentation Foundation (WPF) * Python (搭配套件:Tkinter、PyQt等等) ## Windows Form ==不要問老師為什麼沒有中文翻譯,因為我還真的沒看到有誰在翻譯這個。:joy:== 早期要開發視窗程式,其實有點麻煩,因為你需要瞭解微軟作業系統(也就是我們熟悉的 Windows)的系統底層,要知道作業系統是怎麼「畫」出使用者介面(User Interface, UI)。 換句話說,你不只是要寫你的程式邏輯,可能是要處理檔案、查詢資料庫的資料、等等,還得想怎麼把資料呈現在螢幕上面。這樣開發的時間會很長,而且可能因為 UI 設計問題搞很久,真正需要好好寫程式邏輯的部分就很難兼顧。 所以,微軟幫你想好一個辦法,他把常見的 UI 介面整理起來,然後幫你做好工具來控制,你只要大概拉一拉你需要的視窗介面,剩下就只是設定好基本的操作邏輯,然後加上程式邏輯就可以很快的做出一個軟體。  像以上的視窗畫面,你只要大概拉一拉就可以做好一個簡單介面 ## Windows Presentation Foundation (WPF) 同樣的,我也不知道這個中文翻譯是什麼? 前面所說的 Windows Form 歷史很悠久,至少 2002 年開始就有這樣的開發工具可以使用,雖然可以很快速的開發軟體,但如果你要自訂它的介面很麻煩。 所以後來微軟在 2006 年提出了 WPF,它使用 .NET Framework 3.0 及以後版本,基於 XML、.NET Framework、向量繪圖技術的開發框架,微軟視其為下一代使用者介面技術。 和之前的 Windows Form 最大的差別在於:介面可以直接使用 XAML(其實就是 XML)來設計,只要美術設計師知道怎麼用 XML 設計介面,就能設計各種漂亮的 UI,程式設計師也可以專心在程式邏輯上的設計。 :::info 簡單來說:Web 開發常見到的 RWD 設計方式,在視窗上的 RWD 就可以用 WPF 來達到,同樣的也能給視窗程式增加漂亮的動畫與界面設計 :::  WPF 技術可以讓你做到以上這種介面 ## Python (搭配套件:Tkinter、PyQt等等) 其實這幾年因為 Python 這個語言相當流行,尤其在 AI 人工大數據領域等於是必學,但其實 Python 可以做的事情很多,包括建立視窗程式。  Python 要建立視窗程式主要透過套件,例如 Tkinter、PyQt 等,這些套件仍然還在發展中,並且還沒有哪一個套件成為主流。 並且各位同學一年級都至少學過 C++ 或 C#,如果要用 Python 製作視窗程式,還得學 Python,為了減少同學負擔,我們課程會以微軟的 WPF 為主。 同學要是之後有學習 Python,又需要建立簡單的視窗介面供使用者使用,雖然你也可以用 Winform 或 WPF 來跑 Python 程式,不過 Tkinter、PyQt 等套件你也可以參考使用。如果你想要學習 PyQt,可以參考這個[STEAM 教育學習網](https://steam.oxxostudio.tw/category/python/index.html) # 業界有沒有需要視窗應用程式人才? :::info 先講答案:一定有! ::: 例如你可以搜尋 [104 人力銀行網站](https://www.104.com.tw/jobs/search/?ro=0&keyword=WPF%20WinForm&expansionType=job&order=1&asc=0&page=1&mode=s&jobsource=2018indexpoc&langFlag=0&langStatus=0&recommendJob=1&hotJob=1),至少都有 300 筆以上的資料,代表仍然都有相當的人力需求。 雖然需求沒有像網頁前端、後端那麼多,但始終都是穩定的需求,如果同學願意繼續學習,你在視窗應用程式的知識,部分都能運用到網頁前端技術、行動裝置 App 開發、甚至是遊戲設計上。 老師自己第一份工作其實也是視窗應用程式最多,在這領域上學到的東西,其實在很多領域都用的著。 前面也曾說過,在一些講究資訊安全、系統穩定的公司,公司內部系統不見得是 Web-Based 的,可能會以視窗應用程式為主要的系統架構。另外 WPF 技術其實國外比台灣更受歡迎,外資企業可能更重視像這樣的視窗應用程式技術,同學若有志於外資企業或者出國深造,瞭解這樣的技術對你來說一定有很大幫助。 最後,視窗程式也只是眾多 UI 程式的一種,背後的程式邏輯其實更為重要,因為那代表著某個業界領域的資訊處理與管理的流程 Know-How,假如同學未來想在資訊系統開發有一定的能力基礎,只要先熟習一種 UI 程式的設計,之後要轉到別的領域都不會太難。 # 熟悉 Visual Studio 與 C# 就算你對視窗應用程式開發興趣不高,但是只要是微軟的產品,C# 就是主要的開發語言,你也可以藉由學習本課程對 C# 有進一步的認識。 Unity 遊戲引擎主要語言也是 C#,對 C# 夠熟悉也能越來越了解遊戲程式開發。 這幾年 Visual Studio 也結合生成式 AI,換句話說越來越方便的 GitHub Copilot 已經逐漸成為開發應用程式的重要輔助,我們也希望藉由這個課程讓同學慢慢認識如何使用生成式 AI,幫助同學學習程式語言與開發應用程式。
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.