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
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
オブジェクト指向がわからない(202201社内勉強会)
月一で実施している社内勉強会の資料です(2022.01)
shimadamiyuki
January 20, 2022
More Decks by shimadamiyuki
See All by shimadamiyuki
20240912 JJUGナイトセミナー
mii1004
0
270
STORES決済の裏側のはなし(Code Polaris 色んなエンジニアLT大会)
mii1004
0
320
たのしい情報収集(202112社内勉強会)
mii1004
0
130
リファクタリング?(202111社内勉強会)
mii1004
0
120
OpenAPI Generator使ってみる(Java女子部ハロウィンLT)
mii1004
0
100
ビルドツールの話(202110社内勉強会)
mii1004
0
150
Hello Spring(202109社内勉強会)
mii1004
0
140
StreamAPI, Lambdaと仲良くなる(202108社内勉強会)
mii1004
0
150
Javaはじめのいっぽ(202107社内勉強会)
mii1004
0
160
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Building an army of robots
kneath
306
46k
Site-Speed That Sticks
csswizardry
13
1.2k
The SEO identity crisis: Don't let AI make you average
varn
0
480
Abbi's Birthday
coloredviolet
2
7.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Thoughts on Productivity
jonyablonski
76
5.2k
Being A Developer After 40
akosma
91
590k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
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