noblog!バンコク生活はなぜ良いのか

生のバンコク情報をおとどけ!

ゼロから始めるJava学習 in バンコク その27 Java入門編6終了! Java入門編7へ クラスを理解しよう

もうメシは食ったかの?儂はノブじゃ。

f:id:nobubkk:20180803142726p:plain

儂はいま「paizaラーニング」を利用してJavaの勉強に取り組んでいる。

paizaラーニングJava入門編全10講座中、入門編6まで進めている。

 

 

 

#06:ブロックのスコープを理解しよう

paiza.jp

変数のスコープについてさらに理解を深めたい。

ここまでに、異なるメソッド定義では、変数の有効範囲が独立していることを学んでいる。

これを変数のスコープと呼ぶ。

 

実は変数のスコープというのは、ifやループのブロックにもあるのだそうだ。

まずはif文で見てみよう。

public static void main(String[ ] args){

System.out.println("hello world");

 

int num=0;

if (num==0){

System.out.println("hello"+ num);

}

}

これで、

hello world

hello0

と表示された。

 

ifのブロックの外側で宣言した変数はifのブロックの内側では使えるが、ifのブロックの内側で宣言した変数はifのブロックの外側では使えない。

実際に試してみると、

public static void main(String[ ] args){

System.out.println("hello world");

int num=0;

if (num==0){

String msg= "paiza";

System.out.println(msg+ num);

}

}

これで、

hello world

paiza0

と表示された。

 

では、これをブロックの外側でmsg変数を出力しようとすると、

public static void main(String[ ] args){

System.out.println("hello world");

int num=0;

if (num==0){

String msg= "paiza";

System.out.println(msg+ num);

}

}

System.out.println(msg);

こうするとエラーになってしまった。

レッスンではこのあとfor文でも確認した。

要するに、{  }の中でしか定義したメソッドは使えないということ、これをスコープというようだ。

 

なんだろう、最後のチャプターだったのだが、ここまで進めていれば自然と分かっていたような話だったな。

まあ、簡単だったことは良かった。

 

Java入門編6が終了ー!

ついに入門編6も終了してしまった。 f:id:nobubkk:20181023163439j:plain

認定証もたまってきたなー。

しかし、まだ何もできる気がしない・・・

なんだろう、このプログラミングに対しての無力感。

いやいや、そりゃまだはじめて2か月くらいだから何かできるには早すぎるな。

少しずつ進んでいる。

復習も織り交ぜながら、一歩一歩進んでいこう。

 

 Java入門編7へ #01:クラスを理解しよう

paiza.jp

 

さて、Java入門編7が始まる。

f:id:nobubkk:20181024022249p:plain

「レベル52」。

なんとなくレベルが高く感じるが、実際にはレベル負けしてる気がする・・・

若手騎士なのだそうだ。

あ、あれ?登録プランが「有料1か月プラン」になっている。

まさか値下げしたのか??(だったらクヤシー!)

あとで覚えていたら確認してみよう。←たぶんしない

 

さて、毎回最初のチャプターではコードは書かないで解説だけを受ける。

このレッスンでは、「クラスの役割と利点」について学ぶそうだ。

 

プログラミングの勉強を始める前に何度も読んだ言葉だが、「オブジェクト指向プログラミング言語」についての説明もあった。

オブジェクトとは「変数とメソッドをセットとしたもの」なのだそうだ。

うーん、それが何なんだろう。

オブジェクト指向でないものが分からないので、ちょっとよく分からない。

まあ、ほかの言語なども勉強し始めれば違いが分かってくるのだろう。

また、多くのプログラミング言語では、このオブジェクト指向にもとづいた文法が使われているとのことなので、きっとほかの言語にも応用が利くのだろうと思う。

 

Javaではクラスからオブジェクトを作って利用する。

クラス:オブジェクトの設計図

オブジェクト:クラスから作られる(インスタンス化)

Javaではオブジェクトとインスタンスは同じ意味で使われていると考えて大丈夫だとのことだ。

 

オブジェクトのメリットとしては、変数とメソッドがセットになっているのでバグが出にくいことがあげられるそうだ。

儂がコードを書くとエラーばかりだが・・・

 

また、クラスとオブジェクトに分離することで再利用や分類がしやすいという利点もあるそうだ。

これは、うん、分かる。

コードが長くなってきたときには、細かく分類整理できると分かりやすくなるのだと思う。

 

多数のライブラリ・フレームワークがクラスをベースに作られているので、使いこなすにはクラスの理解が不可欠なのだそうだ。

最後にこのレッスンの学習内容として

  1. クラスを作成する
  2. 変数をクラスで管理する
  3. 具体例:RPGの敵クラスを作る
  4. クラスで、引数と戻り値のあるメソッドを作る
  5. 文字列や配列もオブジェクトになっている
  6. アクセス修飾子について理解する

 このように進められるということであった。

 

#02:クラスを作成しよう

paiza.jp

ではさっそく、クラスとオブジェクトの基本的な操作として、クラスに簡単なメソッドを定義してオブジェクトとして呼び出す練習をしてみよう。

 

まずは、RPGのプレイヤーの行動を表示するメソッドを作成してみる。

public class Main{

public static void main(String[ ] args){

walk();

}

public static void walk(){

System.out.println("勇者は荒野を歩いていた。");

}

}

これで、

勇者は荒野を歩いていた。

と表示された。

 

では次に、このメソッドをクラスの中に組み込んでみたい。

そのために、プレイヤークラスを作って、それを呼び出してみる。

public class Main{

public static void main(String[ ] args){

Player player1= new Player();

player1.walk();

}

}

class Player{

public void walk(){

System.out.println("勇者は荒野を歩いていた。");

}

}

これで

勇者は荒野を歩いていた。

と出力された。

 

ここではいろいろと説明があった。

クラス名の先頭は大文字にする、staticを消すのはあとで説明がある、Playerクラスの前にnewをつけて呼び出すとクラスからオブジェクトを作ることができる、作ったオブジェクトは変数に代入する、変数のデータ型はクラス名を書く、そうすると「変数名.メソッド名();」とすることでオブジェクトのメソッドを呼び出すことができる。

 

いまのところ、メソッドとクラスでその違いがないので、クラスのメリットがよく分からないが、これからそういうところは勉強していくとのことだった。

 

まとめ

メソッド、クラスとプログラミングの構造的な話が続いている。

複雑なプログラミングをしていくには、構造の理解が不可欠なのだと思う。

一歩一歩少しずつ前に進んでいこう。

 

 

※有料講座の内容は少し問題等を改変しています。

これからプログラミングの勉強を始めようと思っている方、ぜひ一緒にやっていきましょう。

今宵はここまで。また次を楽しみにしておれ。

 

 

ページを閉じる前に、クリックしてから閉じてね。よろしくお願いします!

にほんブログ村 海外生活ブログ タイ情報へ
にほんブログ村

にほんブログ村 海外生活ブログへ
にほんブログ村