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

オブジェクト指向プログラミングについて調べてみた

yn2011
August 31, 2018

 オブジェクト指向プログラミングについて調べてみた

オブジェクト指向プログラミングとは何か/その歴史と価値について

yn2011

August 31, 2018
Tweet

More Decks by yn2011

Other Decks in Programming

Transcript

  1. ΦϒδΣΫτࢦ޲ϓϩάϥϛϯά͸ ϓϩάϥϛϯάͷύϥμΠϜͷ1ͭ • ϓϩάϥϛϯάͷύϥμΠϜͱ͸ • ϓϩάϥϛϯάͷߟ͑ํɾํ๏ • 40೥Ҏ্৽͍͠ύϥμΠϜ͸ొ৔͍ͯ͠ͳ͍ ߏ଄Խ ϓϩάϥϛϯά

    ؔ਺ܕ ϓϩάϥϛϯά 1958೥(Lisp) 1960೥લ൒(Simula) 1960೥୅ޙ൒(ఏএ) δϣϯɾϚοΧʔγʔ ΦʔϨʹϤϋϯɾμʔϧ ΫϦεςϯɾχΰʔϧ ΤυΨʔɾμΠΫετϥ ύϥμΠϜൃݟ(࣮૷ͷొ৔)ͷ࣌ܥྻ ΦϒδΣΫτࢦ޲ ϓϩάϥϛϯά
  2. ΦϒδΣΫτࢦ޲ϓϩάϥϛϯάͷىݯ Simula • 1967 ೥ɺίϯϐϡʔλγϛϡϨʔγϣϯͷͨΊͷݴޠͱ͠ ͯ։ൃ͞Εͨ(Simulation Language) • ౰࣌͸ΦϒδΣΫτࢦ޲ͱ͍͏ݴ༿͸ͳ͔ͬͨ •

    ΦϒδΣΫτࢦ޲ݴޠʹݟΒΕΔಛ௃Λ͍ͭ͘΋͍࣋ͬͯͨ • e.g. ΦϒδΣΫτɺΫϥεɺܧঝɺΨϕʔδίϨΫγϣϯ౳ • γϛϡϨʔγϣϯʹ࢖༻͢ΔϞσϧΛΦϒδΣΫτͰදݱ
  3. “ΦϒδΣΫτͱϝοηʔδϯά"ͷ Smalltalk • 1970 ೥୅ɺύϩΞϧτݚڀॴͰΞϥϯɾέΠΛத৺ʹ։ൃ͞Εͨ • ΞϥϯɾέΠͷΦϒδΣΫτͱϝοηʔδϯάͱ͍͏Ϟσϧ͕جૅ • ҎԼͷӨڹΛड͚͍ͯΔ •

    Simula ͷΦϒδΣΫτ • ΞϥϯɾέΠͷϝοηʔδϯά • ڭҭ༻ݴޠ LOGO • ΦϒδΣΫτࢦ޲ͱ͍͏ݴ༿͸ Smalltalk ͷ։ൃΛ௨ͯ͡ੜ·Εͨ
  4. ߏ଄ԽϓϩάϥϛϯάͷԆ௕ͱͯ͠ͷ C++ • 1983 ೥ɺϕϧݚڀॴʹͯϏϟʔωɾετϩϰετϧοϓʹΑΓ։ൃ͞ Εͨ • ౰ॳͷ໊લ͸ C with

    Classes • Simulla ͷಛ௃Λ C ݴޠʹऔΓೖΕΔ͜ͱ͕໨తͩͬͨ • Smalltalk ͷӨڹ͸ݟΒΕͳ͍ • e.g. base class, derived class • ߏ଄ԽϓϩάϥϛϯάͷύϥμΠϜ(C ݴޠ)ͷԆ௕ʹΦϒδΣΫτࢦ޲ϓ ϩάϥϛϯά(Simulla)ΛऔΓೖΕ͍ͯΔ
  5. ϙϦϞʔϑΟζϜ͸ؔ਺΁ͷϙ ΠϯλͷԠ༻ struct FILE { … int (*read)(); … }

    ̴̧̱̾́̓ ̘ɽ̸̢̰́̓̽; ֯ ੐య; ߴ໦ ਖ਼߂. Clean ArchitectureɹୡਓʹֶͿιϑτ΢ΣΞͷߏ଄ͱઃܭ (ΞεΩʔυϫϯΰ) (Kindle ͷҐஔNo.877-878). גࣜձࣾυϫϯ ΰ. Kindle ൛. ΑΓҾ༻ #include "file. h" … int read() {int c;/*...*/ return c;} … struct FILE console = {open, close, read, write, seek}; extern struct FILE* STDIN; int getchar() { return STDIN->read(); } • UNIXͷඪ४ೖྗͱඪ४ग़ྗͷҰྫ
 • ࣮૷͕IOσόΠεʹґଘ͠ͳ͍ • getcharؔ਺
 ˠSTDINߏ଄ମͷϝϯόͷreadؔ਺ ϙΠϯλ
 ˠϙΠϯλͷࢦؔ͢਺ • STDIN͕ΠϯλʔϑΣʔε૬౰ ίʔυྫ(Cݴޠ)
  6. ؔ਺ϙΠϯλͷ໰୊ • ϙΠϯλ͸ෆศͰةݥʁ • Cಛ༗ͷ໰୊ • ϙΠϯλͷએݴ͕ಡΈʹ͍͘ • e.g. int

    (*func_p)(int a) ͸intΛฦ͢Ҿ਺intͷؔ਺΁ͷϙΠϯλfunc_pͷએݴ(ࠞཚ) • ؔ਺͸ࣜͷதͰ͸ؔ਺΁ͷϙΠϯλʹಡΈସ͑ΒΕΔͱ͍͏ϧʔϧ • e.g. ίʔϧόοΫؔ਺func1ͷ౉͠ํ͸func(func1)΋func(&func1)΋OK • Ұൠతͳ໰୊ • ෳࡶԽ͢Δͱσόοά͕೉͍͠ • ྖҬഁյ લڮ ࿨໻ (2001೥) . CݴޠϙΠϯλ׬શ੍೼((ඪ४ϓϩάϥϚʔζϥΠϒϥϦ) ٕज़ධ࿦ࣾ ΑΓཁ໿
  7. ࢀߟจݙ • ̴̧̱̾́̓ ̘ɽ̸̢̰́̓̽; ֯ ੐య; ߴ໦ ਖ਼߂(2018) Clean Architectureɹୡਓʹֶ

    Ϳιϑτ΢ΣΞͷߏ଄ͱઃܭ. υϫϯΰ. • ·ͭ΋ͱΏ͖ͻΖ(2016). ·ͭ΋ͱΏ͖ͻΖ ݴޠͷ͘͠Έ. ೔ܦBPࣾ. • લڮ ࿨໻ (2001) . CݴޠϙΠϯλ׬શ੍೼((ඪ४ϓϩάϥϚʔζϥΠϒϥϦ) .ٕज़ධ࿦ࣾ . Πϥετ • ͔Θ͍͍ϑϦʔૉࡐू͍Β͢ͱ΍