まとめ - 図形計算機
CoddyのGOジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 33/107。
チャレンジ
簡単この章で学んだすべてのインターフェースの概念を統合した、図形計算機を作成しましょう。異なる幾何学図形を共通のインターフェースを通じて一律に処理できるシステムを構築し、Goにおけるポリモーフィズムの威力を体験してください。
コードは以下の3つのファイルに分けて構成します:
shape.go:Area() float64とPerimeter() float64の2つのメソッドを持つShapeインターフェースを定義します。また、任意のShapeを受け取り、その面積と周囲の長さの両方を示すフォーマット済み文字列を返すDescribeShapeという関数を作成します。shapes.go:Shapeインターフェースを実装する2つの構造体を作成します:WidthとHeightフィールドを持つRectangleRadiusフィールドを持つCircle
Area()とPerimeter()メソッドの両方を実装し、さらに図形の読みやすい説明を返すString()メソッド(fmt.Stringerインターフェースの実装)を実装する必要があります。main.go: 入力から図形データを読み取り、適切な図形を作成し、DescribeShape関数を使用して各図形の情報を表示します。また、Stringerインターフェースを実証するために、各図形を直接出力します。
以下の入力が提供されます:
- 1行目: 長方形の幅 (float)
- 2行目: 長方形の高さ (float)
- 3行目: 円の半径 (float)
計算には、piの値として 3.14159 を使用してください。円の周囲の長さは 2 * pi * radius です。
String() メソッドは以下を返す必要があります:
- Rectangle:
"Rectangle(%.2f x %.2f)" - Circle:
"Circle(Radius: %.2f)"
DescribeShape 関数は以下を返す必要があります:
Area: %.2f, Perimeter: %.2fすべての浮動小数点値は、%.2f を使用して小数点以下2桁でフォーマットしてください。
例えば、4、3、5 が与えられた場合、出力は以下のようになります:
Rectangle(4.00 x 3.00)
Area: 12.00, Perimeter: 14.00
Circle(Radius: 5.00)
Area: 78.54, Perimeter: 31.42最初に各図形を出力し(String() メソッドを使用)、次に DescribeShape による説明を出力してください。長方形を先に処理し、その次に円を処理します。
自分で試してみよう
package main
import (
"fmt"
)
func main() {
// 入力値を読み込む
var width, height, radius float64
fmt.Scanln(&width)
fmt.Scanln(&height)
fmt.Scanln(&radius)
// TODO: 指定された幅と高さでRectangle(長方形)を作成する
// TODO: 指定された半径でCircle(円)を作成する
// TODO: 長方形を出力する(String()メソッドを使用)
// TODO: DescribeShape()を使用して長方形の説明を出力する
// TODO: 円を出力する(String()メソッドを使用)
// TODO: DescribeShape()を使用して円の説明を出力する
}
オブジェクト指向プログラミングのすべてのレッスン
1Go オブジェクト指向の基礎
外部ファイルGo ワークスペースとモジュールパッケージとインポート公開された名前と非公開の名前Go におけるオブジェクト指向入門クラスとしての構造体構造体へのメソッド定義ポインタレシーバと値レシーバ構造体の初期化コンストラクタ関数まとめ:簡易計算機8エラー処理とOOP
error インターフェースカスタムエラー型エラーラッピング (fmt.Errorf)センチネルエラーerrors.Is() と errors.As()Panic、Defer、Recover復習 - ファイルパーサー