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Ͱ͸ ؔ਺ͱಉٛ

     ϓϩύςΟɿΠϯελϯεʹ͍ͭͯͷ৘ใɺଐੑɺσʔλ ΋ؚ·ΕΔ  ΦϒδΣΫτɿʮର৅ʯʮϞϊʯͱ͍͏ҙຯͰɺσʔλ ʢϓϩύςΟʣͱϝιουʢΫϥεʹఆٛ͞Εͨॲཧʣͷ ू·ΓɺΠϯελϯεͱ΄΅ಉٛ IUUQTXFCDBNQJPNBHB[JOFBSDIJWFT
  2. ΫϥεΛ࢖͏͝རӹ ΫϥεΛ࢖͏͝རӹ  ڞ௨͢Δ಺༰ͷίʔυΛ·ͱΊΔ͜ͱ͕Ͱ͖Δ ʙػೳ͝ͱʹΫϥεΛ·ͱΊΔ͜ͱͰݟ௨͕͠ྑ͘ͳΔ  ಉ͡಺༰͸ΫϥεΛ࢖͍ճ͢͜ͱ͕Ͱ͖Δ ʙΫϥεΛܧঝ͢Δ͜ͱͰಉ͜͡ͱΛ܁Γฦ͠ॻ͔ͳͯ͘ྑ͍ɺɹ ɹػೳ௥Ճ͕؆୯ʹͳΔ 

    σόοά΍վम͕͠΍͘͢อक؅ཧίετΛԼ͛Δ ʙػೳ͝ͱʹ·ͱ·͍ͬͯΔͷͰมߋՕॴ͕গͳ͍  ෳ਺ਓͰ։ൃ͢Δͱ͖ʹศར ʙΫϥεؒͰͷׯব͕গͳ͍ͷͰΫϥε͝ͱʹ෼͚ͯ։ൃ͕Ͱ͖Δ ௕ظؒվम͠࢖͏ɺن໛͕େ͖͍ɺෳ਺ਓͰ։ൃ͢Δ ͍ͣΕ͔ͷཁૉ͕͋Δ։ൃ͸ΫϥεΛ࢖ͬͨઃܭ͕ศར
  3. 3ͷΫϥεʙ3ೖ໳ͷೖ໳ 3ͰΦϒδΣΫτࢦ޲ϓϩάϥϛϯά ʙ3͸΋ͱ΋ͱؔ਺ܕݴޠ ɹؔ਺ʹϝιου ɹΫϥεʹϝιουͱσʔλͷू·Γ 3Ͱ΋ΦϒδΣΫτࢦ޲తॻ͖ํ͕Ͱ͖Δ 3ͷΫϥε͸̏ͭɿࠓճ͸3Λ࢖ͬͯΫϥεΛ࡞੒ Ϋϥε ಛ௃ 4

    ຊ࣭తʹΦϒδΣΫτͷΫϥεଐੑ DMBTTBUSJCVUF จࣈྻɻ࠷ॳʹΫϥεΛఆٛͨ͠Γ ͤͣɺΦϒδΣΫτΛੜ੒͠ɺޙ͔ΒଐੑΛϖλϖλష͍ͬͯ͘Πϝʔδɻ݁ߏద౰ 4 4ΑΓ΋ຊ֨తʹΦϒδΣΫτࢦ޲ɻ Ϋϥεؚ͕Ή΂͖σʔλͰ͋Δεϩοτ TMPU ͱͦͷܕ UZQF ͕໌ࣔతʹදݱ SFQSFTFOUBUJPO ͞ΕɺҟͳͬͨܕͷσʔλΛؚ·ͳ͍Α͏ʹνΣοΫػೳ͕ಇ͘ 3 ΑΓࣗવͳΦϒδΣΫτࢦ޲ɺ3ύοέʔδΛΠϯετʔϧͯ͠࢖͏ QBCMJDϝϯόͱQSJWBUFϝϯό͕͋Δ ΫϥεΛ·͍ͨͰಈ࡞͢ΔܧঝʢεʔύʔΫϥεʣ͕Ͱ͖Δ
  4. 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)1 SFDPWFSZ"NPVOU /FX)1JGFMTF /FX)1  /FX)1  DBU ࢒Γ)1͸ /FX)1 Ͱ͢  ^ 
  5. 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)1 SFDPWFSZ"NPVOU /FX)1JGFMTF /FX)1  /FX)1  DBU ࢒Γ)1͸ /FX)1 Ͱ͢  ^  ΫϥεͷॳظԽϝιου )1EBNBHFϝιου )1SFDPWFSϝιου
  6. 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)1 SFDPWFSZ"NPVOU /FX)1JGFMTF /FX)1  /FX)1  DBU ࢒Γ)1͸ /FX)1 Ͱ͢  ^  ΫϥεͷॳظԽ 3ͷ৔߹ɿ`JOJUJBMJ[F`ʹGVODUJPOͱͯ͠ࢦఆ ಛ௃  Πϯελϯε࡞੒࣌ʹࣗಈతʹҰ౓͚ͩݺ͹ΕΔɻ  ॳظԽϝιουʹҾ਺͕͋Δ৔߹͸ɺΠϯελϯε࡞੒࣌ʹҾ਺Λઃఆ͢Δඞཁ͕͋Δɻ ͝རӹ  ϝιουͷ࣮ߦ๨ΕΛ๷͛Δɻ  Πϯελϯε࡞੒͔࣌͠࢖Θͳ͍͜ͱ͕໌֬ʹͳΔɻ  Πϯελϯεม਺΁ͷ஋ͷઃఆΛڧ੍Ͱ͖Δɻ ΫϥεͷॳظԽϝιου
  7. 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)1 SFDPWFSZ"NPVOU /FX)1JGFMTF /FX)1  /FX)1  DBU ࢒Γ)1͸ /FX)1 Ͱ͢  ^  )1EBNBHFϝιου TUPQJGOPUͰEBNBHF"NPVOUϓϩύςΟͷ৚݅ઃఆ JOJUJBMJ[FϝιουͰઃఆͨ͠TFMGJOJUJBM)1Λݺͼग़͠ ΫϥεͷॳظԽϝιου
  8. 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)1 SFDPWFSZ"NPVOU /FX)1JGFMTF /FX)1  /FX)1  DBU ࢒Γ)1͸ /FX)1 Ͱ͢  ^  TUPQJGOPUͰSFDPWFSZ"NPVOUϓϩύςΟͷ৚݅ઃఆ JOJUJBMJ[FϝιουͰઃఆͨ͠TFMGJOJUJBM)1Λݺͼग़͠ )1SFDPWFSϝιου ΫϥεͷॳظԽϝιου
  9. 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)1 SFDPWFSZ"NPVOU /FX)1JGFMTF /FX)1  /FX)1  DBU ࢒Γ)1͸ /FX)1 Ͱ͢  ^  Ϋϥεͷ͝རӹ )1EBNBHFϝιουͱ)1SFDPWFSϝιουͷ྆ํͰ ڞ௨ͯ͠࢖͏JOJUJBM)1ϓϩύςΟͷఆ͕ٛճͷهࡌͰࡁΉ ڞ௨͢Δ߲໨ΛҰ౓ʹݟΒΕΔͷͰվम΍σόοά͕ ΍Γ΍͍͢
  10. 3ͷΫϥεʙ3ೖ໳ͷೖ໳ UFTU)Q)JUQPJOUOFX  UFTU)Q)JUQPJOUOFX   &SSPSJOJOJUJBMJ[F  JOJUJBM)1JOJUJBM)1JTOPU536& UFTU)Q)JUQPJOUOFX

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