Visual Studio小技巧(1)-快捷鍵整理

    Visual Studio發展到了2019版本,現在已經愈來愈好用,跟舊版本比起來真的有很大的差異。在使用Visual Studio如果能夠善用一些小技巧,對於寫程式非常有幫助,對初學者而言這些小技巧是很重要的,如果不會還是可以寫程式,但是學會這些小技巧,寫程式就可以更快速,使用快捷鍵就是一個很重要的小技巧,在這裡整理出好用的Visual Studio快捷鍵給大家,希望對大家有幫助。

 

 

快捷鍵整理

 

儲存: Ctrl + S
 
儲存全部檔案:Ctrl +Shift + S
 
複製:Ctrl + C
 
貼上:Ctrl + V
 
循環貼上:Ctrl +Shift + V
說明: 使用循環貼上,會一個一個顯示你之前所複製的內容,重複按Ctrl+Shift+v就會一直循環下去,注意選好以後按一下方向鍵或是滑鼠隨便找一個地方點一下,如果按下enter的話內容會消失。
 
建置專案:Ctrl +Shift + B
 

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

    最近也面試了很多公司,而我這個月1日其實已經開始上班了,地點離家近,一樣做程式設計工作,由於之前有一家已經要準備去上班的上市公司拖拖拉拉,先是說面試流程要10~15天,後來又跟我說一定要先Email離職證明才能開始跑人事流程,最後決定我就不去報到,到現在任職的這家公司上班。這家公司我周五說要去上班,下周一就可以立即上班了,要跑人事流程10~15天的公司實在太誇張了,很明顯有問題,搞不好最後變成不錄取,所以不去。
    剛到新公司上班雖然說不會太忙,但是因為已經開始上班,並且我有時間要多練習程式,所以可能暫時不會有新的程式教學文章,之後有時間還是會陸續更新,敬請期待,謝謝。


波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

Static 靜態

 

    在物件導向程式中,static靜態的意思就是共享,大家都是一樣的,如果設定為static的內容做變更,那是所有人都會跟著一起變,不是只有一個人變而已。

    例如我把公款設為static,今天公司某個部門辦活動用到公款,公款本來有1,000,000減少10,000元,變成990,000元,那是所有人的公款都減少,不會因為只有幾個人用了這個款項,所以只有那幾個人的公款減少,因為公款本來就是公司裡大家都共用的。那如果今天部門辦活動,他們是自己自挑腰包辦活動,而不是用到公司公款,那麼會減少的那是個人財產,如果王小明和李阿呆這二個人出錢辦活動,那麼就是這2個人的個人財產減少,個人財產就不會是static,因為那並不是大家共享的。

    或是今天公司老闆設為static,假設公司老闆叫做郝有錢,那麼這家公司所有員工的老闆都是叫做郝有錢,並不會問小明老闆是誰?他說老闆是郝有錢,問小美老闆是誰?她回答老闆是甄試棒,因為大家的老闆就是只有一個人,就是郝有錢。當然老闆會換人,如果今天換老闆了,新老闆就做郝郝孝,那麼公司老闆就變成了郝郝孝,大家的老闆都叫做郝郝孝。

    static就是如此,static的特性就是大家共用,如果變動的話大家都跟著變,不會只有一個人變而已,並且要記得,static就跟真相一樣只有一個。

    善用static可以讓程式變得簡潔並且會很好維護,我舉上面的例子可能大家不會很了解,之後我再寫一些程式範例相信大家會比較能夠弄懂這個觀念。


波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

盡全力完成不可能的任務-姊的時代


   最近華視在重播「姊的時代」這部戲,這部連續劇我早就已經全部看完了,真的是非常好看又勵志的一部戲。
      我非常喜歡劇中的主角周凱婷,愛U網的行銷部副總,常常遇到上司不合理的要求,要在期限之內完成目標,聰明又有頭腦的周凱婷總是想盡一切辦法來達到目標,當她遇到困難時不是光抱怨,而是想辦法解決問題,儘管還是有抱怨但是都不多,當別人一直在罵老闆時,周凱婷只說:「抱怨有用嗎?抱怨就可以解決問題嗎?」真的是一個非常冷靜不容易情緒化的一位女性。
       周凱婷總是能夠在短時間內讓公司業績成長,工作能力非常強,而且從小就是甚麼事情都要想辦法拿到第一名,這種好強的個性也讓她在工作時一帆風順,不斷往上爬,一路升到副總的職位。周凱婷她也是一位非常負責任會善待員工的主管,她說保護員工是她的責任,永遠會為員工著想,公司要她提出裁員名單,哪一個要走都讓她覺得心疼,最後她也找到的解決的方法,威脅老闆整個行銷部的要跳槽到另一家公司,不然就加薪10%,真是難能可貴的一位好主管。
      人生中總是會遇到一些困難,想辦法去克服,而不是只有抱怨,人有情緒會抱怨可以,但不要浪費太多時間在抱怨,而是應該要想辦法解決問題,頭腦要轉得快,問題總是有解決的方法,周凱婷就是如此,把一些不合理的事情當做是一種挑戰,克服了以後就會有所成長。台灣社會上很多紛紛擾擾,近幾年勞工大大小小的抗爭不斷,說公司不好,說工作太過勞,其實過多的抱怨真的不會讓自己有成長,心境要會轉,想辦法當成是磨練和挑戰,相信走過了以後就會發現路還是很寬廣,過去的這些事情也沒甚麼大不了的,應該多學學周凱婷這種面對困難的態度,好好地想辦法解決問題,而不是只會抱怨。   


文章標籤

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

    大家好,由於本人最近都在面試程式設計師的工作,所以部落格都沒有更新,現在已經有公司錄取了,還在考慮要不要去上班,等之後比較有空我會繼續更新部落格,謝謝。


波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

程式設計作品總整理

 

   我的部落格以程式設計文章為主,有做一些程式設計的作品,整理如下:

 

C#

 

撲克牌猜大小遊戲

終極密碼遊戲


波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

例外處理Exception (一)

 

   例外處理Exception在程式語言中是比較進階的內容,而一個好的程式會善用例外處理來告訴使用者錯誤訊息,在程式寫好要上線時,就應該要做好例外處理,使用者才不會不知道哪裡操作錯誤。

   例外處理的程式語法如下:

 

    try { //程式在執行時可能發生錯誤的地方 }

    catch (Exception ex) { //程式發生錯誤時會執行的區塊,通常是告知使用者操作錯誤}

    finally { //不論程式是否發生錯誤都一定會執行的區塊 }

 

上面程式中的try…catch…是例外處理程式中一定要有的部分,try是一定會和catch一起出現的,而finally則是可有可無,舉例如下:

 

static void Main(string[] args)

{

            int answer, a, b;

            a = 20;

            b = 0;

                       try

            {              

                answer = a / b;

            }          

文章標籤

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

程式設計常用名詞解釋整理

現在求職去面試時常常會需要先筆試,筆試可能會考一些名詞解釋,以下為大家整理筆試時常出現的名詞解釋考題,適用於應徵ASP.NET使用C#的職缺,另外C++或JAVA的職缺也適用。

物件導向程式設計:物件導向程式設計(Object oriented programming,OOP)是使用抽象化的概念來實現程式設計模型,以物件做基礎,最基本的概念就是物件和類別,說明如下:

類別(Class)-類別就是把事物做分類,有相同行為的放到同一個類別,類別是抽象的,看不到也摸不著,屬於靜態,不是實體。

物件(Object)-物件是一個看得見也摸得到的實體,屬於動態,狀態會變但是行為是不變的。

 

封裝(Encapsulation):把程式碼分割成不同類別,把沒必要的資訊隱藏,有必要的資訊才會公開可以共用。

 

繼承(Inheritance): 使用其他類別的屬性和行為,以避免重複程式碼。在物件導向程式設計中,類別下面可以有子類別,子類別可以使用上面父類別的屬性和行為,稱做繼承。

 

多型(Polymorphism):意思是一件事物有多種不同的樣貌,在物件導向程式語言中一個方法在不同類別中會有不同的內容,就叫做多型。 

 

sql injection:在輸入字串資料時,使用者故意輸入SQL指令來攻擊系統,對系統的安全性造成威脅,常見的情況是登入時略過權限檢查就登入,或是刪除整個資料庫。

若要防止sql injection,最基本的做法就是一定要使用參數化查詢,程式中使用SQL指令絕對不可以出現",否則就很容易被攻擊,這是最基本的防護。

 

single sign on:在一家公司中可能有好幾個系統,每個系統都使用不同帳戶一個個登入非常麻煩,而single sign on是把這些帳號整合成一個帳號,以後所有的系統要登入就使用這一個帳號就好,此帳號會自動在系統中去映射到每個人各個系統的帳號,這樣就可以做到一個帳號就能登入所有系統。

有single sign on那就也會有single sign off,就是只要我一個系統做登出了,這個人就會所有系統都登出,而不必每個系統都還要一個個登出,以節省時間。

 

stored procedure:使用MS SQL Server時,有些TSQL會一直重複用到,但是使用的參數會不一樣,使用stored procedure就是把TSQL先寫好,並且指定有哪些參數可以調整,這樣以後要用到時就叫出來使用,把參數改一改就好了。

 

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

Global全域

Stack堆疊

Heap堆積

 

這一篇來和大家介紹一下C#的程式觀念,有關於記憶體空間,分成了三種-globalstackheap

 

Global全域:

存放

全域變數(global variable)

靜態變數(static variable)

程式編譯時會優先配置global的記憶體,因為優先配置的特性,使用global可以提升程式的效率,但是global沒有存活周期,程式啟動時就會佔用記憶體,一直到程式結束才釋出記憶體,因此使用global會造成容易耗用記憶體的問題。

 

Stack堆疊:

靜態記憶體配置,這是可預測的記憶體配置方式。

存放值型別(value type)資料

區域變數(local variable)

函式參數(function/method parameter)

函式的位址(function/method return address)

Stack是採用先進後出,最先進去的最後出來,最後進去的反而第一個出來,最後才宣告的變數會先被回收釋放出記憶體空間,先宣告的變數會之後才被回收。由於Stack的生命週期是規律的,可以知道甚麼時候就不會在使用了,因此系統在生命週期結束以後就會自動回收釋放出記憶體。

 

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

撲克牌猜大小遊戲-C#

 

    這是一個很簡單的撲克牌遊戲,適合有一定程度的初學者練習,猜撲克牌的大小或是牌色,而且可以下注,猜對的話贏得籌碼,猜錯輸掉籌碼。

 

遊戲畫面如下:

遊戲一開始畫面,按下發牌。


按下發牌以後輸入你要押注的金額,然後選擇你要押哪一個,大牌、小牌、黑色牌、紅色牌,點選按鈕看結果。


押對的話籌碼就會增加。


押錯的話籌碼就會減少。


如果不幸的籌碼變成0,那你就破產了,要按重新開始,遊戲就會開新的一局,就可以繼續遊戲。


波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

Array陣列和List串列

 

    上次介紹了C#資料結構中的quene和stack,這次來介紹在C#資料結構中的array陣列和list串列。

    程式語言中,有時候需要存放好多個數值,而這些數值都是相同的類型,這時候一個一個變數宣告那實在是太花時間了,有沒有其他的方法呢?當然是有的,可以使用array陣列。

    今天如果我要輸入成績資料,我就可以宣告一個array陣列[成績],這個array陣列會使用連續記憶體,並且要設定array陣列要存放多少筆資料才能使用,可以存放多少筆資料這在程式上叫做這個陣列的大小,如果超出array陣列大小範圍的話就不能存放資料了,所以在設定array陣列大小時數字要注意不要太小。在宣告array以後,裡面的內容會先給一個預設值,不同的資料型態預設值不同,如果宣告array的資料型態是int整數的話,那麼預設值是0,所以即使陣列裡面的內容都還沒有設定數值,呼叫陣列裡面的第幾筆資料時都還是會有東西,只要沒有超出這個陣列大小的範圍就會顯示預設值,就好像1~100號成績都先預設為0,然後一筆一筆的去改每個人成績應該是多少。

    那可不可以我不要一開始設定我最多有多少筆資料,而是資料筆數可以增減呢?那可以使用list串列,使用list串列不需要使用連續記憶體,也不用告知要存放多少筆資料,可以增加和減少資料筆數,是一筆一筆增加資料,不像陣列告知有多少筆資料以後先給每一筆資料一個預設值,如果我只增加到第3筆成績資料,然後要取得第4筆成績資料在list中是不行的,而在陣列中我只設定到第3筆成績資料,然後要取得第4筆成績資料是可以的,你會得到預設值0。用list來輸入成績資料,就好像給你一個空白的成績表,上面都沒有內容,你要一筆一筆的把成績寫上去,也不需要先告知有多少筆成績資料,不必擔心不夠寫。使用list一個很方便的地方是移除一筆資料,後面資料就會自動往前移,就好像排隊時有一個人他不排了,後面的人就自動往前,array就沒有辦法這樣了。

 

整體來說,array和list有下面幾點不同:

1、array使用連續記憶體空間,list不需要使用連續記憶體空間。

    array就好像找一塊地搭帳篷,把帳篷搭在一起,而list則是搭帳篷但不搭在一起,會找好幾塊地搭帳篷。array在搭帳篷時地要找的夠大,不然帳篷太多就沒地方搭了,而list沒有這個問題,因為帳篷並沒有搭在一起,所以要再增加帳篷並不困難

2array的速度快,而list的速度慢

   array使用連續記憶體,帳篷都搭在一起,所以要走過所有帳篷會很快,而list不使用連續記憶體,帳篷沒有搭在一起,要走過所有帳篷當然就比較慢。

3array不能新增或刪除元素,但是list可以

   array的特性是一開始就宣告好多少筆資料,並且會給預設值,就好像找一塊地搭帳篷,已經告知園區我要搭多少個帳篷,園區已經把帳篷的位置一格格都畫好了,事先說好可以搭幾個帳篷,錢已經付好,如果要增加或是減少可搭帳篷的地方都不行,但是list不一樣,不需要宣告有多少筆資料,好比我在自己家的土地搭帳篷,所以我要增加一個搭帳篷的地方或是減少一個搭帳篷的地方都可以。

 

相關文章

Quene隊列和Stack堆疊


文章標籤

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

委派(Delegate)

 

    委派(Delegate)在程式設計中算比較進階的觀念,還是有很多機會用到。委派的意思是把工作派給別人去做,就好像是經紀人或是仲介的概念,把事情委託給經紀人或仲介處理。更精確地講,委派就是將方法定義為參數,指定要傳入的參數,程式中的方法交給委派來處理,而不是自己處理。

           舉一個程式的例子和大家做說明,今天我要做一個產生數字的程式如下:

 

public static int[] GetRandomNumber(int maxno,int amount)   //產生亂數的方法

        {

            Random random = new Random();

            int[] nums = new int[amount];

 

            for(int i=0;i<amount;i++)

            {

                nums[i] = random.Next(0,maxno);

            }

            return nums;

        }

 

在這裡特別說明一下Random是一個產生亂數的方法,random.Next(數字A,數字B)表示產生範圍從(數字A)(數字B-1)這個範圍的亂數,特別要注意範圍的最大數字為(數字B-1)

 

以上這個方法就可以產生自訂數量,自訂範圍內的亂數,把這一段程式丟給委派來做。

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

Enum Switch

 

在上一篇,和大家介紹了enum列舉,而enum在應用上常和switch做搭配。

 

switch是一個用來取代if else的方法,寫程式可以不會用switch只用if else,這結果其實是相同的,但如果不使用switch,只會使用if else,這樣會造成程式變得很長,所以還是應該要會使用switch比較好。這篇文章的重點不在介紹怎麼使用switch,如果對switch還不熟悉的朋友可以自己上網學習甚麼是switch

switch也可以不需要和enum搭配使用,結果其實是一樣的,但是好的程式要讓人容易理解和好維護,使用enum的目的就是可以讓程式較好理解,讓程式較好維護,才不會程式一時之間看不懂,還要再去看衍生的程式。

舉個例子會比較好理解。

今天我要做一個投注系統,依照使用者的輸入來增加使用者的下注金額,程式如下:

//現在下注的金額

int mybet = 0;

 

//賭注金額增減

private void BetMoney(int money)

{

            //依照不同的狀況,增加玩家的下注金額

            switch(money)

            {

case 0:

                    mybet = 0;

                    break;

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

Quene隊列和Stack堆疊


    今天來跟大家談談C#資料結構,有2個觀念很重要,叫做Quene隊列和Stack堆疊。

 

Quene隊列

    Quene隊列的意思其實就跟它的名稱一樣,是一種先進先出(First in first out)的概念,這就跟買東西要排隊一樣,先到的人先買然後先離開,後到的人後買後離開,因為就和排隊一樣照順序,所以稱做隊列。在Quene隊列中要把資料放進去叫做push,而要把資料取出叫做pop。

 

Stack堆疊
    Stack堆疊也是意思和他的名稱一樣,是一種先進後出(First in last out)的概念,最先到的人反而是要最後離開。這其實就好像球桶,把籃球或是網球放入球桶裡面,如果要把球拿出來,這時候就要從最上面的開始拿,沒辦法從最下面的開始拿,一個一個疊上去,先放進去的後拿出來,後放進去的先拿出來,所以叫做堆疊。在Stack堆疊中要把資料放進去叫做Enqueue,而要把資料拿出來叫做Dequeue。

 

資料類型

Quene

Stack

定義

先進先出

先進後出

新增資料

Enqueue

Push

文章標籤

波羅、希夏普2020 發表在 痞客邦 留言(1) 人氣()

GetPost

 

Get-明信片;

Post-郵件;

 

Get和Post是網頁傳遞資料的方式,2種方式傳遞不同類型的資料。

Get是把要傳遞的資訊寫在http-header,這個資訊是會被別人看到的。可以把get想成是明信片,如果使用get會把要傳送的資訊寫在url上,是用query string的方式來傳送資料,也就是上網時常常可以在網址上看到「?name=xxx」,這樣外人都可以看到要傳的資料。

Post是把要傳遞的資訊寫在message-body,不會被別人看到。可以把post想成是郵件,使用post就把地址url寫在信封上,內容則是寫在信紙上,信紙裝進信封以後交給郵差傳送,外人就看不到這個信件的內容。

在網頁設計上,一些重要資料就應該要使用post而不應該使用get被人看到,像是在做登入的時候,登入的資訊當然應該要使用post,因為帳號密碼不應該顯示在網址上被人看到,其實結果都一樣,但是如果用get,那麼很顯然你就是經驗不足的程式設計師。在網頁上做查詢功能的時候,這種狀況就可以使用get,因為查詢的資訊顯示在網址上其實是沒關係的。

雖然使用get和post結果是一樣的,但是在安全性上會有很大的差異,所以在設計網頁時就一定要了解這2種方法的差異。


波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

C#程式教學文章總整理

 

    我的部落格以介紹程式設計為主,最近寫了C#程式設計教學的文章,整理如下:

 

索引子 get;set;

列舉 enum

Enum和Switch

委派(Delegate)

例外處理Exception (一)

 


文章標籤

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

列舉 enum

    列舉enum是一種有效率的方式給一組變數各別的整數,並且可以不必一一指定。

    舉一個最簡單的例子,如果我要設定周日到周六這七天,周日為0,周一為1這樣以此類推,如果不用列舉,我可能要設一個struct,然後一筆一筆的設定,這樣的方式很不方便,若是我使用列舉,情況就不一樣了。

 

使用列舉我只需要像下面這樣子宣告:

enum Week { Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}

 

這樣子我就宣告好了,我們可以測試一下。

 Console.WriteLine(Week.Sunday + "," + (int)Week.Sunday);

 Console.WriteLine(Week.Monday + "," + (int)Week.Monday);

 Console.WriteLine(Week.Tuesday + "," + (int)Week.Tuesday);

 

輸出結果會是下面這樣:

 Sunday,0

 Monday,1

Tuesday,2

 

    有一個地方要注意一下,可以看到在這裡如果是Week.Sunday會印出文字,而 (int)Week.Sunday會印出數值,enum會給每個變數一個數值,Week.Sunday會是變數名稱,而當你想要得到這個變數名稱的數值就要用(int)來做轉型。

 

文章標籤

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

低薪真的是國恥嗎?

 

       台灣的薪水低,大家叫苦連連,很多人都要抱怨薪水太低,過去也有很多人為了低薪的問題走上了街頭,大喊:「低薪是國恥」。

    低薪真的是國恥嗎?我有不同的看法。

    過去台灣22K政策,造成了很多人的薪水只領22K,一時之間大家都在罵22K政策搞得大家都低薪,薪水太低了很難生活,大家都一直在吵基本工資應該要提高,物價漲但是薪水卻一直都不漲日子難過。

    其實我是覺得台灣的媒體實在是很沒有文化,不去做一些深入的報導,就隨便斷章取義隨便亂報,然後大家亂看也就信以為真,22K確實造成了台灣的低薪現象,但這不見得真的是不好的政策。其實我有看到少數的新聞對22K有比較深入的報導,22K政策是一個非常時期採取的方式,因為景氣不好,怕大家找不到工作,22K這個政策讓大家先有工作可以做,之後薪水再慢慢提高,結果配套措施沒有做好,才會搞成很多人的薪水只有22K而已,但是也還是有人原本只領22K,後來靠著努力薪水真的就變高了。

    我有很多的面試經驗,畢業後累積已經面試了上百家公司,我記得有一家公司的老闆面試的時候就提到了低薪的問題,他是覺得低薪是年輕人不努力造成的,不應該歸咎於這個國家,而且年輕人做工作應該要有熱情,有熱情的話即使薪水低一點還是可以先做,身段放軟之後薪水慢慢調高。這個老闆說台灣的學生到美國工作去洗盤子,讀了很多書都大學畢業了,結果他還是只想要去美國洗盤子,因為薪水高,然後他說他想在這裡洗盤子,不想回台灣工作。他年輕時有一份工作很安逸,不需要做甚麼事情很閒,然後公司提供食宿,月薪4萬元,真的是很好的待遇,可是他覺得他不要這種生活,後來就投入資訊的工作,做程式設計,月薪變成只有2萬元而已,可是他還是想做這份工作,每天就很努力的寫程式,他其實沒有程式基礎,就自己多花時間練習,星期一到星期日都在上班這樣子做。

   這個老闆說台灣的遊戲界真的沒有開發出甚麼像樣的電玩,別的國家都可以開發出很棒的電玩,可是我們都沒有,所以低薪是國恥如果是真的,那國恥又怎麼樣?總比亡國要來的好。

  其實就我過去的工作經驗,我會認為低薪可能是勞工所造成的,跟雇主沒有太大關係,如果是去應徵程式設計的工作,薪水大部分不會開的太差,都還是有一定水準,當然在台灣一定也會有黑心企業,但是也不至於都沒有良心企業,而且就算真的有黑心企業,工作能力好領高薪的人怎麼會到黑心企業呢?真的遇到了,你很有能力很快就被挖角了

  所以不要抱怨薪水太低,不要一直怪國家和企業造成低薪文化,多多提升自己的能力,你的價值被看到,薪水自然就會跟著提升。

    


波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

泛型(Generics)

 

  泛型(Generics)在物件導向中是一個比較進階的觀念,但也非常容易用到,Genrics字面的意思是通用,在物件導向中翻譯成泛型,意思是廣泛的型別,一件事物可以用不同的形態來描述。

  舉例來說,成績這件事情我把它定義為泛型,學生的成績有可能是分數0~100分,但是也有可能成績會是等第A、B、C、D、E、F,同樣是成績,但是要表達成績的方式可以不一樣,這就是泛型。

  或者是班級這件事情也可以是泛型,班級可以是數字1~10班,但也可以是甲乙丙丁,同樣是班級,但是可以用不同的形態來表達。

  使用泛型的好處是程式不必再寫一次,可以重複使用,只需改變資料的類型就可以了,如果再宣告一個新的資料會讓程式變複雜,程式顯得比較雜亂,使用泛型則是可以讓程式較簡單好管理,這是使用泛型的目的。

 

 


波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

介面(Interface)

 

  介面(Interface)在物件導向中可以說是非常重要的一個觀念,介面的意思是不同類別但是擁有相同的方法,稱作介面。

  這就好像不同的電腦周邊,像是隨身碟,行動硬碟,滑鼠等,他們都有共同的規格USB,因為有這個共同的規格,所以不同廠牌的這些產品都可以通用,因為大家擁有相同的介面叫做USB。

  其實介面和抽象相當類似,表示大家都必須做的事情,在抽象中我舉的例子是公司員工,如果我定義一個介面為員工,和抽象一樣每個員工當然都要工作,也必定都會領薪水,所以工作和薪水就是員工這個介面裡面的方法,而每個員工的工作內容當然都不會相同,薪水也會每個人不一樣。要注意在介面中的方法已經是定義為公開並且抽象了,介面中的方法一定是大家都可以使用並且都要做的事,而在抽象類別中的方法則是不一定要是抽象並且公開的,抽象類別中可以有抽象方法和一般方法。

   另外還有一個特點是介面和抽象很大的不同,那就是一個類別只可以去繼承一個抽象類別,但是可以繼承好幾個介面,就好比抽象是你的爸爸只能有一個,可是介面是乾爹,一個人可以有好幾個乾爹。

  其他抽象所擁有的特性,介面也相同,抽象不能實例化,介面一樣不能實例化,因為跟抽象一樣是要被子類別繼承的,所以實例化沒意義。

  這一篇一樣僅僅說明介面的觀念,沒有搭配程式大家可能會不好理解,之後我會再寫一篇介面的程式教學,要理解介面這個觀念大家可以先看一下前一篇介紹抽象(Abstract)的文章,因為介面和抽象很類似,所以建議大家先看完抽象以後再來看介面。

 

相關文章

抽象(Abstract)

 


波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()