Menu
Coddy logo textTech

Projeye Genel Bakış ve Yapı

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

challenge icon

Görev

Kolay

Temel yapıyı kurarak Kütüphane Yönetim Sistemi projesine başlayalım! Bu ilk adımda, sonraki derslerde oluşturacağımız tüm özellikleri destekleyecek temel iskeleti oluşturacaksın.

Sorumlulukların temiz bir şekilde ayrılmasını sağlamak için kodunu üç dosyada düzenleyeceksin:

  • book.go: Bir kütüphane kitabını temsil eden bir Book yapısı tanımla. Her kitapta bir ID, Title, Author ve Available durumu (boolean) bulunmalıdır. ID, başlık ve yazarı parametre olarak alan ve NewBook değerini varsayılan olarak Available şeklinde ayarlayarak yeni bir Book işaretçisine dönen true oluşturucu işlevini oluştur. Ayrıca kitabın bilgilerini şu biçimde döndüren bir String() yöntemi ekle: [ID] Title by Author
  • user.go: User, ID ve Name alanlarına sahip bir kütüphane üyesini temsil eden bir Email yapısı tanımla. Üç değerin tamamını alan ve yeni bir User işaretçisine dönen NewUser oluşturucu işlevini oluştur. Şunu döndüren bir String() yöntemi ekle: User: Name (Email)
  • main.go: Kitaplar ve kullanıcılar oluşturmak için girdileri okuyup ardından bilgilerini görüntüleyerek her şeyi bir araya getir.

    Oluşturulacak kitapların sayısını oku. Her kitap için ID'sini, başlığını ve yazarını ayrı satırlarda oku. Ardından kullanıcıların sayısını oku ve her kullanıcı için ID'sini, adını ve e-posta adresini ayrı satırlarda oku.

    Tüm öğeleri oluşturduktan sonra her kitabın dize gösterimini kendi satırında, ardından her kullanıcının dize gösterimini kendi satırında yazdır.

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

  • Kitap sayısı
  • Her kitap için: ID, başlık ve yazar (her biri ayrı satırlarda)
  • Kullanıcı sayısı
  • Her kullanıcı için: ID, ad ve e-posta adresi (her biri ayrı satırlarda)

Örneğin, şu verildiğinde:

2
B001
The Go Programming Language
Alan Donovan
B002
Clean Code
Robert Martin
1
U001
Alice Smith
alice@library.com

Çıktın şu olmalıdır:

[B001] The Go Programming Language by Alan Donovan
[B002] Clean Code by Robert Martin
User: Alice Smith (alice@library.com)

Şu verildiğinde:

1
B100
Design Patterns
Gang of Four
2
U001
Bob Jones
bob@email.com
U002
Carol White
carol@email.com

Çıktın şu olmalıdır:

[B100] Design Patterns by Gang of Four
User: Bob Jones (bob@email.com)
User: Carol White (carol@email.com)

Bu temel yapı, proje boyunca geliştireceğin temel veri modellerini oluşturur. Sonraki derste bu yapıları geliştirecek ve ödünç alma işlevselliğini ekleyeceksin!

Kendin dene

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

func main() {
	reader := bufio.NewReader(os.Stdin)

	// Kitap sayısını oku
	numBooksStr, _ := reader.ReadString('\n')
	numBooks, _ := strconv.Atoi(strings.TrimSpace(numBooksStr))

	// TODO: Kitapları saklamak için bir slice oluşturun

	// TODO: Her kitabın bilgisini (ayrı satırlarda ID, title, author) okuyun
	// ve NewBook kullanarak Book nesneleri oluşturun
	for i := 0; i < numBooks; i++ {
		id, _ := reader.ReadString('\n')
		id = strings.TrimSpace(id)
		title, _ := reader.ReadString('\n')
		title = strings.TrimSpace(title)
		author, _ := reader.ReadString('\n')
		author = strings.TrimSpace(author)

		// TODO: Yeni bir kitap oluşturun ve onu slice'ınıza ekleyin
	}

	// Kullanıcı sayısını oku
	numUsersStr, _ := reader.ReadString('\n')
	numUsers, _ := strconv.Atoi(strings.TrimSpace(numUsersStr))

	// TODO: Kullanıcıları saklamak için bir slice oluşturun

	// TODO: Her kullanıcının bilgisini (ayrı satırlarda ID, name, email) okuyun
	// ve NewUser kullanarak User nesneleri oluşturun
	for i := 0; i < numUsers; i++ {
		id, _ := reader.ReadString('\n')
		id = strings.TrimSpace(id)
		name, _ := reader.ReadString('\n')
		name = strings.TrimSpace(name)
		email, _ := reader.ReadString('\n')
		email = strings.TrimSpace(email)

		// TODO: Yeni bir kullanıcı oluşturun ve onu slice'ınıza ekleyin
	}

	// TODO: Her kitabın dize (string) temsilini yazdırın

	// TODO: Her kullanıcının dize (string) temsilini yazdırın
	fmt.Println("TODO: Print output here")
}

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

Kendi başına pratik yap: Online Go derleyicisi