Upgrade to Pro — share decks privately, control downloads, hide ads and more …

- Rでオブジェクト指向プログラミング- クラス設計入門の入門

yu_sekiya
January 21, 2023

- Rでオブジェクト指向プログラミング- クラス設計入門の入門

TokyoR#103応用セッションの資料です。

yu_sekiya

January 21, 2023
Tweet

More Decks by yu_sekiya

Other Decks in Technology

Transcript

  1. Ԡ༻ηογϣϯ
    3ͰΦϒδΣΫτࢦ޲ϓϩάϥϛϯά
    Ϋϥεઃܭೖ໳ͷೖ໳
    5PLZP3
    !LPUBUZBNUFNB

    View full-size slide

  2. ࣗݾ঺հ
    5XJUUFS*%!LPUBUZBNUFNB
    େֶͰͷઐ໳ߦಈੜଶֶ
    ཱҊdั֫d࣮ݧd෼ੳ·ͰϫϯΦϖ
    ࠓ·Ͱ٬ઌ΅ͬͪ෼ੳ԰ˠΞύϨϧ௨ൢձࣾ
    ݱࡏҩྍݕࠪձࣾ
    3ྺ೥ա͔͗ͨ΋ʁӬԕͷॳ৺ऀ
    ۙگͳΜ͔ͪΐͬͱ͍Ζ͍ΖมԽ͕͠ΜͲ͍
    ɹɹࠓ೔͜ͷࠒɻ
    ࣗ༝ͱ͕࣌ؒཉ͍͠ɺ͋ͱࢿۚҰԯԁ͘Β͍

    View full-size slide

  3. ࠷ۙͷ͓࢓ࣄ
    ൒୺ͳ։ൃҊ݅
    ϑϩʔਤ΋ઃܭॻ΋ͳΜ΋ͳ͍··
    ίʔυ͚ͩདྷΔͱ͔ͳΜͳͷ͞ ౖ

    ͳΜͰ1ZUIPOͰ։ൃͯ͠Δͷʹ
    Ϋϥεઃܭͯ͠ͳ͍ͷ͞ʁ

    View full-size slide

  4. ͦ΋ͦ΋Ϋϥεͬͯ
    ͳΜͩΖ͏ʁ

    View full-size slide

  5. ໨త
    ΦϒδΣΫτࢦ޲ϓϩάϥϛϯάͱ͸
    ʙΫϥεͱ͸ͳΜͳͷ͔ʙ
    3ͰΦϒδΣΫτࢦ޲ϓϩάϥϛϯά
    Ϋϥε࡞੒

    View full-size slide

  6. ໨࣍
    ΦϒδΣΫτࢦ޲ϓϩάϥϛϯάͱ͸
    Ϋϥεͱ͸ʙϓϩάϥϜͷઃܭਤͷ࠷খ୯Ґ
    ΫϥεΛ࢖͏͝རӹ
    3ͷΫϥεʙ3ೖ໳ͷೖ໳

    View full-size slide

  7. ΦϒδΣΫτࢦ޲ϓϩάϥϛϯάͱ͸
    ΦϒδΣΫτࢦ޲ϓϩάϥϛϯάͱ͸
    ʮ͋Δ໾ׂΛ࣋ͬͨϞϊʯ͝ͱʹΫϥεʢϓϩάϥϜશମͷ
    ઃܭਤʣΛ෼ׂ͠ɺϞϊͱϞϊͱͷؔ܎ੑΛఆ͍ٛͯ͘͜͠
    ͱͰγεςϜΛ࡞Γ্͛Α͏ͱ͢ΔγεςϜߏ੒ͷߟ͑ํ
    IUUQTSPCPEPOFDPNCMPHEPOFTIJQ@PCKFDU@PSJFOUFE
    ୅දతͳݴޠɿQZUIPOɺKBWBTDSJQUɺ$ɺ$

    View full-size slide

  8. Ϋϥεͱ͸ʙϓϩάϥϜͷઃܭਤͷ࠷খ୯Ґ
    Ϋϥεͱ͸ɿσʔλͱϝιουͷू߹
    ʙΦϒδΣΫτͷઃܭਤʹ͋ͨΔ΋ͷ
    ཧղͷͨΊʹඞཁͳ༻ޠͱఆٛ
    ΠϯελϯεɿΫϥεΛݩʹ࡞ΒΕͨ΋ͷɺ࣮ମʹ͢Δ
    ͜ͱΛΠϯελϯεԽͱදݱɺΦϒδΣΫτͱ΄΅ಉٛ
    ϝιουɿΫϥεʹఆٛ͞Εͨॲཧ΍ಈ࡞ͷ͜ͱɺ3Ͱ͸
    ؔ਺ͱಉٛ
    ϓϩύςΟɿΠϯελϯεʹ͍ͭͯͷ৘ใɺଐੑɺσʔλ
    ΋ؚ·ΕΔ
    ΦϒδΣΫτɿʮର৅ʯʮϞϊʯͱ͍͏ҙຯͰɺσʔλ
    ʢϓϩύςΟʣͱϝιουʢΫϥεʹఆٛ͞Εͨॲཧʣͷ
    ू·ΓɺΠϯελϯεͱ΄΅ಉٛ
    IUUQTXFCDBNQJPNBHB[JOFBSDIJWFT

    View full-size slide

  9. ΫϥεΛ࢖͏͝རӹ
    ΫϥεΛ࢖͏͝རӹ
    ڞ௨͢Δ಺༰ͷίʔυΛ·ͱΊΔ͜ͱ͕Ͱ͖Δ
    ʙػೳ͝ͱʹΫϥεΛ·ͱΊΔ͜ͱͰݟ௨͕͠ྑ͘ͳΔ
    ಉ͡಺༰͸ΫϥεΛ࢖͍ճ͢͜ͱ͕Ͱ͖Δ
    ʙΫϥεΛܧঝ͢Δ͜ͱͰಉ͜͡ͱΛ܁Γฦ͠ॻ͔ͳͯ͘ྑ͍ɺɹ
    ɹػೳ௥Ճ͕؆୯ʹͳΔ
    σόοά΍վम͕͠΍͘͢อक؅ཧίετΛԼ͛Δ
    ʙػೳ͝ͱʹ·ͱ·͍ͬͯΔͷͰมߋՕॴ͕গͳ͍
    ෳ਺ਓͰ։ൃ͢Δͱ͖ʹศར
    ʙΫϥεؒͰͷׯব͕গͳ͍ͷͰΫϥε͝ͱʹ෼͚ͯ։ൃ͕Ͱ͖Δ
    ௕ظؒվम͠࢖͏ɺن໛͕େ͖͍ɺෳ਺ਓͰ։ൃ͢Δ
    ͍ͣΕ͔ͷཁૉ͕͋Δ։ൃ͸ΫϥεΛ࢖ͬͨઃܭ͕ศར

    View full-size slide

  10. 3ͷΫϥεʙ3ೖ໳ͷೖ໳
    3ͰΦϒδΣΫτࢦ޲ϓϩάϥϛϯά
    ʙ3͸΋ͱ΋ͱؔ਺ܕݴޠ
    ɹؔ਺ʹϝιου
    ɹΫϥεʹϝιουͱσʔλͷू·Γ
    3Ͱ΋ΦϒδΣΫτࢦ޲తॻ͖ํ͕Ͱ͖Δ
    3ͷΫϥε͸̏ͭɿࠓճ͸3Λ࢖ͬͯΫϥεΛ࡞੒
    Ϋϥε ಛ௃
    4
    ຊ࣭తʹΦϒδΣΫτͷΫϥεଐੑ DMBTTBUSJCVUF
    จࣈྻɻ࠷ॳʹΫϥεΛఆٛͨ͠Γ
    ͤͣɺΦϒδΣΫτΛੜ੒͠ɺޙ͔ΒଐੑΛϖλϖλష͍ͬͯ͘Πϝʔδɻ݁ߏద౰
    4
    4ΑΓ΋ຊ֨తʹΦϒδΣΫτࢦ޲ɻ
    Ϋϥεؚ͕Ή΂͖σʔλͰ͋Δεϩοτ TMPU
    ͱͦͷܕ UZQF
    ͕໌ࣔతʹදݱ
    SFQSFTFOUBUJPO
    ͞ΕɺҟͳͬͨܕͷσʔλΛؚ·ͳ͍Α͏ʹνΣοΫػೳ͕ಇ͘
    3
    ΑΓࣗવͳΦϒδΣΫτࢦ޲ɺ3ύοέʔδΛΠϯετʔϧͯ͠࢖͏
    QBCMJDϝϯόͱQSJWBUFϝϯό͕͋Δ
    ΫϥεΛ·͍ͨͰಈ࡞͢ΔܧঝʢεʔύʔΫϥεʣ͕Ͱ͖Δ

    View full-size slide

  11. 3ͷΫϥεʙ3ೖ໳ͷೖ໳
    3Λ࢖ͬͯʮྑ͍ίʔυѱ͍ίʔυͰֶͿઃܭೖ໳ʯͷ࠷ॳʹ
    ग़ͯ͘ΔήʔϜγεςϜͷ)1؅ཧΫϥεΛ࣮૷ͯ͠ΈΔ
    IUUQTHJIZPKQCPPL
    Ϋϥεͷ಺༰ɾ৚݅
    QͷώοτϙΠϯτ )1
    Λදݱ͢ΔΫϥε
    ܭࢉ͍ͨ͜͠ͱɿώοτϙΠϯτͷݮগɺώοτϙΠϯτͷճ෮
    ೖྗ஋ɿ࠷ॳͷώοτϙΠϯτɺड͚ͨ߈ܸͷ஋ɺճ෮͞Εͨ஋
    ৚݅ɿ͢΂ͯͷ஋͸࣮਺
    ώοτϙΠϯτ )1
    ͷൣғ)1
    ड͚ͨ߈ܸͷ஋
    ճ෮͞Εͨ஋

    View full-size slide

  12. 3ͷΫϥεʙ3ೖ໳ͷೖ໳
    )JUQPJOU3$MBTT )JUQPJOU
    QVCMJDMJTU
    JOJUJBM)1/"
    JOJUJBMJ[FGVODUJPO JOJUJBM)1
    \
    TUPQJGOPU JTOVNFSJD JOJUJBM)1
    MFOHUI JOJUJBM)1
    JOJUJBM)1JOJUJBM)1

    TFMGJOJUJBM)1JOJUJBM)1
    ^
    μϝʔδΛड͚ͨͱ͖ͷܭࢉ
    )1EBNBHFGVODUJPO EBNBHF"NPVOU
    \
    TUPQJGOPU JTOVNFSJD EBNBHF"NPVOU
    MFOHUI EBNBHF"NPVOU
    EBNBHF"NPVOU

    /FX)1TFMGJOJUJBM)1EBNBHF"NPVOU
    /FX)1JGFMTF /FX)1 /FX)1

    DBU ࢒Γ)1͸ /FX)1 Ͱ͢

    ^
    ճ෮Λड͚ͨͱ͖ͷܭࢉ
    )1SFDPWFSGVODUJPO SFDPWFSZ"NPVOU
    \
    TUPQJGOPU JTOVNFSJD SFDPWFSZ"NPVOU
    MFOHUI SFDPWFSZ"NPVOU
    SFDPWFSZ"NPVOU

    /FX)1TFMGJOJUJBM)1SFDPWFSZ"NPVOU
    /FX)1JGFMTF /FX)1 /FX)1

    DBU ࢒Γ)1͸ /FX)1 Ͱ͢

    ^



    View full-size slide

  13. 3ͷΫϥεʙ3ೖ໳ͷೖ໳
    )JUQPJOU3$MBTT )JUQPJOU
    QVCMJDMJTU
    JOJUJBM)1/"
    JOJUJBMJ[FGVODUJPO JOJUJBM)1
    \
    TUPQJGOPU JTOVNFSJD JOJUJBM)1
    MFOHUI JOJUJBM)1
    JOJUJBM)1JOJUJBM)1

    TFMGJOJUJBM)1JOJUJBM)1
    ^
    μϝʔδΛड͚ͨͱ͖ͷܭࢉ
    )1EBNBHFGVODUJPO EBNBHF"NPVOU
    \
    TUPQJGOPU JTOVNFSJD EBNBHF"NPVOU
    MFOHUI EBNBHF"NPVOU
    EBNBHF"NPVOU

    /FX)1TFMGJOJUJBM)1EBNBHF"NPVOU
    /FX)1JGFMTF /FX)1 /FX)1

    DBU ࢒Γ)1͸ /FX)1 Ͱ͢

    ^
    ճ෮Λड͚ͨͱ͖ͷܭࢉ
    )1SFDPWFSGVODUJPO SFDPWFSZ"NPVOU
    \
    TUPQJGOPU JTOVNFSJD SFDPWFSZ"NPVOU
    MFOHUI SFDPWFSZ"NPVOU
    SFDPWFSZ"NPVOU

    /FX)1TFMGJOJUJBM)1SFDPWFSZ"NPVOU
    /FX)1JGFMTF /FX)1 /FX)1

    DBU ࢒Γ)1͸ /FX)1 Ͱ͢

    ^



    ΫϥεͷॳظԽϝιου
    )1EBNBHFϝιου
    )1SFDPWFSϝιου

    View full-size slide

  14. 3ͷΫϥεʙ3ೖ໳ͷೖ໳
    )JUQPJOU3$MBTT )JUQPJOU
    QVCMJDMJTU
    JOJUJBM)1/"
    JOJUJBMJ[FGVODUJPO JOJUJBM)1
    \
    TUPQJGOPU JTOVNFSJD JOJUJBM)1
    MFOHUI JOJUJBM)1
    JOJUJBM)1JOJUJBM)1

    TFMGJOJUJBM)1JOJUJBM)1
    ^
    μϝʔδΛड͚ͨͱ͖ͷܭࢉ
    )1EBNBHFGVODUJPO EBNBHF"NPVOU
    \
    TUPQJGOPU JTOVNFSJD EBNBHF"NPVOU
    MFOHUI EBNBHF"NPVOU
    EBNBHF"NPVOU

    /FX)1TFMGJOJUJBM)1EBNBHF"NPVOU
    /FX)1JGFMTF /FX)1 /FX)1

    DBU ࢒Γ)1͸ /FX)1 Ͱ͢

    ^
    ճ෮Λड͚ͨͱ͖ͷܭࢉ
    )1SFDPWFSGVODUJPO SFDPWFSZ"NPVOU
    \
    TUPQJGOPU JTOVNFSJD SFDPWFSZ"NPVOU
    MFOHUI SFDPWFSZ"NPVOU
    SFDPWFSZ"NPVOU

    /FX)1TFMGJOJUJBM)1SFDPWFSZ"NPVOU
    /FX)1JGFMTF /FX)1 /FX)1

    DBU ࢒Γ)1͸ /FX)1 Ͱ͢

    ^



    ΫϥεͷॳظԽ
    3ͷ৔߹ɿ`JOJUJBMJ[F`ʹGVODUJPOͱͯ͠ࢦఆ
    ಛ௃
    Πϯελϯε࡞੒࣌ʹࣗಈతʹҰ౓͚ͩݺ͹ΕΔɻ
    ॳظԽϝιουʹҾ਺͕͋Δ৔߹͸ɺΠϯελϯε࡞੒࣌ʹҾ਺Λઃఆ͢Δඞཁ͕͋Δɻ
    ͝རӹ
    ϝιουͷ࣮ߦ๨ΕΛ๷͛Δɻ
    Πϯελϯε࡞੒͔࣌͠࢖Θͳ͍͜ͱ͕໌֬ʹͳΔɻ
    Πϯελϯεม਺΁ͷ஋ͷઃఆΛڧ੍Ͱ͖Δɻ
    ΫϥεͷॳظԽϝιου

    View full-size slide

  15. 3ͷΫϥεʙ3ೖ໳ͷೖ໳
    )JUQPJOU3$MBTT )JUQPJOU
    QVCMJDMJTU
    JOJUJBM)1/"
    JOJUJBMJ[FGVODUJPO JOJUJBM)1
    \
    TUPQJGOPU JTOVNFSJD JOJUJBM)1
    MFOHUI JOJUJBM)1
    JOJUJBM)1JOJUJBM)1

    TFMGJOJUJBM)1JOJUJBM)1
    ^
    μϝʔδΛड͚ͨͱ͖ͷܭࢉ
    )1EBNBHFGVODUJPO EBNBHF"NPVOU
    \
    TUPQJGOPU JTOVNFSJD EBNBHF"NPVOU
    MFOHUI EBNBHF"NPVOU
    EBNBHF"NPVOU

    /FX)1TFMGJOJUJBM)1EBNBHF"NPVOU
    /FX)1JGFMTF /FX)1 /FX)1

    DBU ࢒Γ)1͸ /FX)1 Ͱ͢

    ^
    ճ෮Λड͚ͨͱ͖ͷܭࢉ
    )1SFDPWFSGVODUJPO SFDPWFSZ"NPVOU
    \
    TUPQJGOPU JTOVNFSJD SFDPWFSZ"NPVOU
    MFOHUI SFDPWFSZ"NPVOU
    SFDPWFSZ"NPVOU

    /FX)1TFMGJOJUJBM)1SFDPWFSZ"NPVOU
    /FX)1JGFMTF /FX)1 /FX)1

    DBU ࢒Γ)1͸ /FX)1 Ͱ͢

    ^



    )1EBNBHFϝιου
    TUPQJGOPUͰEBNBHF"NPVOUϓϩύςΟͷ৚݅ઃఆ
    JOJUJBMJ[FϝιουͰઃఆͨ͠TFMGJOJUJBM)1Λݺͼग़͠
    ΫϥεͷॳظԽϝιου

    View full-size slide

  16. 3ͷΫϥεʙ3ೖ໳ͷೖ໳
    )JUQPJOU3$MBTT )JUQPJOU
    QVCMJDMJTU
    JOJUJBM)1/"
    JOJUJBMJ[FGVODUJPO JOJUJBM)1
    \
    TUPQJGOPU JTOVNFSJD JOJUJBM)1
    MFOHUI JOJUJBM)1
    JOJUJBM)1JOJUJBM)1

    TFMGJOJUJBM)1JOJUJBM)1
    ^
    μϝʔδΛड͚ͨͱ͖ͷܭࢉ
    )1EBNBHFGVODUJPO EBNBHF"NPVOU
    \
    TUPQJGOPU JTOVNFSJD EBNBHF"NPVOU
    MFOHUI EBNBHF"NPVOU
    EBNBHF"NPVOU

    /FX)1TFMGJOJUJBM)1EBNBHF"NPVOU
    /FX)1JGFMTF /FX)1 /FX)1

    DBU ࢒Γ)1͸ /FX)1 Ͱ͢

    ^
    ճ෮Λड͚ͨͱ͖ͷܭࢉ
    )1SFDPWFSGVODUJPO SFDPWFSZ"NPVOU
    \
    TUPQJGOPU JTOVNFSJD SFDPWFSZ"NPVOU
    MFOHUI SFDPWFSZ"NPVOU
    SFDPWFSZ"NPVOU

    /FX)1TFMGJOJUJBM)1SFDPWFSZ"NPVOU
    /FX)1JGFMTF /FX)1 /FX)1

    DBU ࢒Γ)1͸ /FX)1 Ͱ͢

    ^



    TUPQJGOPUͰSFDPWFSZ"NPVOUϓϩύςΟͷ৚݅ઃఆ
    JOJUJBMJ[FϝιουͰઃఆͨ͠TFMGJOJUJBM)1Λݺͼग़͠
    )1SFDPWFSϝιου
    ΫϥεͷॳظԽϝιου

    View full-size slide

  17. 3ͷΫϥεʙ3ೖ໳ͷೖ໳
    )JUQPJOU3$MBTT )JUQPJOU
    QVCMJDMJTU
    JOJUJBM)1/"
    JOJUJBMJ[FGVODUJPO JOJUJBM)1
    \
    TUPQJGOPU JTOVNFSJD JOJUJBM)1
    MFOHUI JOJUJBM)1
    JOJUJBM)1JOJUJBM)1

    TFMGJOJUJBM)1JOJUJBM)1
    ^
    μϝʔδΛड͚ͨͱ͖ͷܭࢉ
    )1EBNBHFGVODUJPO EBNBHF"NPVOU
    \
    TUPQJGOPU JTOVNFSJD EBNBHF"NPVOU
    MFOHUI EBNBHF"NPVOU
    EBNBHF"NPVOU

    /FX)1TFMGJOJUJBM)1EBNBHF"NPVOU
    /FX)1JGFMTF /FX)1 /FX)1

    DBU ࢒Γ)1͸ /FX)1 Ͱ͢

    ^
    ճ෮Λड͚ͨͱ͖ͷܭࢉ
    )1SFDPWFSGVODUJPO SFDPWFSZ"NPVOU
    \
    TUPQJGOPU JTOVNFSJD SFDPWFSZ"NPVOU
    MFOHUI SFDPWFSZ"NPVOU
    SFDPWFSZ"NPVOU

    /FX)1TFMGJOJUJBM)1SFDPWFSZ"NPVOU
    /FX)1JGFMTF /FX)1 /FX)1

    DBU ࢒Γ)1͸ /FX)1 Ͱ͢

    ^



    Ϋϥεͷ͝རӹ
    )1EBNBHFϝιουͱ)1SFDPWFSϝιουͷ྆ํͰ
    ڞ௨ͯ͠࢖͏JOJUJBM)1ϓϩύςΟͷఆ͕ٛճͷهࡌͰࡁΉ
    ڞ௨͢Δ߲໨ΛҰ౓ʹݟΒΕΔͷͰվम΍σόοά͕
    ΍Γ΍͍͢

    View full-size slide

  18. 3ͷΫϥεʙ3ೖ໳ͷೖ໳
    UFTU)Q)JUQPJOUOFX

    UFTU)Q)JUQPJOUOFX

    &SSPSJOJOJUJBMJ[F
    JOJUJBM)1JOJUJBM)1JTOPU536&
    UFTU)Q)JUQPJOUOFX

    &SSPSJOJOJUJBMJ[F
    JOJUJBM)1JOJUJBM)1JTOPU536&
    ΦϒδΣΫτΛੜ੒
    ࢦఆͨ͠ൣғΛ௒͑ͨ৔߹

    View full-size slide

  19. 3ͷΫϥεʙ3ೖ໳ͷೖ໳
    UFTU)Q)1EBNBHF

    ࢒Γ)1͸Ͱ͢
    UFTU)Q)1EBNBHF

    ࢒Γ)1͸Ͱ͢
    μϝʔδΛड͚ͨ৔߹ͷܭࢉ
    ࠷ॳͷ)1ΑΓখ͞ͳμϝʔδ
    ࠷ॳͷ)1ΑΓେ͖ͳμϝʔδ

    View full-size slide

  20. 3ͷΫϥεʙ3ೖ໳ͷೖ໳
    UFTU)Q)1SFDPWFS

    ࢒Γ)1͸Ͱ͢
    UFTU)Q)1SFDPWFS

    ࢒Γ)1͸Ͱ͢
    ճ෮ͨ͠৔߹ͷܭࢉ
    ࠷େ஋ΑΓগͳ͍ճ෮
    ࠷େ஋ΑΓଟ͍ճ෮

    View full-size slide

  21. 3ͷΫϥεʙ3ೖ໳ͷೖ໳
    ࠓճग़དྷͨ͜ͱ
    ɾ3Λ࢖ͬͯ؆୯ͳΫϥεΛ࣮૷ͯ͠ڍಈΛ֬ೝͨ͠
    ·ͩग़དྷ͍ͯͳ͍͜ͱ
    ɾQSJWBUFͷڍಈΛࢼ͢
    ɾܧঝͷڍಈΛࢼ͢
    ɾ3ಛ༗ͷڍಈͷ֬ೝ

    View full-size slide

  22. ·ͱΊ
    w ΫϥεͱΦϒδΣΫτࢦ޲ϓϩάϥϛϯάͷ঺հ
    w 3ύοέʔδΛ࢖ͬͯΫϥεΛ࡞੒ͯ͠Έͨ
    w ·ͩ·ͩΫϥεઃܭʹ΋3ʹ΋ཧղ͕ઙ͍ͷͰ
    ͍Ζ͍Ζࢼ͢
    3Ͱ΋ΦϒδΣΫτࢦ޲ϓϩάϥϛϯάత
    ։ൃ͕Ͱ͖Δ

    View full-size slide

  23. ࢀߟࢿྉ
    ɾ"EWBODFE3ষ
    IUUQTBEWSIBEMFZO[SIUNM
    ɾʦ຋༁ʧ3WJHOFUUF3Ϋϥεೖ໳
    IUUQTRJJUBDPNOBLBNJDIJJUFNTEFGEBD
    ɾ3DMBTTͬͦ͘͞ௐࠪSTUBUTK
    IUUQTRJJUBDPNIPYP@NJUFNTCCGGCFBB

    View full-size slide