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

超初心者向けOO/OOP入門

 超初心者向けOO/OOP入門

未経験者の新卒レベル向け。あまり本気にしないでください。

※ リンクが消えています。SlideShare版はこちら http://www.slideshare.net/tmyymmt/oooop-69725508

# リンク集

- Wikipedia
- オブジェクト指向
- https://ja.wikipedia.org/wiki/オブジェクト指向
- オブジェクト指向プログラミング
- https://ja.wikipedia.org/wiki/オブジェクト指向プログラミング
- Object-oriented programming (大抵、英語の方が詳しくて、マトモ)
- https://en.wikipedia.org/wiki/Object-oriented_programming

- オブジェクトの広場 by オージス総研の有志
- https://www.ogis-ri.co.jp/otc/hiroba/topic/oo.html

- 割と最近、話題になったもの
- オブジェクト指向と10年戦ってわかったこと (炎上ネタ)
- https://qiita.com/tutinoco/items/6952b01e5fc38914ec4e
- オブジェクト指向と20年戦ってわかったこと (マトモなフォロー)
- https://qiita.com/shibukawa/items/2698b980933367ad93b4

Tomoya Yamamoto

December 01, 2016
Tweet

More Decks by Tomoya Yamamoto

Other Decks in Technology

Transcript

  1. w ܦྺ w ిؾ௨৴େֶɹిؾ௨৴ֶ෦ɹ৘ใ޻ֶՊɹଔ w גࣜձࣾχϧιϑτ΢ΣΞ w ֤छݚڀॴͷ৽نݚڀͷडୗ։ൃɺϓϩτλΠϓΛ ݚڀ಺༰ͷ૬ஊ͔Βιϑτ੍࡞·Ͱʢ%$"%ɺҩ ྍ$5ɺܗࣜతهड़πʔϧɺଞʣ

    w ࣗࣾ੡඼։ൃʢ6.-πʔϧɺ,"04πʔϧɺͳͲʣ w ݸਓࣄۀओ w όϯΫʔόʔʹ೥଺ࡏ w גࣜձࣾηϨε w ϞοϐʔδϣϒʢओʹόοΫΤϯυɺֆඳ͖Ҏ֎ͷ ϑϩϯτ΍Δ͜ͱ΋ʣ w εϚʔτ΢Υονʢ΢ΥονϑΣΠεͷاըɺ੍࡞ ਐߦɺ։ൃɺֆඳ͖Ҏ֎શ෦ʣ  自己紹介 • 山本智世(ともや) • 言語 • 日本語、英語(少し)、Java、C、C++、 JavaScript、PHP、Swift(少し) • ジャンル • アプリ、Web •    tmyymmt.net(個人的な活動) • ピンポイント天気予報(iGoogle、ブ ログパーツ)、Androidアプリ、ゲー ム攻略サイト、日本酒紹介サイト、他
  2. ネットに先人の良質な説明がイロイロ あります。それを一通り読みましょう • Wikipedia • オブジェクト指向 • オブジェクト指向プログラミング • Object-oriented

    programming (大抵、英語の方が詳しくて、マトモ) • オブジェクトの広場 by オージス総研の有志 • ネットだと一番分かりやすくて詳しいかも • 割と最近、話題になったもの • オブジェクト指向と10年戦ってわかったこと (炎上のネタ元。本気にしちゃ嫌) • オブジェクト指向と20年戦ってわかったこと (マトモなフォロー)
  3. OOとOOPの違いって何? • OO(オブジェクト指向) • 「オブジェクト指向」という概念 • 概念は抽象度が高いので、割と普遍的 • OOP(オブジェクト指向プログラミング) •

    「オブジェクト指向を用いたプログラミング」の方法 • プログラミング言語によって、OOを簡単に適用できた り、(無茶しないと)適用できなかったり
  4. で、OO/OOPって何? • 歴史 • OOPは、1950年台後半からMIT辺りで出てきたっぽい • それ以前には何があったの?(OOPに関係しそうなものだけ抜粋) • 機械語(バイナリ。CPUの命令文のリストを上から順番に実行。) •

    アセンブリ言語(機械語を人間に分かりやすい記述に置き換えた。アセンブラで機械語に変換。) • GOTOだらけの時代(規模が大きいと、人間は処理の内容を順番に追っかけるだけで大変。) • 構造化プログラミング(順次、反復、分岐。極力GOTO使わない。) • モジュールプログラミング(サブルーチン、関数、処理のモジュール化。) • 詳しくは • 放送大学の授業見るなり、MITの授業見るなり、「コンピュータの歴史」や「ソフトウェア開発関係 の歴史」を調べてください
  5. それ以前と何が違うの? • それ以前 • データはデータ、処理は処理として、(別々に)扱っていた • 処理のモジュール化、データ構造の整理整頓しても、どこに何があって、どこで どこまで処理して、このデータはどこで定義されてるの?ってのが分かりにくかっ た(コンピュータみたいに、追っかければわかるけど、人間にはシンドイ。) •

    OO/OOP • 責務単位でひとまとまりにして、データと処理を一緒に持たせたら、関心のある 責務の部分ごとに見ればよくなるから、分かりやすくなって、楽になるのでは? • それって、現実界で言う「モノ」では? → オブジェクト • これだけがモチベーションではない。と思う…
  6. OO/OOPの向き不向き • 向いてるもの • フレームワーク、ライブラリなど • GUIとか • マシンリソースが潤沢なプロジェクト •

    向いてないもの • パフォーマンスやメモリ効率を最大化したい • 3D関係や、組み込み関係だと、CやC++でOOP関係なしに書いてた り… • マシンリソースが貧弱な環境
  7. おしまい ネットに先人の良質な説明がイロイロあります。それを一通り読みましょう • Wikipedia • オブジェクト指向 • オブジェクト指向プログラミング • Object-oriented

    programming (大抵、英語の方が詳しくて、マトモ) • オブジェクトの広場 by オージス総研の有志 • ネットだと一番分かりやすくて詳しいかも • 割と最近、話題になったもの • オブジェクト指向と10年戦ってわかったこと (炎上のネタ元。本気にしちゃ嫌) • オブジェクト指向と20年戦ってわかったこと (マトモなフォロー)