進階視窗程式設計 W1
-
Upload
samael-wang -
Category
Education
-
view
333 -
download
5
Transcript of 進階視窗程式設計 W1
視窗應⽤用程式設計⺩王哲輝
關於我
今年跳槽了
結果1: 高薪族出列!全體高薪門檻年薪138萬
55萬元
78萬元
108萬元
150萬元
189萬元
216萬元
240萬元
260萬元 260萬元
20 ~ 24歲 25 ~ 29歲 30 ~ 34歲 35 ~ 39歲 40 ~ 44歲 45 ~ 49歲 50 ~ 54歲 55 ~ 59歲 60 ~ 64歲
138萬元 紅色區塊「高薪族」,共計近2.4萬人, 金額為高薪族門檻, 若不分年齡,全體高薪族門檻為年薪總額138萬元
黃色區塊「一般族」,共計45.2萬人 排名後95%的族群
資料來源:【104高薪人才大揭密】報告
104 ⾼高薪⼈人才⼤大揭密
8
1.2% 2.3% 7.3% 17.1% 27.0% 30.7% 34.4% 37.1% 36.7%
98.8% 97.7% 92.7% 82.9%
73.0% 69.3% 65.6% 62.9% 63.3%
20 ~ 24歲 25 ~ 29歲 30 ~ 34歲 35 ~ 39歲 40 ~ 44歲 45 ~ 49歲 50 ~ 54歲 55 ~ 59歲 60 ~ 64歲
年薪總額100萬以上占比 年薪總額100萬元以下占比
結果2: 百萬黃金線!30難立! 30~34歲,僅7.3%「八零後」年薪百萬 20~34歲,僅4.8%「八零+九零」年薪百萬
104 ⾼高薪⼈人才⼤大揭密
104 ⾼高薪⼈人才⼤大揭密
結果3: 關鍵35!高下立見,薪資差距倍數擴大
55萬元
78萬元
108萬元
150萬元
189萬元
216萬元
240萬元
260萬元 260萬元
20 ~ 24歲 25 ~ 29歲 30 ~ 34歲 35 ~ 39歲 40 ~ 44歲 45 ~ 49歲 50 ~ 54歲 55 ~ 59歲 60 ~ 64歲
年薪總額差異倍數「高薪門檻/一般族中位數」 20~24歲:1.70倍 25~29歲:1.95倍 30~34歲:2.20倍 35~39歲:2.50倍 40~44歲:2.86倍 45~49歲:3.09倍 50~54歲:3.20倍 55~59歲:3.25倍 60~64歲:3.09倍
資料來源:【104高薪人才大揭密】報告
32萬元 40萬元
49萬元 60萬元 66萬元 70萬元
75萬元 80萬元 84萬元
一般族中位數(PR 50) 年薪總額曲線
差異倍數擴大
高薪門檻(PR 95) 年薪總額曲線
結果4: 一般族(中位數)薪資成長牛步化
55萬元
78萬元
108萬元
150萬元
189萬元
216萬元
240萬元
260萬元 260萬元
20 ~ 24歲 25 ~ 29歲 30 ~ 34歲 35 ~ 39歲 40 ~ 44歲 45 ~ 49歲 50 ~ 54歲 55 ~ 59歲 60 ~ 64歲
資料來源:【104高薪人才大揭密】報告
32萬元 40萬元
49萬元 60萬元 66萬元 70萬元
75萬元 80萬元 84萬元
+ 25%
+ 41.8%
+ 38.5%
+ 38.9%
+ 26.0%
+ 14.3%
+ 11.1%
+ 8.3% + 0%
+ 22.5% + 22.4%
+ 10% + 6.1% + 7.1% + 6.7% + 5%
各年齡級距比前個年齡級距的增幅 高薪門檻曲線皆高於一般族中位數曲線 一般族(中位數)薪資成長牛步化
高薪門檻(PR 95) 年薪總額曲線
一般族中位數(PR 50) 年薪總額曲線
較前個年齡級距 增幅
104 ⾼高薪⼈人才⼤大揭密
104 升學就業地圖 (248 樣本)
104 升學就業地圖 (248 樣本)
http://www.linkedin.com
http://www.ibeejobs.com
http://www.ursalary.com
結論
去註冊 LinkedIn 帳號,把 profile 寫好
找⼯工作前試著了解該公司⾏行情
考研究所前了解該校校友出路
回顧上學期
太 難
作業很困難,常常找資料的時候會沒有好的題材參考
冒出很多的英⽂文專有名詞覺得吃⼒力
個⼈人實物經驗較不⾜足 所以聽起來⽐比較吃⼒力
這…基本上⽼老師所說的都不會以致於不知困難在哪
常常看不懂英⽂文 查了資料有更多看不懂的英⽂文
…
課程⼤大綱
核⼼心主題:Model-View-Controller
作業與實習:分階段完成單⼀一專案,每⼀一階段分別計分
課程安排
W1 - MVC 概念介紹
W2 - 全天實習
W3 - 檢討作業常⾒見問題
W4 - UML 基礎與練習
軟體設計
Why? 程式不是能動就好?
半世紀以來不變的問題:
當軟體規模複雜到⼀一定程度的時候,如何測試? 如何維護? 如何應付需求變動?
⼈人⽉月神話跟只為私⼈人使⽤用⽽而單獨寫出來的組件程式(program)相⽐比,做出軟體系統產品(programming systems product)所要付出的代價將是九倍以上。
估計產品化(productizing)的代價是三倍,若要對組件從事設計、整合、測試,進⽽而凝聚成為⼀一個系統,則代價也是三倍,⽽而且這⽅方⾯面的成本計算基本是獨⽴立的。
“史前時期最駭⼈人的景象,莫過於⼀一群巨獸在焦油坑裏做垂死前的掙扎。不妨閉上眼睛想像⼀一下,你看到了⼀一群恐⻯⿓龍、⻑⾧長⽑毛象、劍⿒齒⻁虎正在奮⼒力掙脫焦油的束縛,但越掙扎,焦油就纏得越緊,就算他再強壯、再利害,最後,都難逃滅頂的命運。過去⼗十年間,⼤大型系統的軟體開發⼯工作就像是掉進了焦油坑
裏……”
– Frederick P. Brooks, Jr., 1975
物件導向核⼼心設計觀念
内聚性 (Cohesion) 耦合性 (Coupling)
關注點分離 (Separation of Concerns)
DRY: Don’t Repeat Yourself
KISS: Keep It Simple, Stupid
記得⼀一件事就好
Decoupling
何謂 PATTERN
“Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem,
in such a way that you can use this solution a million times over, without ever doing it the same
way twice”
– Christopher Alexander
MODEL-VIEW-CONTROLLER
Model is the application object. View is its screen presentation. Controller defines the way the user interface reacts to user input.
ViewModel
Controller
MVC 的特性
拆開呈現 (Presentation) 與模型 (Model) => 關注點分離
對相同的 Model 可以採取多種呈現⽅方式,⽽而不必重複實作模型
沒有 UI 的元件較容易做⾃自動化測試
單向依賴:Presentation —> Model
Model
⽉月曆
典型 MVC
事件如何傳遞?
Observer Sample
1. 僅在使⽤用者輸⼊入⾮非空字串時,Controller 才去修改Model 的內容
2. 僅在 Model 內容變動時,View 才輸出
如何修正此程式?
Observer Sample
https://github.com/freesamael/npu-java-course-spring-2015
試修正此程式,使 1. Model 產⽣生變動時可以通知 View 2. 呈上,照以下步驟替換成第⼆二種 View 類別
1. 新增 AlternativeView 類別,提供與 View 相同介⾯面 2. AlternativeView.show() 中將 Model 的字串反向印出,如
“Hello” 印成 “olleH” 3. 將 main function 中 View 替換成 AlternativeView 時,應僅需更動初始化部分,⽽而不修改 while loop 內容,也不會動到既有的 Model / View / Controller 三個類別
Observer Sample (進階)
https://github.com/freesamael/npu-java-course-spring-2015
試修正此程式,使 1. Model 產⽣生變動時可以通知 View 2. 呈上,程式碼中已包含三個 View instance,照以下步驟增加第四個 View 1. 新增 AlternativeView 類別,提供與 View 相同介⾯面 2. AlternativeView.show() 中將 Model 的字串反向印出,如
“Hello” 印成 “olleH” 3. 以 AlternativeView 增加第四個 View 時,應僅需更動初始化部分及 Window class 部分參數,⽽而不修改 while loop 內容,也不會動到既有的 Model / View / Controller 三個類別
觀察者模式
觀察者模式
近代 MVC
Android MVC 應⽤用
初學者常⾒見謬誤
Model 只包含資料儲存,缺乏 Domain Logic
將 Model 應有的邏輯實作進 Controller
將 View 傳遞⾄至 Model,由 Model 直接操作 View ⽽而產⽣生雙向相依性
BACKUP
SOLID
單⼀一功能原則 (Single Responsibility Principle)
開閉原則 (Open/Closed Principle)
⾥里⽒氏替換原則 (Liskov Substitution Principle)
介⾯面隔離原則 (Interface Segregation Principle)
依賴反轉原則 (Dependency Inversion Principle)
單⼀一功能原則
每個類別都應該只有⼀一個單⼀一的功能,並且該功能應該由這個類完全封裝起來
概念近似關注點分離
開閉原則
軟體中的元件(類別、模組、函式等)應該對於擴展是開放的,但是對於修改是封閉的
⾥里⽒氏替換原則
若 S 為 T 的⼦子型別,則 S 型別的物件應能替換 T ⾏行別的物件⽽而不影響程式功能正常執⾏行
⽩白⾺馬亦⾺馬,依然能載⼈人載貨
介⾯面隔離原則
拆分⾮非常龐⼤大臃腫的介⾯面成為更⼩小的和更具體的介⾯面,這樣客⼾戶將會只需要知道他們感興趣的⽅方法
依賴反轉原則