Buku dan Anggota
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Ruby di Coddy. Pelajaran 50 dari 57.
Dalam proyek ini, kamu membangun inti sistem library. Object Library menerima perintah, satu per baris, lalu membalas setiap perintah. Dalam lima langkah, sistem ini akan belajar menambahkan buku dan anggota, meminjam dan mengembalikan buku, mencari katalog, serta mencetak laporan.
ADD_BOOK 1 Dune
JOIN ada
BORROW ada 1
RETURN ada 1
SEARCH dune
REPORTModel data ini menggunakan hal-hal yang diajarkan di bagian ini. Book menyediakan id dan title hanya-baca, serta borrower melalui accessor, dengan predikat available?. Member menyimpan id pinjamannya dalam sebuah array. Setiap class berada di file tersendiri, book.rb, member.rb, dan library.rb, dan library menyimpan kedua jenis object dalam hash yang hanya diakses oleh method miliknya sendiri:
class Book
attr_reader :id, :title
attr_accessor :borrower
def initialize(id, title)
@id = id
@title = title
@borrower = nil
end
def available?
borrower.nil?
end
end
books = { 1 => Book.new(1, "Dune") }
books[1].borrower = "ada"
puts books[1].available?Output:
falsehandle(line) memisahkan perintah dan memilih percabangan berdasarkan kata pertamanya dengan case. Setiap percabangan mengembalikan balasannya sebagai array, jadi perintah seperti REPORT dapat membalas dengan beberapa baris, dan return keluar lebih awal dengan balasan error. Judul buku dapat berisi spasi, jadi judulnya adalah semua teks setelah id:
parts = "ADD_BOOK 7 The Hobbit".split
id = parts[1].to_i
title = parts[2..].join(" ")
puts "#{id}: #{title}"Output:
7: The HobbitTantangan
MudahLengkapi Library#handle untuk dua perintah pertama:
ADD_BOOK id title: simpan buku baru yang tersedia dan berikan balasanadded book 1: Dune; jika id sudah digunakan, berikan balasanbook 1 exists.JOIN name: tambahkan anggota dan berikan balasanwelcome ada; jika nama sudah ada, berikan balasanada is already a member.
Kode yang disediakan meneruskan setiap baris input ke library.handle(line) dan mencetak setiap balasan yang dikembalikan pada baris tersendiri. Nama anggota berupa satu kata dengan huruf kecil, id buku berupa bilangan bulat, dan input hanya berisi perintah yang telah dijelaskan sejauh ini. Perintah lainnya akan memberikan balasan unknown command.
Tulis kodemu di book.rb, member.rb, dan library.rb. main.rb berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
require_relative 'book'
require_relative 'member'
require_relative 'library'
# Kode input/output yang disediakan: biarkan apa adanya
input = []
while (line = gets)
input << line.chomp
end
library = Library.new
input.each do |line|
library.handle(line).each { |reply| puts reply }
end
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1class dan object
Bekerja dengan fileMendefinisikan classVariabel instansmethod dan selfto_s dan inspectRingkasan: Kartu Perpustakaan4Enkapsulasi
private methodprotected methodprivate setterMelindungi StatusUlasan, Mesin Penjual Otomatis7Polimorfisme dan Duck Typing
PolimorfismeDuck TypingMethod Abstrakcase dan classRingkasan: Method Pembayaran2Accessor dan self
Pembaca dan PenulisSetter Kustomself dalam methodIdentitas dan KesetaraanRangkuman: Daftar Kontak8Special method
Kesetaraan dan hashOperator methodPengindeksan dan penambahanKoleksi kustomRingkasan: Pecahan11Proyek: Manajemen Perpustakaan
Buku dan AnggotaMeminjam Buku3Method dan Variabel class
Method classVariabel instance classKonstantaMethod pabrikRangkuman: Kode KuponLatihan sendiri: Compiler Ruby online