C# 平面図形(PlaneFigure)クラスに集約し、Boxクラス、およびTriangleクラスは、それらのクラスを継承したものにする - FC2ブログの有料プランで素人が雑記ブログで記事書きまくる

C# 平面図形(PlaneFigure)クラスに集約し、Boxクラス、およびTriangleクラスは、それらのクラスを継承したものにする

cccc
C# 二種類の図形、四角形(Box)と、三角形(Triangle)クラスのインスタンスを生成し、各クラスのメソッドを実行するプログラムである。この2つのクラスには、共通するメンバが存在する。
そこで、これら2つのクラスに共通するメンバを、平面図形(PlaneFigure)クラスに集約し、Boxクラス、およびTriangleクラスは、それらのクラスを継承したものにするように、プログラムを書きかかえなさい。ただし、この時、PlaneFigureクラスは、抽象プロパティAreaを持つ抽象クラスとすること。


どうも、エフロン君です。プログラミングの記事です。C#言語を使用しています。
今回はC#の問題に対して私なりの答えを示していきたいと思います。
※コードの書き方は一つではないため、悪魔で一例をここに掲載するだけです。

コードを書く上で私は Microsoft Visual Studioを使用しています。
また、コンソールアプリ(.NET Framework)を利用してコードを書いています。

私のコードが正しいという確証はないので参考程度にしてください。
コードの書き方は人それぞれであるため、どれが正しくて、まとめられているのかなどは主観になってくることです。
私のコードがあなたの役に立つことを祈っています。是非参考に!

今回の問題は、
「二種類の図形、四角形(Box)と、三角形(Triangle)クラスのインスタンスを生成し、各クラスのメソッドを実行するプログラムである。この2つのクラスには、共通するメンバが存在する。
そこで、これら2つのクラスに共通するメンバを、平面図形(PlaneFigure)クラスに集約し、Boxクラス、およびTriangleクラスは、それらのクラスを継承したものにするように、プログラムを書きかかえなさい。ただし、この時、PlaneFigureクラスは、抽象プロパティAreaを持つ抽象クラスとすること。」
これを解いていきたいと思います。

@Program.csは
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace prob402
{
class Program
{
static void Main(string[] args)
{

PlaneFigure[] zu = new PlaneFigure[2];
zu[0] = new Box(2.0, 4.0);
zu[1] = new Triangle(4.0, 1.5);

Console.WriteLine("幅{0}、高さ{1}の四角形の面積は{2}", zu[0].Width, zu[0].Height, zu[0].Area);
Console.WriteLine("幅{0}、高さ{1}の三角形の面積は{2}", zu[1].Width, zu[1].Height, zu[1].Area);

}
}
}

@PlaneFigure.csは
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace prob402
{
abstract class PlaneFigure
{
protected double area = 0;

protected double width = 0;

protected double height = 0;

public PlaneFigure(double width, double height)
{
this.width = width;
this.height = height;
}

public abstract double Width
{
get;
set;
}

public abstract double Height
{
get;
set;
}

public abstract double Area
{
get;
}

}
}

@Triangle.csは
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace prob402
{
class Triangle : PlaneFigure
{
public Triangle(double width, double height) : base(width,height)
{
}

public override double Width
{
get { return width; }
set { width = value; }
}

public override double Height
{
get { return height; }
set { height = value; }
}

public override double Area
{
get { return width * height / 2.0; }
}
}
}

@Box.csは
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace prob402
{
class Box : PlaneFigure
{
public Box(double width, double height) : base(width, height)
{
}

public override double Width
{
get { return width; }
set { width = value; }
}

public override double Height
{
get { return height; }
set { height = value; }
}

public override double Area
{
get { return width * height; }
}
}
}


以上です。
ぜひ参考になればと思います。
解説や説明はないのでわからない部分は自力で頑張っていただく形になります。よろしくお願いいたします。
(間違っていたらすいませんorz)
それでは頑張ってください。以下、参考までに
今なら無料体験会実施中!!一度参加して自分の実力を測ってみよう!
ネットワークエンジニア始めるならネットビジョンアカデミー(NVA)
中高生向けオンラインのプログラミングスクール【TechAcademyジュニア】








関連記事

コメント

非公開コメント

エフロン君

どうも、エフロン君です。 来年から社会人になる国公立大学の大学生です!仕入れた情報や自分が学んできたうえで感じたことなど記載していくので是非見ていってください!


Twitterフォローもよろしくね

よく閲覧されている関連記事はこちらから




にほんブログ村 大学生日記ブログ 大学4年生へにほんブログ村 投資ブログ 仮想通貨マイニングへ
にほんブログ村 就職バイトブログ 大学新卒の就職・就職活動へ


1日1回クリックして応援してくれると嬉しいです。

こちらもよろしく!
このエントリーをはてなブックマークに追加 Share on Google+

訪問者数

bitFlyerにすれば失敗しない!

bitFlyer ビットコインを始めるなら安心・安全な取引所で

GMOなら安心して取引可能!

無料で初めてリスクなし!?

オススメのポイントサイトです。
ポイントでお小遣い稼ぎ|ポイントタウン

人気No1ポイントサイト!

モッピー!お金がたまるポイントサイト

Amazonでお得にゲームを買おう