Slide 1

Slide 1 text

PROTOCOL MOBILE PROGRAMMING JAN 21ST

Slide 2

Slide 2 text

1. PROTOCOLͱ͸

Slide 3

Slide 3 text

ςΩετ PROTOCOL(ϓϩτίϧ)ͱ͸ʁ ▸ Protocol͸࣮૷ͷͳ͍ClassͷΑ͏ͳ΋ͷͰ͢ ▸ Class ΍ Struct ͱಉ͘͡ ϝιου΍ϓϩύςΟΛఆٛ͢Δ͜ͱ͕Ͱ͖·͕͢۩ମత ͳ࣮૷͸͠·ͤΜ ▸ ଞͷClass΍Structʹܧঝͤͯ͞ɺϝιου΍ϓϩύςΟͷ࣮૷Λ͠·͢ ▸ جຊతʹProtocolʹఆٛ͞Ε͍ͯΔϝιου΍ϓϩύςΟ͸શ࣮ͯ૷͢Δඞཁ͕͋Γ ·͢ ▸ ProtocolΛClass΍Structʹܧঝͤ͞Δ͜ͱΛϓϩτίϧΛ࠾༻(adopt)ͤ͞Δͱݴ͍ ·͢ ▸ Ұൠ໊ࢺͱͯ͠௚༁͢Δͱ ن໿ ͱ͍͏ҙຯʹͳΓ·͢

Slide 4

Slide 4 text

ςΩετ ࣮ࡍͷίʔυ protocol Pokemon { var name: String { get } var ability: Ability { get } var level: Int { get set } var health: Int { get set } func displayStatus() func doAbility(to pokemon: T) } Protocol Ωʔϫʔυ͔Β࢝·Δ

Slide 5

Slide 5 text

ςΩετ ࣮ࡍͷίʔυ protocol Pokemon { var name: String { get } var ability: Ability { get } var level: Int { get set } var health: Int { get set } func displayStatus() func doAbility(to pokemon: T) } Protocol Ωʔϫʔυ͔Β࢝·Δ ͜͜͸ඞͣvarͰఆٛ͢Δ

Slide 6

Slide 6 text

ςΩετ ࣮ࡍͷίʔυ protocol Pokemon { var name: String { get } var ability: Ability { get } var level: Int { get set } var health: Int { get set } func displayStatus() func doAbility(to pokemon: T) } Protocol Ωʔϫʔυ͔Β࢝·Δ ͜͜͸ඞͣvarͰఆٛ͢Δ ۩ମతͳ஋Λࢦఆ͢Δ୅ΘΓʹ ಡΈॻ͖ͷઃఆΛ͢Δ ͜Ε͸ get ͚ͩͳͷͰಡΈࠐΈઐ༻

Slide 7

Slide 7 text

ςΩετ ࣮ࡍͷίʔυ protocol Pokemon { var name: String { get } var ability: Ability { get } var level: Int { get set } var health: Int { get set } func displayStatus() func doAbility(to pokemon: T) } Protocol Ωʔϫʔυ͔Β࢝·Δ ͜͜͸ඞͣvarͰఆٛ͢Δ ۩ମతͳ஋Λࢦఆ͢Δ୅ΘΓʹ ಡΈॻ͖ͷઃఆΛ͢Δ ͜Ε͸ get ͚ͩͳͷͰಡΈࠐΈઐ༻ ͪ͜Β͸ get set ྆ํͷهड़͕͋ΔͷͰ ಡΈॻ͖Մೳ

Slide 8

Slide 8 text

ςΩετ ࣮ࡍͷίʔυ(ఆٛ) protocol Pokemon { var name: String { get } var ability: Ability { get } var level: Int { get set } var health: Int { get set } func displayStatus() func doAbility(to pokemon: T) } Protocol Ωʔϫʔυ͔Β࢝·Δ ͜͜͸ඞͣvarͰఆٛ͢Δ ۩ମతͳ஋Λࢦఆ͢Δ୅ΘΓʹ ಡΈॻ͖ͷઃఆΛ͢Δ ͜Ε͸ get ͚ͩͳͷͰಡΈࠐΈઐ༻ ͪ͜Β͸ get set ྆ํͷهड़͕͋ΔͷͰ ಡΈॻ͖Մೳ ϝιου͸໊લͱҾ਺ɺ໭Γ஋͚ͩΛهड़͠۩ମతͳ࣮૷͸ॻ͔ͳ͍

Slide 9

Slide 9 text

ςΩετ ࣮ࡍͷίʔυ(࠾༻) struct Pikachu: 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)") } func doAbility(to pokemon: T) where T : Pokemon { // to be continue... } } ࠾༻͍ͨ͠ProtocolΛࢦఆ͢Δ

Slide 10

Slide 10 text

ςΩετ ࣮ࡍͷίʔυ(࠾༻) struct Pikachu: 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)") } func doAbility(to pokemon: T) where T : Pokemon { // to be continue... } } ࠾༻͍ͨ͠ProtocolΛࢦఆ͢Δ ͜ͷೋͭ͸ఆٛͷ࣌ʹ get ͚ͩͩͬͨͷͰ let Ͱఆ਺ͱͯ͠ఆٛ(Read only)

Slide 11

Slide 11 text

ςΩετ ࣮ࡍͷίʔυ(࠾༻) struct Pikachu: 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)") } func doAbility(to pokemon: T) where T : Pokemon { // to be continue... } } ࠾༻͍ͨ͠ProtocolΛࢦఆ͢Δ ͜ͷೋͭ͸ఆٛͷ࣌ʹ get ͚ͩͩͬͨͷͰ let Ͱఆ਺ͱͯ͠ఆٛ(Read only) ͜ͷೋͭ͸ఆٛͷ࣌ʹ get set ྆ํࢦఆͨ͠ͷͰ var Ͱม਺ͱͯ͠ఆٛ(Read/Write)

Slide 12

Slide 12 text

ςΩετ ࣮ࡍͷίʔυ(࠾༻) struct Pikachu: 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)") } func doAbility(to pokemon: T) where T : Pokemon { // to be continue... } } ࠾༻͍ͨ͠ProtocolΛࢦఆ͢Δ ͜ͷೋͭ͸ఆٛͷ࣌ʹ get ͚ͩͩͬͨͷͰ let Ͱఆ਺ͱͯ͠ఆٛ(Read only) ͜ͷೋͭ͸ఆٛͷ࣌ʹ get set ྆ํࢦఆͨ͠ͷͰ var Ͱม਺ͱͯ͠ఆٛ(Read/Write) ϝιου͸ఆٛͯ͋͠ΔҾ਺໭Γ஋Λهड़ͯ͠த਎Λ࣮૷͢Δ

Slide 13

Slide 13 text

ςΩετ ࣮ࡍͷίʔυ(·ͱΊ) // Protocolఆٛ protocol Pokemon { var name: String { get } var ability: Ability { get } var level: Int { get set } var health: Int { get set } func displayStatus() func doAbility(to pokemon: T) } // Protocol࠾༻ struct Pikachu: 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)") } func doAbility(to pokemon: T) where T : Pokemon { // to be continue... } }

Slide 14

Slide 14 text

2.͍ͭ࢖͏Μʁ

Slide 15

Slide 15 text

ςΩετ ͍ͭ࢖͏Μʁ ▸ ͬ͘͟Γ෼͚ͯ

Slide 16

Slide 16 text

ςΩετ ͍ͭ࢖͏Μʁ ▸ ͬ͘͟Γ෼͚ͯ ▸ 1. ಛఆͷػೳΛఏڙͤ͞ΔͨΊ

Slide 17

Slide 17 text

ςΩετ ͍ͭ࢖͏Μʁ ▸ ͬ͘͟Γ෼͚ͯ ▸ 1. ಛఆͷػೳΛఏڙͤ͞ΔͨΊ ▸ 2. Delegate PatternΛ࣮૷͢ΔͨΊ

Slide 18

Slide 18 text

ςΩετ ͍ͭ࢖͏Μʁ ▸ ͬ͘͟Γ෼͚ͯ ▸ 1. ಛఆͷػೳΛఏڙͤ͞ΔͨΊ ▸ 2. Delegate PatternΛ࣮૷͢ΔͨΊ ▸ 3. ॲཧͷڞ௨ԽΛߦ͏ͨΊ

Slide 19

Slide 19 text

ςΩετ ͍ͭ࢖͏Μʁ ▸ ͬ͘͟Γ෼͚ͯ ▸ 1. ಛఆͷػೳΛఏڙͤ͞ΔͨΊ ▸ 2. Delegate PatternΛ࣮૷͢ΔͨΊ ▸ 3. ॲཧͷڞ௨ԽΛߦ͏ͨΊ ▸ ͷࡾͭʹͳΔͱࢥ͍·͢

Slide 20

Slide 20 text

2-1.ػೳͷఏڙ Λͤ͞ΔͨΊ

Slide 21

Slide 21 text

ςΩετ ػೳΛఏڙͤ͞Δʁ ▸ ͜͜Ͱݴ͏ػೳͱ͸ ▸ printؔ਺Ͱ಺༰Λग़ྗ͢Δ͜ͱ͕Ͱ͖Δͱ͔ ▸ ൺֱΛ͢Δ͜ͱ͕Ͱ͖Δ ▸ ͱݴ͏ҙຯʹͳΓ·͢ ▸ લऀ͸ Printable, ޙऀ͸ Comparableͱ͍͏໊લͷProtocolͱͯ͠ఆٛ͞Ε ͍ͯ·͢ ▸ ͭ·Γ࠾༻͍ͯ͠ΔProtocolΛݟΕ͹ͲΜͳػೳΛ͍࣋ͬͯΔ͔͕Θ͔Γ ·͢

Slide 22

Slide 22 text

ςΩετ ࣮ࡍͷίʔυ ▸ XcodeͰίʔυΛॻ͖·͢

Slide 23

Slide 23 text

2-2.DELEGATE PATTERN Λ࣮૷͢ΔͨΊ

Slide 24

Slide 24 text

ςΩετ DELEGATE PATTERNʁ ▸ Delegate Pattern ͸ϓϩάϥϜͰ࢖༻͢ΔσβΠϯύλʔϯ ͷҰͭͰ͢ ▸ ୺తʹݴ͏ͱ͋ΔObject͕ߦ͏΂͖ॲཧΛผͷObjectʹݞ ୅ΘΓͤ͞Δ͜ͱͰ͢ ▸ ݞ୅ΘΓ͢ΔΦϒδΣΫτΛ Delegate ͱݺͼ·͢ ▸ ͪͳΈʹ Delegate ͸Ұൠ໊ࢺΛ௚༁͢Δͱ ҕৡ ͱͳΓ· ͢

Slide 25

Slide 25 text

ςΩετ PROTOCOL·ͱΊ ▸ Protocol͸࣮૷ͷͳ͍ClassͷΑ͏ͳ΋ͷ ▸ Class ΍ Struct ͱಉ͘͡ ϝιου΍ϓϩύςΟΛఆٛ͢Δ͜ͱ͕Ͱ ͖Δ͕۩ମతͳ࣮૷͸ͤͣɺ࠾༻ͤͨ͞ Class ΍ Struct Ͱ࣮૷͢Δ ▸ جຊతʹProtocolʹఆٛ͞Ε͍ͯΔϝιου΍ϓϩύςΟ͸શ࣮ͯ ૷͢Δඞཁ͕͋Δ ▸ Protocol͸ಛఆͷػೳΛఏڙͤͨ͞Γɺ Delegate PatternΛ࣮૷͢ ΔͨΊʹ࢖͏

Slide 26

Slide 26 text

ͪΐͬͱ଴ͬͯɺ΋͠ ͔ͯ͠΋͏Ұͭ๨Εͯ ͳ͍ʁ

Slide 27

Slide 27 text

ςΩετ ΋͔ͯ͠͠: ϛϡ΢

Slide 28

Slide 28 text

ςΩετ ΋͔ͯ͠͠: ϛϡ΢

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

ଓ͖͸EXTENSION Ͱɾɾɾ