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

  • @user-vh5dr6ve3h
    @user-vh5dr6ve3h2 жыл бұрын

    getter,setterの端的な意味ではなく応用的な方法も知ることで深く理解ができてとてもありがたいです。。。

  • @user-ly2uv2jx1y
    @user-ly2uv2jx1y4 жыл бұрын

    早速拝見いたしました!有益な動画ありがとうございます!コードでの解説もありゲッターとセッターについてやっと腹落ちしました😊本当感謝します😭

  • @programming-academy

    @programming-academy

    4 жыл бұрын

    よかった…ちょっと難しすぎたかな…と不安になってました…😅

  • @secondlife4337
    @secondlife4337 Жыл бұрын

    これは実務の話だと思うのでとても有用でした。私は独学で学んでいるのでゲッターセッターは、使うことが普通だと思ってましたがこの動画を見て不要の理由を理解しました。

  • @sknclassroom-6414
    @sknclassroom-64143 жыл бұрын

    おさないさん、本当にありがたいです!もう、いつも欲しいと思った動画がちょうどあるって感覚に感動しています!😭 お時間あるときで大丈夫ですが、phpで、if文でエラーメッセージを出すときの構文があると本当に嬉しいです!

  • @programming-academy

    @programming-academy

    3 жыл бұрын

    リクエストがニッチ過ぎるw

  • @zonorix
    @zonorix4 жыл бұрын

    個人的にはこれぐらいのレベル感の動画が増えてくれると喜びます。

  • @programming-academy

    @programming-academy

    4 жыл бұрын

    このレベルの動画だとあんまり伸びないんで、頻度は少なめになってしまいますね…😅 けどちょっとレベルが高めのコンテンツも出すようにします! もしよろしければSlackの方にご参加いただければ、そちらの方では動画の伸びとか気にせず話せるのでどうぞ!

  • @mm-oc5rf
    @mm-oc5rf Жыл бұрын

    いままでで一番スッキリ腹落ちする説明でした!

  • @user-od8os1lk8m
    @user-od8os1lk8m3 жыл бұрын

    解りやすいですね!理解出来ました💪

  • @programming-academy

    @programming-academy

    3 жыл бұрын

    ありがとうございます!😄

  • @user-rx6zl1en6x
    @user-rx6zl1en6x3 жыл бұрын

    後ろの画像はスマホに鍵をかけてるということなんですね!笑 わかりやすかったです!ありがとうございました!!!!

  • @user-mokkomoko
    @user-mokkomoko3 жыл бұрын

    めちゃくちゃ参考になりました!

  • @programming-academy

    @programming-academy

    3 жыл бұрын

    いえ、ご視聴ありがとうございます😄

  • @user-sn9hw9fi2v
    @user-sn9hw9fi2v3 жыл бұрын

    とても助かりました。 ありがとうございます。

  • @user-sn9hw9fi2v

    @user-sn9hw9fi2v

    3 жыл бұрын

    さらに良いプログラムにしたいなら、Genderクラスをつくるのが良いのでしょうか? もしくはJavaでいうenum?

  • @shinyasakae2563
    @shinyasakae25634 жыл бұрын

    ポリモーフィズムの解説も是非していただきたいです。

  • @programming-academy

    @programming-academy

    4 жыл бұрын

    お任せあれ!

  • @user-ro2hs3ut9q
    @user-ro2hs3ut9q4 жыл бұрын

    プログラマー2年目ですがとても勉強になります。

  • @programming-academy

    @programming-academy

    4 жыл бұрын

    是非オブジェクト指向マスターしましょう!

  • @roronoa1119
    @roronoa11194 жыл бұрын

    こんばんは! 例では性別のように決まった値のどれかを知りたい場合でしたので真偽値を返すメソッドでいいということは理解できました! 質問なのですがnameやageなどの場合はgetter を使わずにクラスの外から値を取得するにはどうすればいいのでしょうか?

  • @programming-academy

    @programming-academy

    4 жыл бұрын

    ケースバイケース! あと、外から値を『取得しよう』としてる時点でもうオブジェクト指向の考え方から外れてるからそこを考え直して! 考え方を変えてください!

  • @ntaks9649
    @ntaks96493 жыл бұрын

    参考になる動画ありがとうございます。 getterがいらない理由はわかるのですが setterがいらない理由はあまり言及がなかったように思ったのですがどうなのでしょうか? 何かの設定アプリなどの場合インスタンス化した後に保持しているデータ(プロパティまたはフィールド)を編集したくなるケースがあると思うのですが。 setterを作らないなら編集せず 毎回データモデルのインスタンス化を することになり、それはそれでパフォーマンスの面などからどうなのかなって思いました。

  • @programming-academy

    @programming-academy

    3 жыл бұрын

    "Premature optimization is the root of all evil in programming."

  • @AK-xm5uy
    @AK-xm5uy Жыл бұрын

    クラス、インスタンス、プロパティ、メソッド。クラス変数は基本的にはprivateにしてカプセル化。データを外に見せず外から書き換えられないというところが肝。10:55 privateだと見えないし書き換えられない。publicにすれば見られる書き換えられる。privateのとき、9:26 get変数名ゲッター取得する、set変数名セッター書き換える。

  • @user-nl3qy7ni8g
    @user-nl3qy7ni8g4 жыл бұрын

    こういうわかりにくい用語や概念を解説してくれる動画嬉しいです。なぜ使わないのか、じゃあどうするのかまで解説されているのでわかりやすいです。 ところで、動画で眼鏡をかけるのはやめたのですか?個人的にはかけていないほうがオットコマエだとは思いますが、見にくそうなので。

  • @programming-academy

    @programming-academy

    4 жыл бұрын

    ありがとうございます!理解していただけたようで嬉しいです! メガネはですね、 ・照明がレンズに反射して気になる ・陰キャ感が増す という理由から外して撮影するようにしてます。

  • @Mog_JP
    @Mog_JP2 жыл бұрын

    getterとsetterを知りたかっただけなのですが、 変更箇所を増やさないカプセル化、すごく勉強になりました! ありがとうございます。 これでまたソースコードが少し綺麗になりそうです^^

  • @daisuki-gyouza
    @daisuki-gyouza3 жыл бұрын

    思わず「お〜」と声出てしまった。

  • @programming-academy

    @programming-academy

    3 жыл бұрын

    腹から声出してこ

  • @uttigery9931
    @uttigery99313 жыл бұрын

    現在、プロゲートにてPHPを勉強中です。private情報は全てゲッターで取得入力しているのですが、間違っているのでしょうか?

  • @programming-academy

    @programming-academy

    3 жыл бұрын

    間違ってはいませんよ!😄

  • @zanshin_zamasu
    @zanshin_zamasu3 жыл бұрын

    ドリルの下りはめちゃめちゃ響いた( 笑)

  • @user-pk2pq9zu4r
    @user-pk2pq9zu4r4 жыл бұрын

    喋りが早口で有名なyoutuberのスーツよりも早くてビックリしました。Udemyよりは、2倍速にしても聴き取れる速度の講座がよく売れるそうですが、youtubeにも同じことが言えるんじゃないですか?

  • @programming-academy

    @programming-academy

    4 жыл бұрын

    私自身は早口でも何でもなくて、編集で少し早回しにしています 喋りがグダグダしてると別の動画に飛ばれてしまうので、なるべくテキパキ伝えられるようにとの意図です!

  • @user-ry6hx1kh7q
    @user-ry6hx1kh7q3 жыл бұрын

    atom-one-dark 私も使ってます!

  • @programming-academy

    @programming-academy

    3 жыл бұрын

    おそろっち!

  • @user-sb7qc1xe1l
    @user-sb7qc1xe1l4 жыл бұрын

    利用シーンによりけりだと思いますが、 ドメインモデルやvalue objectなんかは例外では無いでしょうか?

  • @programming-academy

    @programming-academy

    4 жыл бұрын

    例外じゃない!

  • @user-sb7qc1xe1l

    @user-sb7qc1xe1l

    4 жыл бұрын

    @@programming-academy データの持ち回りの目的でオブジェクトを利用するケースは? プロパティだけではなくメソッド(ロジック)も包含したクラスインスタンスを持ち回るケースは日頃あります。 それでも外部参照は悪手だと言い張ります? 代替手段はどの様に実装してますか?

  • @programming-academy

    @programming-academy

    4 жыл бұрын

    そんな目的でクラス作ったことないのでわかりません! 私は日頃そのようなコード実装してないので! あと動画でも言ってますけど、どうしても必要なら外部参照したらいいと思いますよ。基本的にいらないって言ってるだけです。

  • @user-sb7qc1xe1l

    @user-sb7qc1xe1l

    4 жыл бұрын

    @@programming-academy 丁寧なレス有難う御座います。 もちろんカプセル化とデータの保全性を理解した上での設計実装ですが、ある程度の規模のアプリケーションなら必要かな・・と。 ほかの方はどんなでしょかね?

  • @programming-academy

    @programming-academy

    4 жыл бұрын

    外部出力(ネットワーク出力、ファイル出力、HTMLに出力)する部分以外は基本的に不要ですかね。 少なくとも私が実装するときはそうします。 あとはドメインロジックをよく考えてうまく抽象化すれば大丈夫ですかね。 実際の業務ロジックにgetterに相当するような業務はないはずです。 (特定の対象が保持している情報を要請に応じて外部にそのまま公表する) 本来存在するべき処理やクラスの存在を見逃すとgetterを実装してしまうと思いますね。

  • @user-tb7ux5gb7h
    @user-tb7ux5gb7h3 жыл бұрын

    いいですね、カプセル化については誤解を生む情報が多いので気を付けないといけませんよね。

  • @hujicoco5283
    @hujicoco52834 жыл бұрын

    ワイ史上最も飽きて辞めて欲しくないKZreadr

  • @programming-academy

    @programming-academy

    4 жыл бұрын

    おお…そんなに気に入っていただけて光栄です… 引き続き応援いただけると嬉しいです

  • @user-re8tg7oh1k
    @user-re8tg7oh1k3 жыл бұрын

    すごくわかりやすい説明ですね! ですが、若干例が悪いのかも?じゃあ何にしたらいいんだよと言われると悩みますが…。 人物データとかだと、データベースから読みこんだデータを保持しているクラスみたいなイメージになると思うので、”中身が見たくて読みこんだのに見れないってどういうこと!?”という疑問が当然出てくると思います。publicは一切使うなとおっしゃってますが、データベースなどの情報の入出力に直接絡むものは例外なんだと思います。この理解がないから、みんなむやみやたらとgetter/setterを書きまくってるんじゃないかぁ?と思います。

  • @programming-academy

    @programming-academy

    3 жыл бұрын

    入出力部分でもprivateにできますよ😄

  • @user-re8tg7oh1k

    @user-re8tg7oh1k

    3 жыл бұрын

    @@programming-academy ​ そうか、クラス内でecho すればHTML出力は可能だからまぁMVCフレームワークでもprivateにできなくはないか。確かにメリットはあるような気がする。でも、いちいちメソッドつくるのめんどくさそう。私の界隈は意識低い系多いから、そんな設計してたら変人呼ばわりされそうだな(笑)ためになりました!

  • @programming-academy

    @programming-academy

    3 жыл бұрын

    おぉ😳 すぐやり方思いつくのすごいですね😳 頭やわらかいですね😳 わからないんじゃないかと思ってました…。お見逸れいたしましたm(_ _)m

  • @user-re8tg7oh1k

    @user-re8tg7oh1k

    3 жыл бұрын

    @@programming-academy まぁ20年プログラマやってますもんで(苦笑)時間があるんでオブジェクト指向を勉強しなおしていますが、今は本当にわかりやすい教材がネットにあふれていていいですね!昔は何書いてあるんだかわからん本しかなかったんで、独学だと結構あやふやな知識だったりします。逆に言うと、昔はそんなんでも行けたけど、今の子たちはたいへんだわ。これからも頑張って、いい情報発信してくださいませ!

  • @programming-academy

    @programming-academy

    3 жыл бұрын

    先輩の方でございましたか…🙇‍♂️ 大変失礼な対応をしてしまいましたこと心よりお詫び申し上げます🙇‍♂️ この場で腹を掻っ捌きます🔪

  • @hadake7616
    @hadake76164 жыл бұрын

    javaのブロンズやってたときに出てきて、結局変更してるなら直にいじればいいじゃんって思ってました。 そもそも参照すらさせないんですね。知りませんでした。

  • @programming-academy

    @programming-academy

    4 жыл бұрын

    参照させた時点で負け!!くらいの意識で書くとちょうどいい気がします!😊

  • @user-vl5ti6rv8x
    @user-vl5ti6rv8x3 жыл бұрын

    Javaを勉強してるけど、書き方が似てる。 言い回しがちょっと違うぐらいだ。

Келесі