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

Kütüphane Yönetim Sistemi projesine temel yapıyı kurarak başlayalım! Bu ilk adımda, gelecek derslerde inşa edeceğimiz tüm özellikleri destekleyecek temel iskeleyi oluşturacaksınız.

Kodunuzu, sorumlulukların temiz bir şekilde ayrılmasını sağlamak için üç dosya halinde düzenleyeceksiniz:

  • book.go: Bir kütüphane kitabını temsil eden bir Book struct'ı tanımlayın. Her kitabın bir ID, Title, Author ve Available durumu (boolean) olmalıdır. ID, başlık ve yazarı parametre olarak alan ve varsayılan olarak Available değeri true olarak ayarlanmış yeni bir Book'a işaretçi (pointer) döndüren bir NewBook yapıcı (constructor) fonksiyonu oluşturun. Ayrıca, kitap bilgilerini şu formatta döndüren bir String() metodu ekleyin: [ID] Title by Author
  • user.go: ID, Name ve Email alanlarına sahip bir kütüphane üyesini temsil eden bir User struct'ı tanımlayın. Her üç değeri de alan ve yeni bir User'a işaretçi döndüren bir NewUser yapıcı fonksiyonu oluşturun. Şu formatı döndüren bir String() metodu ekleyin: User: Name (Email)
  • main.go: Kitap ve kullanıcı oluşturmak için girdileri okuyarak ve ardından bilgilerini görüntüleyerek her şeyi bir araya getirin.

    Oluşturulacak kitap sayısını okuyun. Her kitap için ID, başlık ve yazarı ayrı satırlarda okuyun. Ardından kullanıcı sayısını okuyun ve her kullanıcı için ID, isim ve e-postayı ayrı satırlarda okuyun.

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

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, isim ve e-posta (her biri ayrı satırlarda)

Örneğin, şu girdi verildiğinde:

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

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

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

Ve şu girdi verildiğinde:

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

Çıktınız ş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, proje boyunca genişleteceğiniz çekirdek veri modellerini oluşturur. Bir sonraki derste, bu struct'ları geliştirecek ve ödünç alma işlevini ekleyeceksiniz!

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