Menu
CoddyTech

Ikhtisar dan Struktur Proyek

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GO di Coddy. Pelajaran 98 dari 107.

challenge icon

Tantangan

Mudah

Mari kita mulai proyek Library Management System dengan menyiapkan struktur dasarnya! Pada langkah pertama ini, kamu akan membuat kerangka dasar yang akan mendukung semua fitur yang akan kita bangun pada pelajaran berikutnya.

Kamu akan mengatur kodemu dalam tiga file untuk memisahkan tanggung jawab dengan jelas:

  • book.go: Definisikan struct Book yang merepresentasikan buku perpustakaan. Setiap buku harus memiliki ID, Title, Author, dan status Available (boolean). Buat fungsi konstruktor NewBook yang menerima ID, judul, dan penulis sebagai parameter, lalu mengembalikan pointer ke Book baru dengan Available yang secara default diatur ke true. Tambahkan juga method String() yang mengembalikan informasi buku dalam format: [ID] Title by Author
  • user.go: Definisikan struct User yang merepresentasikan anggota perpustakaan dengan field ID, Name, dan Email. Buat fungsi konstruktor NewUser yang menerima ketiga nilai tersebut dan mengembalikan pointer ke User baru. Tambahkan method String() yang mengembalikan: User: Name (Email)
  • main.go: Satukan semuanya dengan membaca input untuk membuat buku dan pengguna, lalu tampilkan informasi mereka.

    Baca jumlah buku yang akan dibuat. Untuk setiap buku, baca ID, judul, dan penulisnya pada baris terpisah. Lalu baca jumlah pengguna, dan untuk setiap pengguna baca ID, nama, dan email mereka pada baris terpisah.

    Setelah membuat semua item, cetak representasi string setiap buku pada barisnya sendiri, lalu representasi string setiap pengguna pada barisnya sendiri.

Input berikut akan diberikan:

  • Jumlah buku
  • Untuk setiap buku: ID, judul, dan penulis (masing-masing pada baris terpisah)
  • Jumlah pengguna
  • Untuk setiap pengguna: ID, nama, dan email (masing-masing pada baris terpisah)

Contohnya, jika diberikan:

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

Output kamu seharusnya:

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

Dan jika diberikan:

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

Output kamu seharusnya:

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

Fondasi ini menetapkan model data inti yang akan kamu kembangkan sepanjang proyek. Pada pelajaran berikutnya, kamu akan menyempurnakan struct ini dan menambahkan fungsionalitas peminjaman!

Coba sendiri

package main

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

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

	// Baca jumlah buku
	numBooksStr, _ := reader.ReadString('\n')
	numBooks, _ := strconv.Atoi(strings.TrimSpace(numBooksStr))

	// TODO: Buat slice untuk menyimpan buku

	// TODO: Baca informasi setiap buku (ID, judul, penulis pada baris terpisah)
	// dan buat object Book menggunakan NewBook
	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: Buat buku baru dan tambahkan ke slice-mu
	}

	// Baca jumlah pengguna
	numUsersStr, _ := reader.ReadString('\n')
	numUsers, _ := strconv.Atoi(strings.TrimSpace(numUsersStr))

	// TODO: Buat slice untuk menyimpan pengguna

	// TODO: Baca informasi setiap pengguna (ID, nama, email pada baris terpisah)
	// dan buat object User menggunakan NewUser
	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: Buat pengguna baru dan tambahkan ke slice-mu
	}

	// TODO: Cetak representasi string setiap buku

	// TODO: Cetak representasi string setiap pengguna
	fmt.Println("TODO: Print output here")
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Go online