物件導向無痛入門(2)-物件導向概念 物件導向無痛入門(4)-屬性(Property)的概念
5月 18

        在物件導向中,類別(Class)是最基本的課程,有類別(Class),才能產生物件(Object),類別裡包含有:變數(Var)、屬性(Property)、方法(Method),我知道這些名詞都很抽象,我慢慢解釋給你聽。

        延續上一篇 物件導向無痛入門(1) 的概念,請你把物件想像成公司裡的員工,而每一個員工可以做很多事情,這就是物件;身為人事部經理的你,今天老總打電話給你,說他要應徵一個秘書,然後他開出了應徵的條件,叫你3天內馬上找到人,老總的條件如下:

  1. 18~27歲的正妹
  2. 未婚
  3. 36C
  4. 170CM
  5. 配合度高

        這裡所說的應徵條件,你就可以把他看成 類別(Class),然後用來產生 正妹秘書(物件 Object),於似乎你就上網 POST 了應徵的條件,果然不出3天就有人來應徵了,你就照著老總的條件來面試,當然面試的時候我們必須要驗證正妹的資料是否正確,而驗證正妹的規則就是可以看成 屬性(Property),設規則就是要保證產生的物件合乎標準!

讓我們把它換成程式表示吧!

先寫個秘書類別吧!

VB.NET:
  1. Public Class Secretary
  2.     '設定變數
  3.     Private _name As String
  4.     Private _age As Int32
  5.     Private _ISmarry As Boolean
  6.     Private _ISc As Boolean
  7.     Private _height As Int32
  8.     Private _ISmatch As Boolean
  9.     Private _score As Int32 = 0
  10.  
  11.     '建構子
  12.     Sub New(ByVal name As String, ByVal age As Int32, _
  13.     ByVal ISmarry As Boolean, ByVal ISc As Boolean, _
  14.     ByVal height As Int32, ByVal ISmatch As Boolean)
  15.  
  16.         Me.name = name
  17.         Me.age = age
  18.         Me.ISmarry = ISmarry
  19.         Me.ISc = ISc
  20.         Me.height = height
  21.         Me.ISmatch = ISmatch
  22.     End Sub
  23.  
  24.     '設定正妹名字
  25.     Property name() As String
  26.         Get
  27.             Return Me._name
  28.         End Get
  29.         Set(ByVal value As String)
  30.             Me._name = value
  31.         End Set
  32.     End Property
  33.  
  34.     '驗證年齡
  35.     Property age() As Int32
  36.         Get
  37.             Return Me._age
  38.         End Get
  39.         Set(ByVal value As Int32)
  40.             If value> 18 And value <27 Then
  41.                 value = Me._age
  42.                 Me._score += 1
  43.             Else
  44.                 value = Me._age
  45.             End If
  46.         End Set
  47.     End Property
  48.  
  49.     '是否結婚
  50.     Property ISmarry() As Boolean
  51.         Get
  52.             Return Me._age
  53.         End Get
  54.         Set(ByVal value As Boolean)
  55.             If value = False Then
  56.                 value = Me._ISmarry
  57.                 Me._score += 1
  58.             Else
  59.                 value = Me._ISmarry
  60.             End If
  61.         End Set
  62.     End Property
  63.  
  64.     '是否大於C
  65.     Property ISc() As Boolean
  66.         Get
  67.             Return Me._ISc
  68.         End Get
  69.         Set(ByVal value As Boolean)
  70.             If value = True Then
  71.                 value = Me._ISc
  72.                 Me._score += 1
  73.             Else
  74.                 value = Me._ISc
  75.             End If
  76.         End Set
  77.     End Property
  78.  
  79.     '驗證身高
  80.     Property height() As Int32
  81.         Get
  82.             Return Me._height
  83.         End Get
  84.         Set(ByVal value As Int32)
  85.             If value> 170 Then
  86.                 value = Me._height
  87.                 Me._score += 1
  88.             Else
  89.                 value = Me._height
  90.             End If
  91.         End Set
  92.     End Property
  93.  
  94.     '配合高
  95.     Property ISmatch() As Boolean
  96.         Get
  97.             Return Me._ISmatch
  98.         End Get
  99.         Set(ByVal value As Boolean)
  100.             If value = True Then
  101.                 value = Me._ISmatch
  102.                 Me._score += 1
  103.             Else
  104.                 value = Me._ISmatch
  105.             End If
  106.         End Set
  107.     End Property
  108.  
  109.     '是否率取
  110.     Sub matriculate()
  111.         If Me._score>= 5 Then
  112.             MsgBox(Me._name & vbCrLf & _
  113.                    "恭喜你錄取了" & vbCrLf & _
  114.                    "總分:" & Me._score)
  115.  
  116.         Else
  117.             MsgBox(Me._name & vbCrLf & _
  118.                    "抱歉你沒錄取" & vbCrLf & _
  119.                    "總分:" & Me._score)
  120.         End If
  121.     End Sub
  122. End Class

在主程式裡宣告三個應徵者

VB.NET:
  1. Public Class Form1
  2.  
  3.     Private Sub Form1_Load(ByVal sender As System.Object, _
  4.     ByVal e As System.EventArgs) Handles MyBase.Load
  5.  
  6.         Dim girl1 As New Secretary("張佩君", 20, False, True, 172, True)
  7.         girl1.matriculate()
  8.  
  9.         Dim girl2 As New Secretary("張秀慧", 28, True, True, 165, True)
  10.         girl2.matriculate()
  11.  
  12.         Dim girl3 As New Secretary("王淑芬", 25, False, False, 174, True)
  13.         girl3.matriculate()
  14.  
  15.     End Sub
  16. End Class

標籤:

    

本篇文章引用網址:

其他隨機文章:
  • 小綠人 18 分解圖
  • [萬年置頂公告] 不要廣告不要漏信,我拒用奇摩信箱
  • 富爸爸?窮爸爸?
  • 16x32 LED 矩陣
  • 不要再找我援交了,我沒錢!


  • 1 個回應在 “物件導向無痛入門(3)-基本建立類別”

    1. 歹命資管人 說道:

      路過看看,
      有趣的解釋耶!

      上了物件導向的課仍然不知道的東西,
      您的比喻有比較清楚!


    寫下回應