ひびのログ

日々ではないけどログを出力していくブログ

is-a 関係は「イズ-ア」であって「イズ-エー」ではない!

オブジェクト指向を学ぶ上で、絶対とは言い切れないけどそこそこの確率で出てくる「is-a 関係」という単語。 これの読み方はタイトルの通り「イズ-ア」ですよ、というお話。

弊社の新人研修でも勘違いして教えている人がいたので、しっかりと正していきたいと思います。

そもそも「is-a 関係」とは?

ずばり継承関係のことです。

Javaでの例

以下のコードは、「IsuzuTruckCarを継承している」といいます。

class Car {
    void start() {
        System.out.println("start");
    }
    
    void stop() {
        System.out.println("stop");
    }
}

class IsuzuTruck extends Car {
}

このIsuzuTruckをインスタンス化すると、継承元であるCarに定義されているstart()メソッド・stop()メソッドが使用できます。 なにが便利なのかというと、IsuzuTruckCarで同じ処理をしたい場合、それぞれのクラスに書いて二重管理をする必要がなくなるということです。 (この利便性だけが取り沙汰されて、正しい継承の使い方がされていませんが……)

f:id:tee-talog:20180610105742p:plain

なぜ「イズ-ア」なのか

継承関係を日本語で説明するとどうなるか思い出してください。

上の例でいうと、「IsuzuTruckCarである。」です。正しいですよね。 簡略化すると「AはBである」です。 それを英語に直すと「A is a B」です。

はい出てきました、「is-a」ですね。 「is-a 関係」の「is-a」は、継承関係を単純に表したときの文章に表れる文なのです。

補足:「has-a 関係」

他にも似たような関係として、「has-a 関係」があります。

これも同じようなもので、「AはBを持っている」→「A has a B」を表します。 つまり集約関係を表します。

まとめ

この業界は結構英語の造語(固有名詞)が多いので、読み方に困ることが多々あります。 (Ajax とか SaaS とか……) 怖がらずに、ググればメジャーどころは出てくるので、じゃんじゃんググって正しい読み方で会話していきましょう!

補足

普通の英単語でも間違えている人、結構いますよね。 false とか warning とか height とかとか……