Javaプログラミング、変数のメソッドを呼び出してメソッドを再利用

Javaプログラミングにおいて、2つのクラスの「結び付き」が弱い時、メソッドの再利用をどうしたら良いですか?

Javaプログラミングのクラス内に定義してあるインスタンス変数から、メソッドを呼び出す方法があります。

インスタンス変数からメソッドを呼び出すことで、再利用したいメソッドを限定できます。

Javaプログラミング、変数のメソッドを呼び出してメソッドを再利用する方法

Javaプログラミングにおいてメソッドを再利用する方法に、クラス内に定義してあるインスタンス変数(メンバ変数)のメソッドを呼び出す方法があります。

次のような場合に「変数のメソッド」を呼び出して、メソッドを再利用してみようと思います。

あるクラスAから、別のクラスBの49%以下のメソッドを再利用する場合。

再利用するメソッド数が、

  • クラスBの全メソッド数の49%以下である、

という条件が成り立つなら、
クラスAとクラスBの「結び付きは弱い」と判断します。

そして「変数のメソッドを呼び出す」という方法で、メソッドを再利用してみます。

Javaプログラミング
Javaプログラミング・イメージ画像

「変数のメソッドを呼び出して、メソッドを再利用する方法」の例

以下に「変数のメソッドを呼び出して、メソッドを再利用する」という方法で、メソッドを再利用している例を書きます。
プログラムの詳細を理解する必要は、ありません。

public class NoteList{

    private List noteList = new ArrayList();


    public void add(int index, Note note){
        this.noteList.add(index, note);
    }

    public Note get(int index){
        return (Note)this.noteList.get(index);
    }

    public int size(){
        return this.noteList.size();
    }
    
    
    public void setOctave(int octave){
        for (int i = 0; i < this.noteList.size(); i++){
            Note note = (Note)this.noteList.get(i);
            note.setOctave(octave);
        }
    }
    
    ……

}

NoteListクラスは、Noteクラスの変数を複数個、管理するためのクラスです。

Noteクラスの変数を複数個、管理するために、ArrayListクラスの再利用を試みます。

この管理処理のために、ArrayListクラスの次の3個のメソッドを再利用します。

ArrayListクラスのadd( …… )
ArrayListクラスのget( …… )
ArrayListクラスのsize()

ちなみにArrayListクラスのpublicなメソッドは、40個以上あります。
40個以上のメソッドにおいて、今回再利用するメソッドは3個です。

よってArrayListクラスのメソッドにおいて、49%以下のメソッドを再利用していると判断しました。

なので、NoteListクラスとArrayListクラスの「結び付きは弱い」と判断しました。

以上の事より「変数noteListのメソッドを呼び出す」という方法で、メソッドを再利用してみます。

this.noteList.add(index, note);
this.noteList.get(index);
this.noteList.size();

参考:Javaプログラミングにおいて、クラスを継承してメソッドを再利用する方法

先ほど言ったように、NoteListクラスとArrayListクラスの「結び付きは弱い」と判断しました。

なのでJavaプログラミングにおいて、次のようにクラス継承という方法でメソッドを再利用することを、やめました。

クラス継承の例:

 public class NoteList extends ArrayList {
     ……
 }

※この記事は、2004年7月当時の記事になります。

【まとめ記事】Javaアプリの品質を保つため、Javaソースコードを書くための工夫

Javaソースコードを正しく書くための、ちょっとした工夫について、ご紹介しています。 変数の寿命を限定する書き方。 肯定的な条件を優先して条件分岐する書き方。 クラス…