「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

セッター

pointこの用語のポイント

pointメソッドだよ

pointメンバ変数に値を設定するよ

スポンサーリンク

簡単に書くよ

セッター(英:setter)とは

オブジェクト指向なプログラミングの話で出てくる用語のひとつ
であり

メンバ変数に値を設定する仕事をするメソッドを指す俗称
です。
もう少し噛み砕いて書くと

クラス(オブジェクト指向の話で出てくる概念のひとつで「設計図」っぽいやつ)の中にある変数に値を設定する仕事をしている(クラスの中にある)関数のこと
です。


image piyo

詳しく書くよ

はじめに留意事項です。
本ページの説明は

変数
関数
オブジェクト指向
クラス


を何となく理解している前提で書いていきます。
これらの用語について「さっぱり、分からん!」な人は、先に、そっちを勉強してきてください。

ちょっと休憩2

準備はOKですか?

それでは順番に見ていきましょう。

オブジェクト指向なプログラミングにおいて、クラスの中には

1.変数
2.関数


の2つを用意できます。

セッター(setter)

クラスの中に用意する変数は、専門用語で「メンバ変数」と呼ばれます。
クラスの中に用意する関数は、専門用語で「メソッド」と呼ばれます。

セッター(setter)2

以上を踏まえて

メンバ変数に値を設定する仕事をするメソッド

を指す俗称が「セッター(setter)」です。
少し正確性に欠けるけど分かりやすそうな表現を使うと

クラス内の変数に値を設定する関数

ですかね。

セッター(setter)3

異論を唱える人もいますが

メンバ変数を外部から操作できるようにするのは良くないんじゃないかな?

な考え方があります。

Javaを例に説明しますが、例えば、以下のような書き方は「けしからん!」と考える人がいるのです。

class Piyota {
    //メンバ変数
    public String name;
}

public class test03{
    public static void main(String[] args){
        Piyota p = new Piyota();

        //メンバ変数「name」に値を設定
        p.name = "ピヨ太";

        //メンバ変数「name」から値を取得
        String piyotaName = p.name;

        //画面表示
        System.out.println(piyotaName);

    }
}


この処理では

        //メンバ変数「name」に値を設定
        p.name = "ピヨ太";


で、Piyotaクラス内のメンバ変数「name」に直接、値「ピヨ太」を設定しています。

セッター(setter)4

同様に

        //メンバ変数「name」から値を取得
        String piyotaName = p.name;


で、Piyotaクラス内のメンバ変数「name」の値を直接、取得しています。

セッター(setter)5

このような書き方を見て「これはダメだ!クラス内のメンバ変数は隠ぺいするべし!直接、触らせるな!」と考えるのです。
そんな人は、同じ処理を例えば以下のように書きます。

class Piyota {
    //メンバ変数
    private String name;

    //メソッド
    void setName(String _name){
        this.name = _name;
    }

    String getName(){
        return this.name;
    }

}

public class test01{
    public static void main(String[] args){
        Piyota p = new Piyota();

        //メンバ変数「name」に値を設定
        p.setName("ピヨ太");

        //メンバ変数「name」から値を取得
        String piyotaName = p.getName();

        //画面表示
        System.out.println(piyotaName);

    }
}


違いが分かりますかね。

まず違うのは

    private String name;

の部分です。
「public」だったのが「private」になっています。

「public」は「どこからでも触れるよ!」な指定です。
「private」は「クラスの外からは触らせないよ!」な指定です。
この変更によって、クラス「Piyota」のメンバ変数「name」は、クラスの外から触れなくなりました。

セッター(setter)6

とはいえ、クラスの外からメンバ変数「name」を触りたい場合もあるでしょう。

そのために以下のメソッド(関数)を用意しました。

    //メソッド
    void setName(String _name){
        this.name = _name;
    }

    String getName(){
        return this.name;
    }


「setName()」メソッドは、メンバ変数「name」に値を設定するときに使う関数です。
直接、メンバ変数「name」に値を設定することはできませんが、この関数を呼び出すことで、間接的にメンバ変数「name」に値を設定できます。

実際に値を設定しているのは

        //メンバ変数「name」に値を設定
        p.setName("ピヨ太");


の部分です。

セッター(setter)7

「getName()」メソッドは、メンバ変数「name」から値を取得するときに使う関数です。
直接、メンバ変数「name」の値を取得することはできませんが、この関数を呼び出すことで、間接的にメンバ変数「name」の値を取得できます。

実際に値を取得しているのは

        //メンバ変数「name」から値を取得
        String piyotaName = p.getName();


の部分です。

セッター(setter)8

このように「クラス内のメンバ変数は隠ぺいするべし!直接、触らせるな!」な人は

メンバ変数を直接触らせる代わりにメンバ変数を操作するメソッドを用意する

のです。

この「メンバ変数を操作するメソッド」のうち「メンバ変数に値を設定するメソッド」を指す俗称が「セッター(setter)」です。
「セット(set)」+「~する人(er)」で「セッター(setter)」ですね。
「人じゃないじゃん!」とツッコミたくなるかもしれませんが、ゆるく捉えてください。

セッター(setter)9

ちなみに「メンバ変数から値を取得して呼び出し元に返すメソッド」は「ゲッター(getter)」と呼びます。
こちらは「ゲット(get)」+「~する人(er)」で「ゲッター(getter)」です。

セッター(setter)10

気が向いたら、併せて覚えてあげてください。

セッター(setter)とゲッター(getter)の要・不要については、ベテランの間でも意見が分かれたりします。
お仕事でプログラミングをしているのであれば、現場の慣習に合わせておくのが無難だと思います。


image piyo2

一言でまとめるよ

まぁ「セッター(setter)」って単語が出てきたら「メンバ変数に値を設定するメソッドなんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像041
書籍画像016

おまけ

■訳してみるよ

「setter(セッター)」は「set(セット)」+「er」です。
「set(セット)」の意味は「(正しい場所に)置く」とか「(時間とかを)合わせる」とか「(期限とかを)設定する」とか「一組」とか「一式」とかです。
接尾辞「er」を付けると「~する人」とか「~するもの」的な意味になります。
何となく くっつけると

置くやつ

となります。




書籍画像
わわわ説明術コラム
宣伝だよ
実務で役立つ バックアップの教科書 基本の考え方からツール活用・差分管理・世代管理・データ保全・リストア・リカバリー・可用性の確保まで
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
ソフトウェア受託現場の「失敗」集めてみた。 42の失敗事例で学ぶ受託開発のうまい進めかた