【新卒】コードの基礎:使い方編

【新卒】コードの基礎:使い方編

 
 
このエントリーをはてなブックマークに追加      
新卒に伝えたいシリーズ第四回は、コードの基礎:使い方編です。 
もしこれから見た人でプログラム初心者の方は、「【新卒】コードの基礎:書き方編」 を見たほうがいいかもしれません。

書き方編もそうですが、こちらについてもプログラミングの超入門的な記事ですので、少しでも開発したことある人は読まなくて問題ないものだと思います。

用語

用語について書き方編の用語についてはわかるものとします。
  • インスタンス化
    • クラスなどの領域を確保して実体を作ること
  • インスタンス
    • インスタンス化して作成された実体
  • 実体
    • そのもの。実物。本体。インスタンスなどのモノ本体

クラス

クラスについて、作ったものを他のメソッドでどうやって使っていくかを記載します。
クラスを利用する際には、「クラスをインスタンス化」する必要があります。
インスタンス化とは、 クラスなどの領域を確保して実体を作ることを言います。
なお、インスタンス化して作成された実体をインスタンスと言います。

若干小難しいので、簡単にまとめると
  • クラスを使えるようにする行為 ⇒ インスタンス化
  • 使える状態になったクラス ⇒  インスタンス(実体)
となります。

では、どうすればインスタンス化ができて、どうやってインスタンスを使うのかを書きます。

まず、使おうとしているクラスについて、適当に考えます。  
 
今回は「Youtubeを見る人」というクラスを作ります。
今回の例で「Youtubeを見る人」は「登録チャンネル最大数」と「登録チャンネル一覧」を変数・定数として持ち、「動画を検索」して、「動画を見させる」ことができ、心の中で「感動します」。
 
class YoutubeWatcher {
    private int REGISTED_MAX_SIZE = 100;  // 登録チャンネル最大定数
    public Movie registeredChannel[REGISTED_MAX_SIZE]; // 登録チャンネル一覧
    
    /** 動画を検索する */
    public Movie searchMovie(String keyword) {
      引数にキーワードで動画を検索する;
      return 検索結果;
    }
    
    /** 動画を見る */
    public Boolean watchMovie(Movie movie) {
      引数に来た動画を見る;
      return impress(movie);
    }
    
    /** 感動する */
    private Boolean impress(Movie movie) {
      return感動したかどうか(感動したらtrue);
    }
  }
早速、この「Yotubeを見る人」を操作してみましょう! 

まず、どんなYotubeを見る人かを考えます。。。
今回は山田太郎さんというYoutubeWatcherを(インスタンス化)作りましょう。

YoutubeWatcher(山田太郎さん)のインスタンス化の記述方法は以下です
YoutubeWatcher taro_yamada = new YoutubeWatcher();
これで、YoutubeWatcherである山田太郎(taro_yamada)さんのインスタンス(実体=本体)ができました。
 
インスタンス化している部分の形としては以下となります。
【クラスor型】 【インスタンスの名前】 = new 【クラスor型】();

メソッド

次に、メソッドを呼び出します。
メソッドを使うには、そのメソッドが公開(publicなど)されている必要があります。

メソッドには大きく、外部用のメソッドと内部用のメソッドがあり、外部用のメソッドは公開し、内部用のメソッドは非公開にします。

内部メソッド

内部メソッドは、インスタンスを指定しなかったり、自分自身を表すインスタンス(thisなど)を指定して、メソッドを呼び出します。

例としては、YoutubeWatcherというクラスでwatchMovie()メソッド内で、内部メソッドであるimpress()メソッドを呼んでいる形になります。
自分自身を表すインスタンスが必要な場合は「this.impress()」という形で記載します。

    /** 動画を見る */
    public Boolean watchMovie(Movie movie) {
      引数に来た動画を見る
      impress(movie);
    }
    
    /** 感動する */
    private void impress(Movie movie) {
    }

privateについて

内部メソッドなど、山田太郎さんが心の中に持つもの(private)について説明します。
YoutubeWatcherとして、感動させることは、外からのイベントとしてはできません。実行しようしてもエラーになります。
 
感動は、動画を見せることで間接的に行わせることになります。
他人に対して、「感動しろ!」って言って感動させることは出来ないということになります。

外部メソッド

インスタンスを使った外部メソッド呼び出しとして、例としては山田太郎さんに動作を検索させましょう。
検索するキーワードは「vtuber 切り抜き」とします
Movie searched_movie = taro_yamada.searchMovie("vtuber 切り抜き");
これで、山田太郎さんに動画を検索させることができます。「vtuber 切り抜き」という文字列が、YoutubeWatcherクラスのsearchMovie()メソッドの引数として与えられつつ、YoutubeWatcherクラスのsearchMovie()メソッドが実行されるわけです。そして、戻り値として検索結果が返るので、それを取得します。「Movie searched_movie =」の部分は検索結果を保持するところです。

呼び出している部分の形としては以下となります。
【インスタンス】.【メソッド名】(【引数】);

変数と定数

最後に、インスタンスが持つ、変数や定数を見る方法を記載します。
 
例としては、山田太郎さんが登録しているチャンネル一覧を聞きましょう
Movie channel[REGISTED_MAX_SIZE] = taro_yamada.registeredChannel;
これで、山田太郎さんが登録している登録チャンネル一覧が取得できました
「Movie channel[REGISTED_MAX_SIZE] =」の部分は山田太郎さんの登録チャンネルを保持している箇所になります。

呼び出している部分の形としては以下となります。
【インスタンス】.【変数・定数名】;

メソッドについても、変数・定数についても、インスタンスを頭において、どのインスタンスに対して行うか、もしくは、取得するかを決めるわけです。
 
なお、山田太郎さんとは別の人(例えば吉田花子さん)に対して操作したい場合は、吉田花子さんを別にインスタンス化する必要があります。
もちろん、吉田花子さんは山田太郎さんとは別人なわけですから、登録チャンネルは違いますし、吉田花子さんに動画を見せても、山田太郎さんは動画を見ません。


配列

配列については、数値などと違い、位置があり、使い方がちょっとだけ違うので解説します。

例としては、山田太郎さんが登録しているチャンネル一覧を取得したとします。そのうえで、登録チャンネルの2番目に、「"面白い動画"」で検索した結果を入れることとします。
Movie channel[REGISTED_MAX_SIZE] = taro_yamada.registeredChannel; // 取得
channel[1] = taro_yamada.searchMovie("面白い動画"); // 検索結果を登録チャンネルの2番目に入れる
これで、入れることができました。
 
配列については、0開始で位置を[]に記載することで、その配列の位置のデータを取得することができるわけです。
 
形としては以下です 。
【変数名】[【位置】]
 
配列は、初期化するときには[1]開始で、取得するときには[0]開始になることに注意してください。サイズ10で位置10のデータをとる場合
int test[10]; // サイズ10の配列を生成
test[9]; // 10番目の位置のデータを取得 
となるわけです

統括

前述したクラスのインスタンス化、メソッドの呼び出し方、変数・定数についてを合わせて書いてみます。

例としては、俺くんが、遊んだときはYoutubeWatcherである山田太郎さん生成して操作する形で書こうと思います。
 
class ORE {
    public void play() {
      // 山田太郎さんをインスタンス化
      YoutubeWatcher taro_yamada = new YoutubeWatcher(); 
      // 山田太郎さんに有名動画を検索させる
      Movie searched_movie = taro_yamada.searchMovie("有名動画"); 
      // 山田太郎さんに検索した動画を見せる
      if(taro_yamada.watchMovie(searched_movie)) { 
        // 感動したら、山田太郎さんの登録チャンネル一覧を取得し、なめる
        Movie channel[REGISTED_MAX_SIZE] = taro_yamada.registeredChannel; 
        for(int i = 0; i < REGISTED_MAX_SIZE; i++) {
          // チャンネルが空の場合
          if(channel[i] == NULL) {
            // 空の登録チャンネルに検索した動画を設定する
            channel[i] = searched_movie; 
            // forループを抜ける
            break;
          }
        }
      }
    }
  }
どうでしょうか、結構プログラムっぽくなったと思います。
※ if文とfor文については別途記事にしていこうと思います。
 

まとめ

いかがだったでしょうか。
【新卒】コードの基礎:書き方編」でクラス・メソッド・変数の書き方を記載し、書いたものの使い方をこの記事で記載しました。
 
次は、if文for文やincludeなど、よく使う記法について解説しようと思います。
 
 
 
このエントリーをはてなブックマークに追加      

コメント