iOS HW8 練習類別、物件、繼承

本周作業:定義兩個類別, 用到繼承, 類別裡包含屬性和方法, 在方法裡有使用到屬性,然後用類別生出物件存取物件的屬性和呼叫物件的方法。

為了寫這個練習特別又再把X戰警拿出來複習一下。

話說X戰警的故事給我的靈感是….

  1. 變種人:是指具有被稱為「X基因」基因特徵的生物(通常是人類),它令變種人自然地發展出超人的力量和能力。
  2. 變種人學校:X教授成立變種人學校,就是希望能教導這些變種人能善用自己的超能力,並且不會因感到異於常人而自卑,建立起他們的自信心。
  3. X戰警:X教授相信人類與變種人可以和平共處,而萬磁王則堅信戰爭來到,傾向與人類宣戰,所以變種人分為兩派。

詳細討論可以參考:

以上來自維基、Google、自己的腦補印象。

講了那麼多故事回歸正題,由以上劇情,設定以下Clsss和對應的屬性Property和方法Method、繼承。

在此補充,因為進入變種人學校之後,所以針對超能力有「超能力的名稱」(分門別類),與對應的「超能力數字」(就像考試得到的分數一樣),我相信這也是X教授開學校的目的,PS:其實,這是我為了寫題目腦補的。

另外,畢竟不是每個變種人都是X戰警,所以針對X戰警再增加「英雄超能力」與「電影出現次數」。PS:不要問我太多為什麼,單純為了增加屬性使用XDD。



//Mutant:變種人
//X_Mansion:變種人學校
//X_men:X戰警

class Mutant{
var Name = "X-man"
var Age = 12
var Gender = "Male"

}


class X_Mansion:Mutant{
var Power = 50
var Magic = "Mind control"

func superpower(Powerup :Int){
Power = Power + Powerup
print(Name + "的超能力指數\(Power)")
}

}


class X_men:X_Mansion{

//因金剛狼不只是X-MEN,也是X-FORCE(X特攻隊)的成員,再增加Hero的指數
//因X教授不只是X-MEN,也是光明會的成員,再增加Hero的指數

func Hero (Hero:Int){
Power = Power + Hero
print (Name + "的英雄超能力指數\(Power)")
}
func Movies(show: Int){
print (Name + "總共出現在\(show)部電影裡")

}
}

設定完成,舉金剛狼為例子

var Wolverine = X_men()
Wolverine.Name = "Logan"
Wolverine.Age = 37
Wolverine.Gender = "Male"
Wolverine.Magic = "Adamantium Claws亞德曼合金鋼爪"
print(Wolverine.Name)
print(Wolverine.Age)
print(Wolverine.Gender)

print(Wolverine.superpower(Powerup: 20))
print(Wolverine.Magic)

print(Wolverine.hero(Hero: 29))
print(Wolverine.Movies(show: 11))

舉X教授為例子

var Professor_X = X_men()
Professor_X.Name = "X教授"
Professor_X.Age = 65
Professor_X.Gender = "Male"
Professor_X.Magic = "Mind control"
Professor_X.Movies(show: 13)


print(Professor_X.Name)
print(Professor_X.Age)
print(Professor_X.Gender)

print(Professor_X.superpower(Powerup: 31))
print(Professor_X.Magic)

print(Professor_X.hero(Hero: 10))
print(Professor_X.Movies)

最後不要問我超能力的分數如何量化,單純是個人對於電影角色喜愛程度。

心得:

  1. 這很實用,想到可以做成遊戲的人物分類,譬如NPC、配角、主角、BOSS,都有不同的Class,給定不同的參數來修改,可以增加很多便利性,又能增加變化。後來想到NBA(球員、明星球員、傳奇球員)、哈利波特…等很多都可以這樣設定。
  2. 當周現學現賣最好,頭腦記憶最清楚的時候寫作業,比較靈光。

--

--