Blacky Blog

外資系IT企業でエンジニアをしています。 ここでは自分が読んだ本、勉強していることなど None Tech の情報を発信しています。

IT プログラミング

[初心者向け] Java 独学: 4. オブジェクト指向: メソッド

投稿日:6月 4, 2019 更新日:

皆さん、こんにちわ。

このシリーズは、Java を独学で学んでいただける方法で、初心者でも開発者としてのベースの知識ができます。実際に手を動かせるよう環境設定の方法も載せています。Java のサイトや本を読んで学んだだけの方でも、挫折せず、自分で手を動かせるような構成にしていますのでおすすめの方法です。

[初心者向け] Java 独学: 4. オブジェクト指向: メソッド

今回は前回の続き、クラスのメソッドについて紹介します。

CodeCampGATE

メソッド = 関数

まず言葉の定義なのですが、メソッドでもいいですし、関数でもいいです。なのでクラスのメンバー関数とかメンバーのメソッドみたいな言い方をします。

実際のコードを見てみましょう。前回と同じCarクラスです。

public class Car
{
    // Member variables
    private String model = null;
    private String nextValidatedate = null;
    private String owner = null;

    // Constructors
    public Car()
    {

    };
    public Car(String model, String nextdate, String owner)
    {
        this.model = model;
        this.nextValidatedate = nextdate;
        this.owner = owner;
    };

    // Member mothods
    public void SetModel(String model)
    {
        this.model = model;
    };
    public void SetnextValidatedate(String nextDate)
    {
        this.nextValidatedate = nextDate;
    };
    public void SetOwner(String owner)
    {
        this.owner = owner;
    };
    public String GetModel()
    {
        return this.model;
    };
    public String GetnextValidatedate()
    {
        return this.nextValidatedate;
    };
    public String GetOwner()
    {
        return this.owner;
    };
}

メンバー変数とコンストラクタは前回までに説明しました。

書き方

メンバー関数は以下のように書きます。

    public void SetModel(String model)
    {
        this.model = model;
    };

まず、public の部分は関数を呼び出せる範囲を指定します。メンバー変数でもありましたが、public/private/protected などが主にあります。public は、このクラス以外のクラスから呼び出せることを意味します。private はこのクラスの中の別の関数からのみ呼び出すことを意味しています。

次に void の部分です。これは戻り値といって、関数を呼び出したときにどのデータ型を返すかを指定します。void は何も返さないことを意味しており、int, String, boolean なども指定できます。

続いて、SetModel(String model) は、関数名(引数1, 引数2, …) の意味になります。そのため、今回の例では、SetModel という名前で、 String 型 の引数を 1 つの関数ということがわかります。

最後に、処理の中身ですが、今回は、引数 model の値を、クラスのメンバー変数である model 変数に設定するというシンプルなものです。

関数の注意ポイント

処理を書く時の注意ポイントは、2つです。

関数の引数の値を使うときは、関数の引数の名前を使う必要があります。今回の場合、 SetModel(String model) なので modelです。

次に、戻り値を定義している場合は、ちゃんと処理で戻り値を返す必要があります。以下のメンバー関数を見てください。

    public String GetModel()
    {
        return this.model;
    };

戻り値は、String 型ですね。なので、処理の中で、 return this.model; でString 型のメンバー変数である model を返しています。関数の戻り値を正しく返していないとエラーになります。

    public String GetModel()
    {
        int result = 1;
        return result;  // Not match return value type
    };
エラーの画面

クラスを使う側の目的に沿った関数をデザインするべし

例えば、自動車保険会社のサイトでは、保険者は自分の車を登録しますよね。自動車保険って車のモデル、オーナー、次回の車検日を最初登録したとしたら、この3つのうちその後変わるのは、車検日くらいですよね。その場合、このCarクラスに必要な関数は、車検日の変更だけですね。 モデルやオーナーは基本変わらなければ、わざわざ public のメンバー関数にする必要がないです。

クラスは、クラスを使う側の視点で考えて、どの関数や変数が必要か、どの操作を使う側は必要としているかをデザインしてください。これがオブジェクト指向の本質です。

まとめ

クラスについて、コンストラクタ、メンバー変数、関数と一通り基本的な書き方について記載してきました。一度生活の周りにあるものでクラスにできそうなものないか考えてみてください。リモコン、キッチンのコンロ、炊飯器など沢山あるはずです。そこから、どのようにクラスをデザインすべきか考えるといい練習になります。

CodeCampGATE

-IT, プログラミング
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

ネットワークエンジニアとしての基礎: はじめに

みなさん、こんにちわ。 このシリーズは、ネットワークエンジニアとしてスキルを身に着け、転職する方やフリーランスとして働く方に向け、ネットワークエンジニアとして必要なスキルを学ぶための入門シリーズです。 …

[初心者向け] Java 独学: はじめに

皆さんこんにちは、Blackyです。 これらからシリーズでプログラミング言語の Java を学んでいただける記事を書いていきます。Java って難しいイメージないですか? これを読めば、Java を独 …

ネットワークエンジニアとしての基礎: 3. プロトコルとサービスの理解: OSI モデル

みなさん、こんにちは。 このシリーズは、ネットワークエンジニアとしてスキルを身に着け、転職する方やフリーランスとして働く方に向け、ネットワークエンジニアとして必要なスキルを学ぶための入門シリーズです。 …

ネットワークエンジニアとしての基礎: 1. インフラストラクチャの理解: WAN

みなさん、こんにちは。 このシリーズは、ネットワークエンジニアとしてスキルを身に着け、転職する方やフリーランスとして働く方に向け、ネットワークエンジニアとして必要なスキルを学ぶための入門シリーズです。 …

Java 入門: 事前準備

最初に、コードを実行できる環境を整えます。 今回は Windows 10 のパソコンにインストールする例です。 1.Visual Studio Code のインストール 1. https://code …