Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第五回 未経験者のためのJava勉強会

Yusuke
October 24, 2020

 第五回 未経験者のためのJava勉強会

Yusuke

October 24, 2020
Tweet

More Decks by Yusuke

Other Decks in Programming

Transcript

  1. 未経験者のためのJava勉強会 第5回

  2. エンジニアカフェ エンジニアやエンジニアに関わる人、エンジニアを目指す人をサポートする施設です。 エンジニアカフェ外観(提供:福岡市) イベントの様子 コワーキングスペース Event Co-Working&Meeting Consulting Cafe&Bar エンジニアカフェで体験できること

  3. エンジニアカフェでは 随時ご相談を受け付けております! 本日のイベントに関するご質問はもちろん エンジニアに関するご相談・ご質問はお気軽にどうぞ! ・勉強の仕方を教えて欲しい ・学生でも参加しやすいコミュニティが知りたい ・子どもにおすすめのプログラミング教材ってある? ・3Dプリンタでこんなの作れる? などなど! スタッフやコミュニティマネージャーがオフライン・オンライン問わず

    ご対応致します。
  4. もくじ • オブジェクト指向について • インスタンスとクラスについて • カプセル化(getter,setter)

  5. オブジェクト指向について

  6. オブジェクト指向とは 現実世界にあるものを自動化させようとすること

  7. オブジェクト指向とは 3000円 引出したい! 口座の残高を 調べる 3000円減らす様 口座を書き換え る 3000円渡す 例:ATM

    口座
  8. オブジェクト指向とは 3000円 引出したい! 残高を問い 合わせる DB 残高から 3000円減らす 3000円 受け取る!

    例:ATM
  9. オブジェクト指向とは プログラマが簡単にコードを書くことができる手段

  10. なぜ簡単にプログラムを書く事ができるの? 現実にあるものを真似してプログラムを書く

  11. オブジェクト指向の部品化

  12. 受付クラスを作成して受 付の人が行う処理を定 義する 口座クラスを作成して口 座が行う処理を記入する

  13. オブジェクト指向の本質として 僕たちが普段行っていることを 自動化又は真似して作る

  14. オブジェクト指向は中々理解できるものではありません 今回のもので全体像をふんわりわかってもらえたらと思います。

  15. 質問

  16. クラスとインスタンスについて

  17. クラスとは 設計図の様な物

  18. mainメソッド内にクラス(設計図)を元に生成する実体 インスタンスとは

  19. インスタンスとは クラス (設計図) main メソッド インスタンス化 インスタンス

  20. コードで表してみます

  21. main メソッド

  22. None
  23. Human クラス main メソッド

  24. None
  25. インスタンスとは Human クラス main メソッド Humanクラス を インスタンス化 Humanクラス を

    インスタンス
  26. None
  27. None
  28. None
  29. None
  30. 質問

  31. プロパティとメソッド

  32. None
  33. None
  34. Humanクラスに定義されていたプロパティ、メソッドが インスタンスした際に使用する事ができます

  35. None
  36. 定数について

  37. 定数について 定数...値が変化しないもの 変数...値が変化するもの

  38. None
  39. None
  40. None
  41. 質問

  42. コンストラクタ

  43. コンストラクタとは? クラスからオブジェクトを作成した際に、 自動的に実行されるメソッドのこと

  44. コンストラクタとは? クラス名と同じ名前で定義しなければならない

  45. 例 先ほど作成したHumanクラスに コンストラクタを定義してみましょう

  46. None
  47. None
  48. None
  49. 先ほどコンストラクタを定義した Humanクラスを呼び出しましょう。

  50. None
  51. None
  52. 初期値を上書きする

  53. None
  54. None
  55. 質問

  56. None
  57. オブジェクト指向の3大要素

  58. オブジェクト指向の3大要素 ・カプセル化 ・継承 ・多様性

  59. カプセル化とは

  60. カプセル化とは フィールドへの書き込みや メソッドの呼び出しを制御する機能です。

  61. カプセル化のメリット 大事なフィールドやメソッドに悪意や間違いのある利用を防止する もし、想定しない利用があればその場所をすぐに見つける事ができる

  62. アクセス制限の種類

  63. ・名前 アクセスを許可する範囲 ・private 自分自身のクラスのみ ・package private 自分と同じパッケージに属するクラス ・protected 自分と同じパッケージに属するか、自分を継承したクラス ・public

    すべてのクラス ・基本的にフィールドにはprivateを付けてあげる
  64. Humanクラスのフィールドを privateにしてみましょう

  65. None
  66. None
  67. Mainクラスを実行してみましょう

  68. None
  69. これを実行してみます

  70. None
  71. privateでアクセス制限されているので 値を入れる事ができません

  72. そこで使用するのがsetterとgetter

  73. privateにされていたフィールドに値を入れる時、 呼び出す時に使用するのが setterとgetter です!

  74. getterとは? 値を持ってくるメソッド

  75. setterとは? getterとは逆に値を入れ込むメソッドです

  76. Humanクラスにgetterを追加しましょう

  77. None
  78. None
  79. None
  80. None
  81. None
  82. Mainクラスでgetterメソッドを 呼び出しましょう

  83. None
  84. getAge()で呼び出す事ができます

  85. None
  86. これを実行します 成功すればコンストラクタで設定した 22が出力されます

  87. None
  88. 次にsetterで値をセットしてみましょう

  89. 次のsetterを追加してみましょう

  90. None
  91. None
  92. None
  93. None
  94. None
  95. Mainメソッド内で値をセットしましょう

  96. None
  97. 引数として50を渡してみます

  98. None
  99. None
  100. 実行してみましょう

  101. None
  102. 同じ様にprivate変数nameにも getter,setterを定義しまよう

  103. getter

  104. getter

  105. setter

  106. None
  107. None
  108. これを実行してみます

  109. None
  110. 質問

  111. getter,setterのメリット

  112. getter,setterのメリット メソッド内で条件を指定できる

  113. 例 ageに与えられる値がマイナスと120以上の場合に エラーを表示する

  114. if文を使用して実装します

  115. None
  116. None
  117. None
  118. 全体図で確認しましょう

  119. None
  120. 値を入力して実際に動くのか 確認しましょう

  121. マイナス値

  122. None
  123. 実行してみましょう

  124. None
  125. None
  126. 大きい値

  127. None
  128. 実行してみましょう

  129. None
  130. None
  131. この様にsetter,getterを使用して例外処理を行う事ができます

  132. カプセル化の考え方 メソッドを利用してフィールドの変数を保護する

  133. 質問

  134. 本日はありがとうございました!

  135. エンジニアカフェでは 随時ご相談を受け付けております! 本日のイベントに関するご質問はもちろん エンジニアに関するご相談・ご質問はお気軽にどうぞ! ・勉強の仕方を教えて欲しい ・学生でも参加しやすいコミュニティが知りたい ・子どもにおすすめのプログラミング教材ってある? ・3Dプリンタでこんなの作れる? などなど! スタッフやコミュニティマネージャーがオフライン・オンライン問わず

    ご対応致します。