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 (interface) kavramlarını bir araya getiren bir şekil hesaplayıcı oluşturalım. Farklı geometrik şekillerin ortak bir arayüz aracılığıyla tek tip olarak işlenebildiği bir sistem oluşturacak ve Go'daki polimorfizmin (çok biçimlilik) gücünü göreceksiniz.

Kodunuzu üç dosya halinde düzenleyeceksiniz:

  • shape.go: İki metodu olan bir Shape arayüzü tanımlayın: Area() float64 ve Perimeter() float64. Ayrıca, herhangi bir Shape kabul eden ve hem alanını hem de çevresini gösteren formatlanmış bir dize döndüren DescribeShape adında bir fonksiyon oluşturun.
  • shapes.go: Shape arayüzünü uygulayan iki yapı (struct) oluşturun:
    • Width ve Height alanlarına sahip bir Rectangle
    • Radius alanına sahip bir Circle
    Her yapı hem Area() hem de Perimeter() metodlarını, ayrıca şeklin okunabilir bir açıklamasını döndüren bir String() metodunu (fmt.Stringer arayüzünü uygulayarak) içermelidir.
  • main.go: Girişten şekil verilerini okuyun, uygun şekilleri oluşturun ve her biri hakkında bilgi görüntülemek için DescribeShape fonksiyonunuzu kullanın. Ayrıca Stringer arayüzünü göstermek için her şekli doğrudan yazdırın.

Aşağıdaki girişler sağlanacaktır:

  • Satır 1: Dikdörtgen genişliği (float)
  • Satır 2: Dikdörtgen yüksekliği (float)
  • Satır 3: Daire yarıçapı (float)

Hesaplamalar için pi değeri olarak 3.14159 kullanın. Daire çevresi 2 * pi * radius formülüyle hesaplanır.

String() metodlarınız şunları döndürmelidir:

  • Rectangle: "Rectangle(%.2f x %.2f)" (Genişlik x Yükseklik formatında)
  • Circle: "Circle(Radius: %.2f)"

DescribeShape fonksiyonunuz şunu döndürmelidir:

Area: %.2f, Perimeter: %.2f

Tüm float değerlerini %.2f kullanarak iki ondalık basamakla formatlayın.

Örneğin, 4, 3 ve 5 verildiğinde çıktınız şö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 (kendi String() metodunu kullanarak), ardından DescribeShape fonksiyonundan gelen açıklamasını yazdırın. Önce dikdörtgeni, sonra daireyi işleyin.

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