Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
オブジェクト指向がわからない(202201社内勉強会)
Search
shimadamiyuki
January 20, 2022
0
140
オブジェクト指向がわからない(202201社内勉強会)
月一で実施している社内勉強会の資料です(2022.01)
shimadamiyuki
January 20, 2022
Tweet
Share
More Decks by shimadamiyuki
See All by shimadamiyuki
20240912 JJUGナイトセミナー
mii1004
0
240
STORES決済の裏側のはなし(Code Polaris 色んなエンジニアLT大会)
mii1004
0
270
たのしい情報収集(202112社内勉強会)
mii1004
0
98
リファクタリング?(202111社内勉強会)
mii1004
0
87
OpenAPI Generator使ってみる(Java女子部ハロウィンLT)
mii1004
0
74
ビルドツールの話(202110社内勉強会)
mii1004
0
110
Hello Spring(202109社内勉強会)
mii1004
0
96
StreamAPI, Lambdaと仲良くなる(202108社内勉強会)
mii1004
0
110
Javaはじめのいっぽ(202107社内勉強会)
mii1004
0
120
Featured
See All Featured
A Tale of Four Properties
chriscoyier
160
23k
Agile that works and the tools we love
rasmusluckow
329
21k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
Adopting Sorbet at Scale
ufuk
77
9.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
Become a Pro
speakerdeck
PRO
28
5.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Site-Speed That Sticks
csswizardry
10
670
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
17
950
Transcript
オブジェクト指向が わからない 1⽉チーム会
オブジェクト指向 わかりますか︖
オブジェクト指向 よくわからない オブジェクト指向とは〇〇だ︕ みたいな結論はないので、 ふんわりした話をします。
オブジェクト指向の登場 Smalltalkの開発者 Alan Kay C++の開発者 Bjarne Stroustrup オブジェクト指向とは メッセージ オブジェクト指向とは
ユーザ定義型と継承 こっちの考え⽅が広まった
プログラミング誕⽣ 構造化プログラミング オブジェクト指向 プログラミング 関数プログラミングの エッセンス 1960年代 1970年前後 1940年代 1970年代
PCが誕⽣ 1990年代 インターネットが普及
構造化プログラミングがないとき 構造化プログラミングがあるとき ・・・ goto: 処理B 処理Aʼ GOTO⽂で処理がジャンプする →プログラムが分割できない →再利⽤性が低い GOTOを禁⽌し、「順次、選択、反復」で
プログラミングをする (if, while, for など) →プログラムを⼩さな単位に分割できる →再利⽤性が上がる、テストができる 処理A 処理C 処理Bʼ 処理A 処理Aʼ 処理B 処理Bʼ 処理C 構造化プログラミング︖
オブジェクト指向で何が変わったのか 現実世界のモノ(オブジェクト)の 模型(モデル)を作りたい・・・ ⼈ お⾦ 数式 家具 形 値と処理をひとまとめにできる⼊れ物(=クラス)を作ろう︕ ねこ
スイッチ ・名前(値) ・⾊(値) ・起きているかどうか(値) ・鳴く(処理) ・寝る(処理) ・形(値) ・押されているかどうか(値) ・押された時の動作(処理)
クラスがないとき クラスがあるとき Cのユーザ定義型 ねこ ・名前 ・⾊ ・起きているか Perlのモジュール スイッチ ・形
・押されているか ・押された時の動作 → 値と処理を⼀緒に持てない → 値と処理を⼀緒に持てるけど スイッチがいくつもあったら スイッチの数のモジュールが必要 ねこ ・名前 ・⾊ ・起きているか ・鳴く ・寝る ・きなこ ・茶⾊ ・起きている ・鳴く ・寝る クラス ・たま ・灰⾊ ・寝ている ・鳴く ・寝る インスタンス 値と処理がまとめられる︕ 再利⽤ができる︕
とはいえ • クラスに対する考え⽅、仕様は⾔語によってさまざま • Javaでは全ての変数、処理がクラスに所属するので、 クラスを使わずにプログラムを書くことはできない。 • 多くのオブジェクト指向⾔語では、 クラスを使わずにプログラムを書くことも、 クラスを使ってプログラムを書くこともできる。
(C++, Python, Rubyなど)
あれまだやってないけど︖ • カプセル化 • ポリモーフィズム • 継承 Software Design 2021年3⽉号
Javaでもう⼀度学び直すオブジェクト指向プログラミング https://gihyo.jp/magazine/SD/archive/2021/202103 こちらがおすすめです
カプセル化といえばgetter/setterでしょ︕ カプセル化なのにgetter/setterを作るのは・・・ オブジェクト指向なら継承使わなきゃ︕ なるべく継承は使わないほうがいいよね 時代や状況によって考え⽅はどんどん変わっていく。 10年後には全然別の考え⽅が主流になっているかも。 • 既存の設計、実装の背景を考えよう • トレンド、知識をキャッチアップし続けよう
参考⽂献 • コーディングを⽀える技術―成り⽴ちから学ぶプログラミング作法 https://gihyo.jp/book/2013/978-4-7741-5654-5 • Clean Architecture 達⼈に学ぶソフトウェアの構造と設計 https://www.kadokawa.co.jp/product/301806000678/ •
Software Design 2021年3⽉号 Javaでもう⼀度学び直すオブジェクト指向プログラミング https://gihyo.jp/magazine/SD/archive/2021/202103