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

Ruby11

 Ruby11

Ruby講義 第11回
継承、Module
2013.6.27

Avatar for Kuniaki IGARASHI

Kuniaki IGARASHI

June 22, 2013
Tweet

More Decks by Kuniaki IGARASHI

Other Decks in Technology

Transcript

  1. ϨγϐΦϒδΣΫτ DMBTT3FDJQF EFGUJUMF !UJUMF FOE EFGUJUMF U !UJUMFU !VQEBUFE@BU5JNFOPX FOE

     !UJUMFDIFFTFDBLF !BVUIPSJHBSBTIJ  FOE ϨγϐΦϒδΣΫτͷ໾ׂͱ੹೚ σʔλ΁ͷΞΫηε͸ॴఆ ͷϝιουΛ௨͓ͯ͡ئ͍ ͠·͢ɻ ‎ެ։κʔϯͱ ඇެ։κʔϯΛ෼͚Δ ެ։κʔϯ  ɹ ඇެ։κʔϯ σʔλΛ֎͔Βউखʹॻ͖׵͑ΔͱϨγϐΦϒδΣΫτ͸੹೚ΛՌͨͤͳ͍ σʔλ ม਺ ͸֎෦͔Β͸ΞΫηεͰ͖ͳ͘͢΂͖ ඇެ։κʔϯʹஔ͘΂͖ 3VCZͷDMBTT͸࠷ॳ͔Βͦ͏ͳΔΑ͏ʹઃܭ͞Ε͍ͯ·͢ 
  2. QVCMJD QSJWBUF ϝιουͷެ։ɾඇެ։Λ੍ޚͰ͖·͢ɻ DMBTT"DDFTT5FTU QVCMJD ͜ΕҎ߱ʹॻ͍ͨϝιου͸QVCMJD EFGTIPX QVUTQVCMJDNFUIPE FOE ͜͜ʹॻ͍ͨϝιου΋QVCMJD

    QSJWBUF ͜ΕҎ߱ʹॻ͍ͨϝιου͸QSJWBUF EFGTFDSFU QVUTQSJWBUFNFUIPE FOE FOE PCK"DDFTT5FTUOFX PCKTIPXQVCMJDNFUIPE PCKTFDSFU QVCMJD Ҏ߱ͷϝιουΛެ։ϝιουʹ͠ ·͢ɻ ·ͨ͸ɺԿ΋ॻ͔ͳ͍ͱ QVCMJDʹͳΓ·͢ QSJWBUF Ҏ߱ͷϝιουΛඇެ։ϝιουʹ ͠·͢ɻඇެ։ϝιου͸ɺΦϒδ ΣΫτ಺෦͔Β͸ݺͼग़ͤ·͕͢ɺ ֎෦͔Β͸ݺͼग़ͤ·ͤΜɻ ˞QSPUFDUFEͱ͍͏ͷ΋͋Δͷ Ͱ͕͢ɺ໓ଟʹ࢖Θͳ͍ͷͰলུ 
  3. ΦϒδΣΫτͷ಺෦ͱ֎෦ DMBTT"DDFTT5FTU EFGTIPX TFDSFU͜͜͸಺෦ FOE QSJWBUF EFGTFDSFU QVUTQSJWBUFNFUIPE FOE FOE

    PCK"DDFTT5FTUOFX PCKTFDSFU͜͜͸֎෦ ಺෦ ͦͷΦϒδΣΫτΫϥεͷϝιου ͷதɻͦͷΦϒδΣΫτΫϥεͷ DMBTTʙFOEͷؒɻ ֎෦ ͦΕҎ֎ ·ͨ͸ɺ TFDSFUͷΑ͏ʹϝιου໊͚ͩͰݺ΂ Δͱ͜Ζ͕಺෦ɺ PCKTFDSFUͷΑ͏ʹ ΦϒδΣΫτϝιου໊Ͱ ݺͿͱ͜Ζ͕֎෦Ͱ͢ɻ ಺෦ 
  4. ܧঝ DMBTT#PPL BUUS@BDDFTTPSUJUMF QSJDF FOE DMBTT.BHB[JF BUUS@BDDFTTPSUJUMF QSJDF OVNCFS FOE

    ͨͱ͑͹#PPLΫϥεͱ.BHB[JOFΫϥε ࡶࢽ Λ࡞Δͱ͠·͢ɻ ผʑʹఆٛΛॻ͍ͯ΋͍͍ͷͰ͕͢ɺڞ௨߲ ΋ͨ͘͞Μ͋Γ·͢ɻ 
  5. ܧঝ DMBTT#PPL BUUS@BDDFTTPSUJUMF QSJDF FOE DMBTT.BHB[JF BUUS@BDDFTTPSUJUMF QSJDF OVNCFS FOE

    ͨͱ͑͹#PPLΫϥεͱ.BHB[JOFΫϥε ࡶࢽ Λ࡞Δͱ͠·͢ɻ ผʑʹఆٛΛॻ͍ͯ΋͍͍ͷͰ͕͢ɺڞ௨߲΋ͨ͘͞Μ͋ Γ·͢ɻͦΜͳͱ͖͸ɺܧঝΛ࢖͏ͱ͖ͬ͢Γॻ͚·͢ɻ 
  6. ܧঝ DMBTT#PPL BUUS@BDDFTTPSUJUMF QSJDF FOE DMBTT.BHB[JOF#PPL BUUS@BDDFTTPSOVNCFS FOE DMBTT.BHB[JOF#PPL ͱॻ͘͜ͱͰɺ#PPLΫϥεΛ

    ܧঝͨ͠.BHB[JOFΫϥεΛ ఆٛͰ͖·͢ɻ DMBTT#PPL BUUS@BDDFTTPSUJUMF QSJDF FOE DMBTT.BHB[JOF BUUS@BDDFTTPSUJUMF QSJDF OVNCFS FOE ಉ͡ಈ࡞ ܧঝΛ࢖ͬͨॻ͖ํ ܧঝΛ࢖Θͳ͍ॻ͖ํ 
  7. .BHB[JOF ܧঝ DMBTT#PPL BUUS@BDDFTTPSUJUMF QSJDF FOE DMBTT.BHB[JOF#PPL BUUS@BDDFTTPSOVNCFS FOE ܧঝΛ࢖ͬͨॻ͖ํ

     #PPL BUUS@BDDFTTPSUJUMF QSJDF BUUS@BDDFTTPSOVNCFS #PPLΫϥεΛܧঝͨ͠.BHB[JOFΫϥε͸ɺ#PPLΫϥεͷ࣋ͪ෺Λड ͚ܧ͗·͢ɻ͜ͷྫͷ৔߹͸ɺ#PPLΫϥεͷ BUUS@BDDFTTPSUJUMF QSJDF Λ.BHB[JOFΫϥεͰ΋࢖͑·͢ɻՃ͑ͯɺ.BHB[JOFΫϥεʹ͋Δ BUUS@BDDFTTPSOVNCFS ΋ར༻Ͱ͖·͢ɻ ਤղ
  8. ܧঝ DMBTT#PPL BUUS@BDDFTTPSUJUMF QSJDF FOE DMBTT.BHB[JF#PPL BUUS@BDDFTTPSOVNCFS FOE ྫ͑͹#PPLΫϥεΛܧঝͨ͠ .BHB[JOFΫϥε͸ɺUJUMFͱQSJDFΛ

    ड͚ܧ͍Ͱ͍·͢ɻྫ͑͹ɺˣͷΑ͏ͳ ίʔυΛॻ͘͜ͱ͕Ͱ͖·͢ɻ DMBTTΫϥε໊εʔύʔΫϥε໊ Ϋϥεͷఆٛ FOE ܧঝ͢Δ৔߹ͷॻࣜ εʔύʔΫϥεͱ͸ɺܧঝݩͷ Ϋϥε ਌Ϋϥε Ͱ͢ɻ ܧঝͨ͠Ϋϥε͸ɺ਌ΫϥεͷશͯͷϝιουɺΠϯελϯεม ਺ͳͲΛड͚ܧ͗·͢ɻ NBHB[JOF.BHB[JOFOFX NBHB[JOFUJUMF$BO$BN QNBHB[JOFUJUMF$BO$BN 
  9. ܧঝԋश໰୊B ӈͷ#PPLΫϥεΛܧঝͨ͠ %JHJUBM#PPL ిࢠॻ੶ Ϋϥε Λ࡞͍ͬͯͩ͘͞ɻ %JHJUBM#PPLΫϥεʹӈͷΑ͏ ͳpMFOBNFϝιουΛ࣮૷ͯ͠ ͍ͩ͘͞ɻ %JHJUBM#PPLΫϥεͷΠϯελ

    ϯεΦϒδΣΫτΛ࡞੒ͯ͠ɺ !UJUMFʹ.PNPΛηοτ͠ɺ pMFOBNFϝιουΛݺͼग़ͯ͠ ͍ͩ͘͞ɻ DMBTT#PPL EFGUJUMF !UJUMF FOE EFGUJUMF U !UJUMFU FOE FOE ͜͜ʹ%JHJUBM#PPLΫϥεΛॻ͘  ಉ͡ϑΝΠϧͰ#PPLͷԼ pMFOBNFϝιου͸ҎԼɻ EFGpMFOBNF !UJUMF QEG FOE 
  10. ܧঝԋश໰୊B ҎԼͷ#PPLΫϥε Bͱಉ͡Ͱ͢ Λܧঝͨ͠ %JHJUBM#PPL ిࢠॻ੶ ΫϥεΛ࡞͍ͬͯͩ͘͞ɻ %JHJUBM#PPLΫϥεʹ਌Ϋϥεʹ͋Δϝιουͱಉ໊ͷUJUMFϝ ιουΛ࣮૷͢ΔͱͲ͏ͳΔͰ͠ΐ͏͔ɻ%JHJUBM#PPLΫϥε ͷΠϯελϯεΦϒδΣΫτΛ࡞੒ͯ͠ɺ!UJUMFʹ.PNPΛη

    οτ͠ɺUJUMFϝιουΛݺͼग़͍ͯͩ͘͠͞ɻ DMBTT#PPL EFGUJUMF !UJUMF FOE EFGUJUMF U !UJUMFU FOE FOE %JHJUBM#PPLΫϥεͷUJUMFϝιου EFGUJUMF <FCPPL> !UJUMF FOE 
  11. ܧঝԋश໰୊Bղ౴ ӈͷ#PPLΫϥεΛܧঝͨ͠ %JHJUBM#PPL ిࢠॻ੶ ΫϥεΛ࡞ͬ ͍ͯͩ͘͞ɻ %JHJUBM#PPLΫϥεʹӈͷΑ͏ͳ pMFOBNFϝιουΛ࣮૷ͯͩ͘͠͞ ͍ɻ%JHJUBM#PPLΫϥεͷΠϯελϯ εΦϒδΣΫτΛ࡞੒ͯ͠ɺ!UJUMF

    ʹ.PNPΛηοτ͠ɺpMFOBNFϝ ιουΛݺͼग़͍ͯͩ͘͠͞ɻ DMBTT#PPL EFGUJUMF !UJUMF FOE EFGUJUMF U !UJUMFU FOE FOE DMBTT%JHJUBM#PPL#PPL EFGpMFOBNF !UJUMF QEG FOE FOE FCPPL%JHJUBM#PPLOFX FCPPLUJUMF.PNP QFCPPLpMFOBNF.PNPQEG QFCPPLUJUMF.PNP 
  12. ܧঝԋश໰୊Bղ౴ DMBTT#PPL EFGUJUMF !UJUMF FOE EFGUJUMF U !UJUMFU FOE FOE

    DMBTT%JHJUBM#PPL#PPL EFGUJUMF <FCPPL> !UJUMF FOE FOE FCPPL%JHJUBM#PPLOFX FCPPLUJUMF.PNP QFCPPLUJUMF<FCPPL>.PNP ҎԼͷ#PPLΫϥεΛܧঝͨ͠%JHJUBM#PPL ి ࢠॻ੶ ΫϥεΛ࡞͍ͬͯͩ͘͞ɻ %JHJUBM#PPLΫϥεʹ਌Ϋϥεʹ͋Δϝιουͱ ಉ໊ͷUJUMFϝιουΛ࣮૷͢ΔͱͲ͏ͳΔͰ͠ΐ ͏͔ɻ%JHJUBM#PPLΫϥεͷΠϯελϯεΦϒδ ΣΫτΛ࡞੒ͯ͠ɺ!UJUMFʹ.PNPΛηοτ ͠ɺUJUMFϝιουΛݺͼग़͍ͯͩ͘͠͞ɻ ܧঝͨ͠ΫϥεͰ਌Ϋϥεͱಉ໊ͷϝιο υ͕͋Δ৔߹͸ɺϝιουఆ͕ٛΦʔόʔ ϥΠυʢ্ॻ͖ʣ͞Ε·͢ɻҎԼͷΑ͏ ʹɺ#PPLΫϥεʹ͸Өڹ͸ग़·ͤΜɻ CPPL#PPLOFX CPPLUJUMF.PNP QCPPLUJUMF.PNP #PPLΫϥεͷUJUMF UJUMFΛݺΜͩ৔߹ 
  13. ܧঝԋश໰୊Bղ౴ DMBTT#PPL EFGJOGPSNBUJPO QVUT(SFBU#PPL FOE FOE DMBTT%JHJUBM#PPL#PPL EFGJOGPSNBUJPO QVUT%FHJUBMCPPLJOGPSNBUJPO TVQFS

    FOE FOE EJHJUBM@CPPL%JHJUBM#PPLOFX EJHJUBM@CPPLJOGPSNBUJPO ܧঝͨ͠ΫϥεͰ਌Ϋϥεͱಉ໊ͷϝιο υ͕͋Δ৔߹ɺϝιου͸ܧঝͨ͠Ϋϥε ͷ΋ͷ͕༏ઌͯ͠ݺ͹Ε·͢ɻ͔͠͠ɺ਌ ΫϥεͷϝιουΛ্ॻ͖ͯ͠͠·͏Θ͚ Ͱ͸ͳ͘ɺTVQFSͱ͍͏໋ྩΛ࢖͏ͱ਌ Ϋϥεͷಉ໊ϝιουΛݺͼग़͢͜ͱ͕Ͱ ͖·͢ɻ ҎԼͷ#PPLΫϥεΛܧঝͨ͠ %JHJUBM#PPL ిࢠॻ੶ ΫϥεΛ࡞Γɺ ਌Ϋϥεʹ͋Δϝιουͱಉ໊ͷϝιου Λ࡞Γɺϝιου಺ͰTVQFSΛݺͼग़͠ ͯಈ࡞Λ֬ೝͯ͠Έ͍ͯͩ͘͞ɻ 
  14. ॏෳ͕ଟ͍ίʔυ ॏෳ͕ଟ͍ίʔυ͸ɺಈ࡞Λมߋ͍ͨ͠ͱ͖ʹͨ͘͞Μॻ͖ ׵͑Δඞཁ͕͋Γ·͢ɻ DMBTT"MJDF EFGIJ ͜Μʹͪ͸ FOE FOE DMBTT#PC EFGIJ

    ͜Μʹͪ͸ FOE FOE ͜Μʹͪ͸Λ IJʹ มߋ͍ͨ͠ DMBTT"MJDF EFGIJ IJ FOE FOE DMBTT#PC EFGIJ IJ FOE FOE ͜ͷ৔߹͸Օॴ௚͞ͳ͍ͱ͍͚ͳ ͍͚ͲɺճͰࡁ·ͤΒΕͳ͍͔ʁ 
  15. .PEVMF NPEVMFʹϝιουΛఆ͓ٛͯ͘͠ͱɺΫϥεʹJODMVEFจΛ ॻ͘͜ͱͰɺNPEVMFͷϝιουΛ௥Ճ͢Δ͜ͱ͕Ͱ͖·͢ɻ NPEVMF(SFFUJOH EFGIFMMP QVUT)FMMP FOE FOE DMBTT"MJDF JODMVEF(SFFUJOH

    FOE BMJDF"MJDFOFX BMJDFIFMMPIFMMP JODMVEFͨ͠"MJDFΫϥεʹ ͸IFMMPϝιου͕௥Ճ͞Ε ·͢ɻ ϞδϡʔϧΛఆٛ͠·͢ɻ Ϟδϡʔϧʹ͸ϝιουΛ ఆٛ͠·͢ɻ 
  16. .PEVMF NPEVMF(SFFUJOH EFGIFMMP QVUT)FMMP FOE FOE DMBTT"MJDF JODMVEF(SFFUJOH FOE DMBTT"MJDF

    EFGIFMMP QVUT)FMMP FOE FOE ҎԼͷͭͷ"MJDFΫϥε͸ಉ͡ಈ࡞ʹͳΓ·͢ɻ ಉ͡ ಈ࡞
  17. .PEVMF ෳ਺ͷΫϥεͰಉ͡ϝιουΛར༻͍ͨ͠ͱ͖ʹNPEVMF Λ࢖͏ͱॏෳͳ͘ॻ͚ΔͷͰศརͰ͢ɻ NPEVMF(SFFUJOH EFGIFMMP QVUT)FMMP FOE FOE DMBTT"MJDF JODMVEF(SFFUJOH

    FOE BMJDF"MJDFOFX BMJDFIFMMPIFMMP DMBTT#PC JODMVEF(SFFUJOH FOE CPC#PCOFX CPCIFMMPIFMMP ΋͠΋IFMMPϝιουͰදࣔ͢ Δ)FMMPΛ͜Μʹͪ͸ʹม͍͑ͨ৔ ߹͸͜ͷϞδϡʔϧ͚ͩมߋ͢Ε͹ྑ͍
  18. JODMVEFͱSFRVJSFͷҧ͍ SFRVJSFPUIFS IJIJ NPEVMF(SFFUJOH EFGIFMMP QVUTIFMMP FOE FOE DMBTT)VNBO JODMVEF(SFFUJOH

    FOE )VNBOOFXIFMMPIFMMP JODMVEF͸NPEVMFͰఆٛ͞Ε͍ͯ ΔϝιουΛ௥Ճ͢Δ໋ྩɻ NPEVMF໊Λࢦఆ͢Δɻ SFRVJSF͸ଞͷϑΝΠϧ SC Ͱఆ ٛ͞Ε͍ͯΔϝιου΍ΫϥεɺϞ δϡʔϧΛಡΊΔΑ͏ʹ͢Δ໋ྩɻ ϑΝΠϧ໊Λࢦఆ͢Δɻ EFGIJ QVUTIJ FOE PUIFSSC NBJOSC ࠞಉ͠қ͍ͭͷ໋ྩɺͦΕͧΕͷҙຯΛ෮श͓͖ͯ͠·͠ΐ͏ɻ
  19. .PEVMFԋश໰୊Cղ౴ ্ڃ ԋश໰୊Ͱॻ͍ͨ(SFFUJOHϞδϡʔϧΛผͷϑΝΠϧ΁อଘ ͍ͯͩ͘͠͞ɻSFRVJSFจΛ࢖ͬͯಡΈࠐΈɺಉ༷ͷಈ࡞Λ͢Δ ίʔυΛॻ͍͍ͯͩ͘͞ɻ SFRVJSFNPEVMF@HSFFUJOH DMBTT"MJDF JODMVEF(SFFUJOH FOE BMJDF"MJDFOFX

    BMJDFIJIJ NPEVMF(SFFUJOH EFGIJ QVUTIJ FOE FOE BMJDFSC NPEVMF@HSFFUJOHSC ˞ී௨͸͜Μͳ௕͍ϑΝΠϧ໊Λ෇͚ ͣʹྫ͑͹HSFFUJOHSCͱ͠·͢ɻ ͜͜Ͱ͸ϑΝΠϧ໊ͱϞδϡʔϧ໊Λ ෼͚ͯઆ໌͔ͨͬͨ͠ͷͰɾɾɾ ˢSFRVJSF͸ϑΝΠϧ໊ ˢJODMVEF͸Ϟδϡʔϧ໊ SVCZBMJDFSC