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
180
オブジェクト指向がわからない(202201社内勉強会)
月一で実施している社内勉強会の資料です(2022.01)
shimadamiyuki
January 20, 2022
Tweet
Share
More Decks by shimadamiyuki
See All by shimadamiyuki
20240912 JJUGナイトセミナー
mii1004
0
260
STORES決済の裏側のはなし(Code Polaris 色んなエンジニアLT大会)
mii1004
0
300
たのしい情報収集(202112社内勉強会)
mii1004
0
120
リファクタリング?(202111社内勉強会)
mii1004
0
110
OpenAPI Generator使ってみる(Java女子部ハロウィンLT)
mii1004
0
91
ビルドツールの話(202110社内勉強会)
mii1004
0
140
Hello Spring(202109社内勉強会)
mii1004
0
120
StreamAPI, Lambdaと仲良くなる(202108社内勉強会)
mii1004
0
140
Javaはじめのいっぽ(202107社内勉強会)
mii1004
0
150
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
330
The Pragmatic Product Professional
lauravandoore
37
7.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Six Lessons from altMBA
skipperchong
29
4.1k
Thoughts on Productivity
jonyablonski
73
5k
Designing for humans not robots
tammielis
254
26k
The SEO identity crisis: Don't let AI make you average
varn
0
47
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
420
Heart Work Chapter 1 - Part 1
lfama
PRO
4
35k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
130
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
220
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
37
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