Menu
Coddy logo textTech

Özet - Şekil Hesaplayıcı

Coddy'nin GO Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 33 / 107.

challenge icon

Görev

Kolay

Bu bölümdeki tüm arayüz kavramlarını bir araya getiren bir şekil hesaplayıcı oluşturalım. Farklı geometrik şekillerin ortak bir arayüz aracılığıyla aynı şekilde işlenebildiği ve Go'da polimorfizmin gücünü gösteren bir sistem oluşturacaksın.

Kodunu üç dosyaya ayıracaksın:

  • shape.go: İki yönteme sahip bir Shape arayüzü tanımla: Area() float64 ve Perimeter() float64. Ayrıca herhangi bir DescribeShape kabul eden ve hem alanını hem de çevresini gösteren biçimlendirilmiş bir dize döndüren Shape adlı bir işlev oluştur.
  • shapes.go: Shape arayüzünü uygulayan iki yapı oluştur:
    • Rectangle ve Width alanlarına sahip bir Height
    • Circle alanına sahip bir Radius
    Her yapı hem Area() hem de Perimeter() yöntemlerini ve ayrıca şeklin okunabilir bir açıklamasını döndüren bir String() yöntemi (fmt.Stringer uygulayan) içermelidir.
  • main.go: Girdi üzerinden şekil verilerini oku, uygun şekilleri oluştur ve her biri hakkındaki bilgileri görüntülemek için DescribeShape işlevini kullan. Ayrıca Stringer arayüzünü göstermek için her şekli doğrudan yazdır.

Aşağıdaki girdiler sağlanacaktır:

  • 1. satır: Dikdörtgenin genişliği (float)
  • 2. satır: Dikdörtgenin yüksekliği (float)
  • 3. satır: Dairenin yarıçapı (float)

Hesaplamalar için pi değerini 3.14159 olarak kullan. Dairenin çevresi 2 * pi * radius şeklindedir.

String() yöntemlerin şunları döndürmelidir:

  • Dikdörtgen: Rectangle(Width x Height)
  • Daire: Circle(Radius: R)

DescribeShape işlevin şunu döndürmelidir:

Area: [area], Perimeter: [perimeter]

Tüm float değerlerini %.2f kullanarak iki ondalık basamakla biçimlendir.

Örneğin, 4, 3 ve 5 verildiğinde çıktın şöyle olmalıdır:

Rectangle(4.00 x 3.00)
Area: 12.00, Perimeter: 14.00
Circle(Radius: 5.00)
Area: 78.54, Perimeter: 31.42

Önce her şekli (String() yöntemini kullanarak), ardından DescribeShape işlevinden elde edilen açıklamasını yazdır. Önce dikdörtgeni, sonra daireyi işle.

Kendin dene

package main

import (
	"fmt"
)

func main() {
	// Giriş değerlerini oku
	var width, height, radius float64
	fmt.Scanln(&width)
	fmt.Scanln(&height)
	fmt.Scanln(&radius)

	// TODO: Verilen genişlik ve yükseklik ile bir Rectangle (Dikdörtgen) oluşturun

	// TODO: Verilen yarıçap ile bir Circle (Daire) oluşturun

	// TODO: Dikdörtgeni yazdırın (String() metodunu kullanır)
	// TODO: DescribeShape() kullanarak dikdörtgenin açıklamasını yazdırın

	// TODO: Daireyi yazdırın (String() metodunu kullanır)
	// TODO: DescribeShape() kullanarak dairenin açıklamasını yazdırın
}

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Go derleyicisi