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