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
99
オブジェクト指向がわからない(202201社内勉強会)
月一で実施している社内勉強会の資料です(2022.01)
shimadamiyuki
January 20, 2022
Tweet
Share
More Decks by shimadamiyuki
See All by shimadamiyuki
20240912 JJUGナイトセミナー
mii1004
0
200
STORES決済の裏側のはなし(Code Polaris 色んなエンジニアLT大会)
mii1004
0
240
たのしい情報収集(202112社内勉強会)
mii1004
0
68
リファクタリング?(202111社内勉強会)
mii1004
0
60
OpenAPI Generator使ってみる(Java女子部ハロウィンLT)
mii1004
0
57
ビルドツールの話(202110社内勉強会)
mii1004
0
78
Hello Spring(202109社内勉強会)
mii1004
0
74
StreamAPI, Lambdaと仲良くなる(202108社内勉強会)
mii1004
0
85
Javaはじめのいっぽ(202107社内勉強会)
mii1004
0
83
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
137
6.7k
How to train your dragon (web standard)
notwaldorf
88
5.7k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
How to Ace a Technical Interview
jacobian
276
23k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Embracing the Ebb and Flow
colly
84
4.5k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
530
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