getterとsetterについて解説します【オブジェクト指向プログラミング】
Вставка
- Опубліковано 8 лип 2024
- オブジェクト指向プログラミングに登場するgetterとsetterについて解説しました!
けど実はgetterとsetterはほとんど使いません!その理由も話します!
▼オブジェクト指向プログラミングシリーズの再生リスト▼
• オブジェクト指向について語る
▼Python講座のリンク▼
www.udemy.com/course/starting...
▼Slackコミュニティの招待リンク▼
join.slack.com/t/web-uro1658/...
▼目次▼
0:00 イントロダクション
2:19 メンバ変数について復習
3:56 人間はどんなデータを持つ?
5:05 メンバ変数のまとめ
5:31 カプセル化について
7:06 privateにする理由
9:05 getterとsetterについて
11:09 イミュータブルとミュータブル
12:53 getterとsetterは不要
14:27 getterとsetterを使わない方法
17:38 必要最低限の情報を公開する
19:46 おわりに
----Web万屋エンジニアチャンネル-----
Webサーバーサイド
⇒Webフロントエンド
⇒Androidアプリ開発
⇒AI開発
⇒CloudArchitect
など様々な業務経験がある万屋エンジニアのおさないが運営するチャンネルです。
Webエンジニア関する様々なことを発信していきます。
Web万屋エンジニアのTwitterアカウント
/ yorozuyaosanai
#エンジニア#プログラマ#プログラミング#オブジェクト指向 - Наука та технологія
getter,setterの端的な意味ではなく応用的な方法も知ることで深く理解ができてとてもありがたいです。。。
いままでで一番スッキリ腹落ちする説明でした!
とても助かりました。
ありがとうございます。
さらに良いプログラムにしたいなら、Genderクラスをつくるのが良いのでしょうか?
もしくはJavaでいうenum?
めちゃくちゃ参考になりました!
いえ、ご視聴ありがとうございます😄
これは実務の話だと思うのでとても有用でした。私は独学で学んでいるのでゲッターセッターは、使うことが普通だと思ってましたがこの動画を見て不要の理由を理解しました。
解りやすいですね!理解出来ました💪
ありがとうございます!😄
個人的にはこれぐらいのレベル感の動画が増えてくれると喜びます。
このレベルの動画だとあんまり伸びないんで、頻度は少なめになってしまいますね…😅
けどちょっとレベルが高めのコンテンツも出すようにします!
もしよろしければSlackの方にご参加いただければ、そちらの方では動画の伸びとか気にせず話せるのでどうぞ!
早速拝見いたしました!有益な動画ありがとうございます!コードでの解説もありゲッターとセッターについてやっと腹落ちしました😊本当感謝します😭
よかった…ちょっと難しすぎたかな…と不安になってました…😅
後ろの画像はスマホに鍵をかけてるということなんですね!笑
わかりやすかったです!ありがとうございました!!!!
おさないさん、本当にありがたいです!もう、いつも欲しいと思った動画がちょうどあるって感覚に感動しています!😭
お時間あるときで大丈夫ですが、phpで、if文でエラーメッセージを出すときの構文があると本当に嬉しいです!
リクエストがニッチ過ぎるw
ポリモーフィズムの解説も是非していただきたいです。
お任せあれ!
プログラマー2年目ですがとても勉強になります。
是非オブジェクト指向マスターしましょう!
atom-one-dark 私も使ってます!
おそろっち!
クラス、インスタンス、プロパティ、メソッド。クラス変数は基本的にはprivateにしてカプセル化。データを外に見せず外から書き換えられないというところが肝。10:55 privateだと見えないし書き換えられない。publicにすれば見られる書き換えられる。privateのとき、9:26 get変数名ゲッター取得する、set変数名セッター書き換える。
思わず「お〜」と声出てしまった。
腹から声出してこ
getterとsetterを知りたかっただけなのですが、
変更箇所を増やさないカプセル化、すごく勉強になりました!
ありがとうございます。
これでまたソースコードが少し綺麗になりそうです^^
参考になる動画ありがとうございます。
getterがいらない理由はわかるのですが
setterがいらない理由はあまり言及がなかったように思ったのですがどうなのでしょうか?
何かの設定アプリなどの場合インスタンス化した後に保持しているデータ(プロパティまたはフィールド)を編集したくなるケースがあると思うのですが。
setterを作らないなら編集せず
毎回データモデルのインスタンス化を
することになり、それはそれでパフォーマンスの面などからどうなのかなって思いました。
"Premature optimization is the root of all evil in programming."
こういうわかりにくい用語や概念を解説してくれる動画嬉しいです。なぜ使わないのか、じゃあどうするのかまで解説されているのでわかりやすいです。
ところで、動画で眼鏡をかけるのはやめたのですか?個人的にはかけていないほうがオットコマエだとは思いますが、見にくそうなので。
ありがとうございます!理解していただけたようで嬉しいです!
メガネはですね、
・照明がレンズに反射して気になる
・陰キャ感が増す
という理由から外して撮影するようにしてます。
こんばんは!
例では性別のように決まった値のどれかを知りたい場合でしたので真偽値を返すメソッドでいいということは理解できました!
質問なのですがnameやageなどの場合はgetter を使わずにクラスの外から値を取得するにはどうすればいいのでしょうか?
ケースバイケース!
あと、外から値を『取得しよう』としてる時点でもうオブジェクト指向の考え方から外れてるからそこを考え直して!
考え方を変えてください!
ドリルの下りはめちゃめちゃ響いた( 笑)
喋りが早口で有名なyoutuberのスーツよりも早くてビックリしました。Udemyよりは、2倍速にしても聴き取れる速度の講座がよく売れるそうですが、youtubeにも同じことが言えるんじゃないですか?
私自身は早口でも何でもなくて、編集で少し早回しにしています
喋りがグダグダしてると別の動画に飛ばれてしまうので、なるべくテキパキ伝えられるようにとの意図です!
いいですね、カプセル化については誤解を生む情報が多いので気を付けないといけませんよね。
現在、プロゲートにてPHPを勉強中です。private情報は全てゲッターで取得入力しているのですが、間違っているのでしょうか?
間違ってはいませんよ!😄
利用シーンによりけりだと思いますが、
ドメインモデルやvalue objectなんかは例外では無いでしょうか?
例外じゃない!
@@programming-academy データの持ち回りの目的でオブジェクトを利用するケースは?
プロパティだけではなくメソッド(ロジック)も包含したクラスインスタンスを持ち回るケースは日頃あります。
それでも外部参照は悪手だと言い張ります?
代替手段はどの様に実装してますか?
そんな目的でクラス作ったことないのでわかりません!
私は日頃そのようなコード実装してないので!
あと動画でも言ってますけど、どうしても必要なら外部参照したらいいと思いますよ。基本的にいらないって言ってるだけです。
@@programming-academy 丁寧なレス有難う御座います。
もちろんカプセル化とデータの保全性を理解した上での設計実装ですが、ある程度の規模のアプリケーションなら必要かな・・と。
ほかの方はどんなでしょかね?
外部出力(ネットワーク出力、ファイル出力、HTMLに出力)する部分以外は基本的に不要ですかね。
少なくとも私が実装するときはそうします。
あとはドメインロジックをよく考えてうまく抽象化すれば大丈夫ですかね。
実際の業務ロジックにgetterに相当するような業務はないはずです。
(特定の対象が保持している情報を要請に応じて外部にそのまま公表する)
本来存在するべき処理やクラスの存在を見逃すとgetterを実装してしまうと思いますね。
ワイ史上最も飽きて辞めて欲しくないUA-camr
おお…そんなに気に入っていただけて光栄です…
引き続き応援いただけると嬉しいです
javaのブロンズやってたときに出てきて、結局変更してるなら直にいじればいいじゃんって思ってました。
そもそも参照すらさせないんですね。知りませんでした。
参照させた時点で負け!!くらいの意識で書くとちょうどいい気がします!😊
Javaを勉強してるけど、書き方が似てる。
言い回しがちょっと違うぐらいだ。
すごくわかりやすい説明ですね!
ですが、若干例が悪いのかも?じゃあ何にしたらいいんだよと言われると悩みますが…。
人物データとかだと、データベースから読みこんだデータを保持しているクラスみたいなイメージになると思うので、”中身が見たくて読みこんだのに見れないってどういうこと!?”という疑問が当然出てくると思います。publicは一切使うなとおっしゃってますが、データベースなどの情報の入出力に直接絡むものは例外なんだと思います。この理解がないから、みんなむやみやたらとgetter/setterを書きまくってるんじゃないかぁ?と思います。
入出力部分でもprivateにできますよ😄
@@programming-academy そうか、クラス内でecho すればHTML出力は可能だからまぁMVCフレームワークでもprivateにできなくはないか。確かにメリットはあるような気がする。でも、いちいちメソッドつくるのめんどくさそう。私の界隈は意識低い系多いから、そんな設計してたら変人呼ばわりされそうだな(笑)ためになりました!
おぉ😳
すぐやり方思いつくのすごいですね😳
頭やわらかいですね😳
わからないんじゃないかと思ってました…。お見逸れいたしましたm(_ _)m
@@programming-academy まぁ20年プログラマやってますもんで(苦笑)時間があるんでオブジェクト指向を勉強しなおしていますが、今は本当にわかりやすい教材がネットにあふれていていいですね!昔は何書いてあるんだかわからん本しかなかったんで、独学だと結構あやふやな知識だったりします。逆に言うと、昔はそんなんでも行けたけど、今の子たちはたいへんだわ。これからも頑張って、いい情報発信してくださいませ!
先輩の方でございましたか…🙇♂️
大変失礼な対応をしてしまいましたこと心よりお詫び申し上げます🙇♂️
この場で腹を掻っ捌きます🔪