getterとsetterについて解説します【オブジェクト指向プログラミング】

Sdílet
Vložit
  • čas přidán 28. 06. 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
    #エンジニア#プログラマ#プログラミング#オブジェクト指向
  • Věda a technologie

Komentáře • 58

  • @user-vh5dr6ve3h
    @user-vh5dr6ve3h Před 2 lety +2

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

  • @mm-oc5rf
    @mm-oc5rf Před rokem +1

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

  • @user-ly2uv2jx1y
    @user-ly2uv2jx1y Před 4 lety +2

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

    • @programming-academy
      @programming-academy  Před 4 lety +1

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

  • @secondlife4337
    @secondlife4337 Před rokem +3

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

  • @user-od8os1lk8m
    @user-od8os1lk8m Před 3 lety +2

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

  • @user-mokkomoko
    @user-mokkomoko Před 3 lety +2

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

  • @sknclassroom-6414
    @sknclassroom-6414 Před 3 lety +2

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

  • @user-rx6zl1en6x
    @user-rx6zl1en6x Před 3 lety +2

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

  • @user-sn9hw9fi2v
    @user-sn9hw9fi2v Před 3 lety +1

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

    • @user-sn9hw9fi2v
      @user-sn9hw9fi2v Před 3 lety

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

  • @zonorix
    @zonorix Před 4 lety +11

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

    • @programming-academy
      @programming-academy  Před 4 lety +3

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

  • @user-ro2hs3ut9q
    @user-ro2hs3ut9q Před 4 lety +2

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

  • @shinyasakae2563
    @shinyasakae2563 Před 4 lety +6

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

  • @user-nl3qy7ni8g
    @user-nl3qy7ni8g Před 4 lety +2

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

    • @programming-academy
      @programming-academy  Před 4 lety +2

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

  • @ntaks9649
    @ntaks9649 Před 3 lety +4

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

  • @AK-xm5uy
    @AK-xm5uy Před rokem +2

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

  • @roronoa1119
    @roronoa1119 Před 4 lety +4

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

    • @programming-academy
      @programming-academy  Před 4 lety +4

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

  • @Mog_JP
    @Mog_JP Před 2 lety +1

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

  • @daisuki-gyouza
    @daisuki-gyouza Před 3 lety +3

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

  • @uttigery9931
    @uttigery9931 Před 3 lety +1

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

  • @user-pk2pq9zu4r
    @user-pk2pq9zu4r Před 4 lety +1

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

    • @programming-academy
      @programming-academy  Před 4 lety +8

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

  • @user-ry6hx1kh7q
    @user-ry6hx1kh7q Před 3 lety +2

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

  • @zanshin_zamasu
    @zanshin_zamasu Před 3 lety +1

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

  • @user-tb7ux5gb7h
    @user-tb7ux5gb7h Před 3 lety +2

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

  • @user-sb7qc1xe1l
    @user-sb7qc1xe1l Před 4 lety +1

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

    • @programming-academy
      @programming-academy  Před 4 lety

      例外じゃない!

    • @user-sb7qc1xe1l
      @user-sb7qc1xe1l Před 4 lety +1

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

    • @programming-academy
      @programming-academy  Před 4 lety +1

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

    • @user-sb7qc1xe1l
      @user-sb7qc1xe1l Před 4 lety +1

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

    • @programming-academy
      @programming-academy  Před 4 lety +1

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

  • @hujicoco5283
    @hujicoco5283 Před 4 lety +9

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

    • @programming-academy
      @programming-academy  Před 4 lety +4

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

  • @user-re8tg7oh1k
    @user-re8tg7oh1k Před 3 lety +2

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

    • @programming-academy
      @programming-academy  Před 3 lety

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

    • @user-re8tg7oh1k
      @user-re8tg7oh1k Před 3 lety +1

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

    • @programming-academy
      @programming-academy  Před 3 lety

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

    • @user-re8tg7oh1k
      @user-re8tg7oh1k Před 3 lety +1

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

    • @programming-academy
      @programming-academy  Před 3 lety

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

  • @hadake7616
    @hadake7616 Před 4 lety +1

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

    • @programming-academy
      @programming-academy  Před 4 lety

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

  • @user-vl5ti6rv8x
    @user-vl5ti6rv8x Před 3 lety +1

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