Javaオブジェクト指向プログラミング講座

多態性で面積を求める

全334コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
多態性を、図形の面積を求めるプログラムで解説します。
講師:
06:26

字幕

このレッスンでは、多態性を図形の面積を求めるプログラムで解説します。長方形・三角形・楕円形この面積を求めます。従来の方法はそれぞれの計算式で求める。その時に呼び出し側で条件分岐が必要。if 文で すね。if 図形が長方形ならば、この式if 図形が三角形ならば、この式if 楕円形ならば、 この式とif 文か switch case 文が入ります。呼び出し側で条件分岐が必要です。それを当然と言えば、当然なんですけど多態性による方法はそうではありません。全て面積という同じ名前の操作で面積を求める。どうしてそういうことができるかと言うと全ての図形は自分が長方形か三角形か知ってるわけです。あなたに面積を求めなさいと言われたら自分は長方形だから縦 × 横で計算します。或いは、自分は三角形だから底辺 × 高さ ÷ 2で計算します。という風に自分が誰か、自分が何者か知っているから自分のやり方で面積を求める。つまり多態性による方法は呼び出し側で条件分岐が入らない。これはメリットです。どうしてそんなことができるのか。今からプログラムを示しますけどもこの Figure というスーパークラスこれは抽象クラスです。 イタリックで書いています。幅と高さを持っています。これ protected ですね。これは area という操作です。これ斜体で書いています。抽象操作です。Rectangle Triangle Elipseそれぞれやはり同じ名前の area という操作を持っています。そして、それぞれの計算式を持っているわけです。これを今から Java のプログラムで示します。NetBeans で area というプロジェクトを作ります。フォルダーは ch09 とします。クラス名は Main とします。抽象クラス Figure を作成します。抽象クラスは、前に abstract というキーワードをつけます。次に中身を書いていきます。幅と高さ、protected で定義します。次にコンストラクタを作ります。次に抽象メソッド area を作ります。これ abstract というキーワードを付けます。これは抽象なので、この後ろに実装は無いわけですね。普通はここにプログラムを書くわけですけどもabstract の場合は書きません。次に Figure を継承してRectangle を作ります。Rectangle は特にフィールドはありません。 コンストラクタですけどもこの superFigure のコンストラクタを呼び出します。それで area を実装します。上書きするわけですね。return width * height、縦 × 横です。ここまでで実行をかけてみましょう。main の方に Rectangle fig0new Rectangle面積を表示します。そうすると、10×10 で 100 と出ました。これはこれでいいんですけどもここで、この Rectangle という風にしましたけどもこれを Figure にするんですね。これをコメントアウトしておきましょう。そしてコピーします。この Rectangle を Figure に変えてみます。スーパークラスの Figure にしてみます。これで実行をかけます。100、ちゃんと出るんですね。これが、多態性に必要な重要なことなんですけどもここにスーパークラス名を書いてもスーパークラスの型でもいいんですね。Rectangle スーパークラスそれで他の三角形と楕円を作ってみましょう。三角形です。次に楕円を作ります。楕円を作りました。違いは面積ですね。三角形は、割る2。楕円は、3.14 は Math という所に入っています。 Math.PIこれが 3.141592 です。それで main の方を追加していきます。main に3つ作りました。これを実行をかけてみます。そうすると、長方形が 100、三角が 50楕円が 78.5... となるわけです。ここで大事な所はさっき言いましたけどもここ、Triangle ならこっち Triangleそれでも構いません。しかし、ここをスーパークラスのFigure にできるんです。つまり、fig0,1,2 は Figure 型なんですね。だから、これ fig0 area とやってますけどこれ Figure 型なんです。しかし、自分は作った時にRectangle か Triangle か Elipse か自分は知ってるわけなんです。だから、この fig0 fig1 fig2 の area違うメソッドを呼んでるんですね。これは Rectangle の areaこれは Triangle の areaこれは Elipse の area違うエリアを呼んでいるんです。これが多態性のプログラミングです。このレッスンでは、多態性を図形の面積を求めるプログラムで解説しました。

Javaオブジェクト指向プログラミング講座

このコースではオブジェクト指向プログラミングの3大特徴である「カプセル化」「継承」「多態性」を、UMLモデルとJavaプログラムを対比しながら解説します。「カプセル化」ではコンストラクタや可視性、「継承」ではUML汎化関係とJavaの関係、「多態性」では継承およびインタフェースによるプログラミング方法などを説明します。

3時間23分 (36 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 2,990
発売日:2016年09月27日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。