Slide 1

Slide 1 text

ߏ଄ମ MOBILE PROGRAMMING 10TH DEC

Slide 2

Slide 2 text

1. ߏ଄ମͬͯ?

Slide 3

Slide 3 text

ςΩετ ߏ଄ମͱ͸ʁ ▸ Class ͱࣅͨΑ͏ͳ΋ͷͰϝιου΍ϓϩύςΟΛ࣋ͭ ▸ Classͱಉ͡Α͏ʹఆٛͨ͠ޙΠϯελϯεԽͯ͠࢖͏ ▸ class Ωʔϫʔυͷ୅ΘΓʹ struct Λ࢖͏ ▸ ୯७ͳσʔλͳͲΛอ͓࣋ͯͨ͘͠Ίʹ࢖͏

Slide 4

Slide 4 text

ςΩετ ࣮ࡍͷίʔυ // structͷఆٛ struct Pokemon { let name: String var level: Int var health: Int func displayStatus() { print("name: \(self.name)") print("Lv: \(self.level)") print("HP: \(self.health)") } } // ΠϯελϯεԽ let pikachu = Pokemon(name: "ϐΧνϡ΢", level: 100) // ϝιουݺͼग़͠ pikachu.displayStatus()

Slide 5

Slide 5 text

ͺͬͱݟCLASSͱಉ͡ Α͏͕ͩɾɾɾ

Slide 6

Slide 6 text

࣮͸৭ʑͳͱ͜ Ζ͕ҧ͏ʂ

Slide 7

Slide 7 text

2. CLASSͱSTRUCT ͷҧ͍

Slide 8

Slide 8 text

ςΩετ จ๏͸΄ͱΜͲಉ͚ͩ͡ͲͲ͕͜ҧ͏ʁ ▸ Class͸ՄมɺStruct͸ෆมͰ͋Δ͜ͱ ▸ Struct͸ଞͷStructΛܧঝͰ͖ͳ͍ ▸ Class͸ࢀরܕɺStruct͸஋ܕ

Slide 9

Slide 9 text

2-1.ෆมͱՄม

Slide 10

Slide 10 text

ςΩετ ෆมʁՄมʁ ▸ ͖ͬ͞ͷεϥΠυʹ΋ॻ͍ͨ௨ΓClass͸ՄมɺStruct͸ෆมͰ͢ ▸ จࣈ௨ΓมߋͰ͖Δ͔Ͱ͖ͳ͍͔ͱ͍͏͜ͱͰ͕͢ ▸ ୺తʹݴͬͯ͠·͑͹ΦϒδΣΫτͷϓϩύςΟΛॻ͖׵͑Δ͜ ͱ͕Ͱ͖Δ͔(ঢ়ଶΛมԽͤ͞ΒΕΔ͔)ͱ͍͏͜ͱͰ͢ ▸ ӳޠͰ͸ՄมΛ Mutable, ෆมΛ Immutable ͱݺͼ·͢ ▸ Class͸ϓϩύςΟΛॻ͖׵͑Δ͜ͱ͕Ͱ͖·͕͢Struct͸ෆมͳ ͷͰجຊతʹॻ͖׵͑Δ͜ͱ͕Ͱ͖·ͤΜ

Slide 11

Slide 11 text

ςΩετ ࣮ࡍͷίʔυ ▸ ௕͘ͳΔͷͰXcodeࢀর

Slide 12

Slide 12 text

ςΩετ Ͳ͏ͯ͠΋STRUCTΛՄมʹ͍ͨ͠ͱ͖͸ʁ ▸ جຊతʹStruct͸ෆมͰ͋ΓมߋෆՄͰ͢ ▸ ຊདྷ͸ͦͷΑ͏ʹѻ͏΂͖Ͱ͕ͨ͢·ʹͲ͏ͯ͠΋Մมʹ͠ ͍͕ͨ࣌͋Γ·͢ ▸ ͦ͏͍͏ͱ͖͸ϝιουʹmutatingΩʔϫʔυΛ͚ͭΔ͜ ͱͰՄมʹ͢Δ͜ͱ͕Ͱ͖·͢ ▸ ·ͨstructΛΠϯελϯεԽ͢Δࡍʹ͸ΠϯελϯεΛೖΕ Δม਺Λ var Ͱఆ͓ٛͯ͘͠ඞཁ͕͋Γ·͢

Slide 13

Slide 13 text

ςΩετ ࣮ࡍͷίʔυ // structͷఆٛ struct Pokemon { let name: String let ability: Ability var level: Int var health: Int func displayStatus() { print("name: \(self.name)") print("Lv: \(self.level)") print("HP: \(self.health)") } // mutating Λ͚ͭΔ͜ͱͰ // ͜ͷϝιουͷதͰͷΈpropertyΛॻ͖׵͑Մೳ mutating func takeDamage(from ability: Ability) { self.health -= ability.damage } } // ΠϯελϯεԽ let ability = Ability(name: "ϘϧοςΧʔ", damage: 120) let ability2 = Ability(name: "΅͏;͏", damage: 120) // Մมʹ͍ͨ͠Struct͸varͰఆٛ͢Δ var pikachu = Pokemon(name: "ϐΧνϡ΢", ability: ability, level: 100, health: 200) var pidgey = Pokemon(name: "ϙοϙ", ability: ability2, level: 100, health: 200) pidgey.takeDamage(from: pikachu.ability)

Slide 14

Slide 14 text

2-2.ܧঝʹ͍ͭ ͯ

Slide 15

Slide 15 text

ςΩετ STRUCTͬͯܧঝͲ͏ͳͷʁ ▸ ͖ͬ͞ͷεϥΠυʹ΋ॻ͍ͨ௨ΓStruct͸ଞͷStructΛܧঝ Ͱ͖·ͤΜ ▸ ͳͷͰෳ਺ͷStructʹಉ͡Α͏ͳػೳΛ͍࣋ͨͤͨʂͱͳͬ ͨ৔߹͸ProtocolΛ࢖͏͜ͱʹͳΓ·͢ ▸ Protocolʹ͍ͭͯ͸ৄ͘͠৮Ε·ͤΜ͕લճͷϙέϞϯͷྫ ΛStructͱProtocolͰදݱ͢Δͱ࣍ͷΑ͏ʹͳΓ·͢

Slide 16

Slide 16 text

ςΩετ ࣮ࡍͷίʔυ protocol Pokemon { var name: String { get } var ability: Ability { get } var level: Int { get } var health: Int { get set } func displayStatus() func doAbility(with pokemon: T) } struct Pikachu: Pokemon { let name: String let ability: Ability let level: Int var health: Int func displayStatus() { // লུ... } func doAbility(with pokemon: T) where T : Pokemon { // লུ... } }

Slide 17

Slide 17 text

2-2.஋ܕͱࢀর ܕ

Slide 18

Slide 18 text

ςΩετ ஋ܕʁࢀরܕʁ ▸ ͖ͬ͞ͷεϥΠυʹ΋ॻ͍ͨ௨ΓClass͸ࢀরܕɺStruct͸ ஋ܕͰ͢ ▸ ࢀরܕ͸Πϯελϯε͝ͱʹϓϩύςΟͷ಺༰Λڞ༗͠·͢ ▸ ஋ܕ͸Πϯελϯε͕ϝιουʹ౉Δࡍʹࣗ෼ͷίϐʔΛ౉ ͢ͷͰΠϯελϯε͝ͱʹϓϩύςΟͷ಺༰͕ڞ༗͞Ε·ͤ Μ

Slide 19

Slide 19 text

ςΩετ ࣮ࡍͷίʔυ ▸ ௕͘ͳΔͷͰXcodeࢀর