CSIS 212 Programming Assignment 4
A local non-profit wants to develop a Java Based Bible Reading Application. They have recruited you to
help them in this endeavor. The application will store the Bible text organized in instances of four
classes:
Verse – verse in the Bible. An instance of the Verse class will have the following methods supported:
1. String getText() – returns the text of the verse instance.
2. String getId() – returns the book, chapter, and verse number as a String.
3. String toString() – returns the contents of the instance in the format: number text
4. A class constructor in the form: Verse(String id, String text)
5. Override toString() to display “verse number : text”
Chapter – chapter in the Bible. An instance of Chapter will have the following methods supported:
1. ArrayList<Verse> getVerses() – returns a reference to the Verse collection in the Chapter
instance
2. String getId() – returns the book and chapter number as a String
3. void addVerse(Verse v) – adds a Verse instance to the collection in the Chapter instance
4. A class constructor in the form of Chapter(String bookname, String number)
5. String toString() – returns a string containing all the verses in the Chapter instance. Hint: iterate
through the Verse list calling its toString(). At the start of the iteration, output the Chapter
number.
Book – book in the Bible.
1. String getId() – returns the name of the Book instance
2. ArrayList<Chapter> getChapters() – returns a reference to the Chapter collection in the Book
instance
3. A class constructor in the form of Book(String name)
4. void addChapter(Chapter c) – adds a Chapter instance to the collection in the Book instance
5. String toString() – returns a string containing all the Verses in all the Chapters in the Book
instance. This is just doing the same thing as Chapter toString() except that you iterate over the
Chapter list calling toString() at each instance.
Bible
1. String getId() – returns the translation of this Bible instance (i.e. NIV).
2. ArrayList<Book> getBooks() – returns a reference to the Book collection in the Bible instance
3. Void addBook(Book b) – adds a Book instance to the collection of Books in the Bible instance
4. String toString() – returns the version followed by all the books, chapters, and verses in the
instance.
5. A class constructor in the form of Bible(String id)
Deliverables:
1. Construct the aforementioned classes. There should be a Verse.java, Chapter.java, Book.java,
and Bible.java.
2. Place classes in package biblemodel package.
3. Implement the methods described above. Be sure to document the methods using JavaDoc.
4. Construct a test class (BibleTest.java) with a main method. Place this class in the test package.
The main method should do the following:
a. Create a static main method as an entry point for the application. In that method:
b. Construct a Verse object and assign text as well as a verse number. Use the text: “In the
beginning God created the heavens and the earth.”
c. Construct a Chapter object and add the previous Verse object to its collection. Set the
Chapter number to 1.
d. Construct a Book object and add the previous Chapter object to its Chapter collection.
Set the book name to “Genesis”.
e. Construct a Bible object and set the version to “NIV”
f. Now add the verse instance to the chapter instance and the chapter instance to the
book instance. Finally, add the book instance to the bible instance.
g. Output the contents of your “bible” by calling System.out.println(bible.toString());
5. Turn project per standard requirements. Be sure to include a screen shot of the output window
showing the output of your project. Your output should look like:
NIV
NIV Genesis
NIV Genesis 1
NIV Genesis 1:1 In the beginning God created the heavens
and the earth.
B:\MSVC\Java\Bible>c:javac
BibleTest.java
B:\MSVC\Java\Bible>c:java
BibleTest
Naa
NIV
Genesis
NIV
Genesis
1
NIV
Genesis
1
1:
In
the
beginning
God
created
the
heavens
and
the
earth.
B:\MSVC\Java\Bible>
package biblemodel;
import java.util.ArrayList;
public class Bible
{
private String id;
private ArrayList<Book> books;
public String getId() // returns the translation of this
Bible instance (i.e. NIV).
{
return id;
}
public ArrayList<Book> getBooks() // returns a reference to
the Book collection in the Bible instance
{
return books;
}
public void addBook(Book b) // adds a Book instance to the
collection of Books in the Bible instance
{
b.addToId(id);
books.add(b);
}
public String toString() // returns the version followed by
all the books, chapters, and verses in the instance.
{
String str = id + "\n"; // bible
for(int I = 0; I < books.size(); I++) // its books
str += books.get(I) + "\n";
return str;
}
public Bible(String id)
{
this.id = id;
books = new ArrayList<Book>();
}
}
package biblemodel;
import java.util.ArrayList;
public class Book
{
private String name; // book's name
private ArrayList<Chapter> chapters; // book's chapter
public void addToId(String add)
{
name = add + " " + name;
for(int I = 0; I < chapters.size(); I++)
chapters.get(I).addToId(add);
}
public String getId() // returns the name of the Book
instance
{
return name;
}
ArrayList<Chapter> getChapters() // returns a reference to
the Chapter collection in the Book instance
{
return chapters;
}
public Book(String name) // constructor
{
this.name = name;
chapters = new ArrayList<Chapter>();
}
public void addChapter(Chapter c) // adds a Chapter instance
to the collection in the Book instance
{
c.addToId(name);
chapters.add(c);
}
public String toString() // returns a string containing all
the Verses in all the Chapters in the Book instance.
{
String str = name + "\n"; // book
for(int I = 0; I < chapters.size(); I++) // its chapters
str += chapters.get(I) + "\n";
return str;
}
}
package biblemodel;
import java.util.ArrayList;
public class Chapter
{
private String number; // number of this chapter
private ArrayList<Verse> verses; // verses of this chapter
// adds parents' ids to the chapter id
public void addToId(String add)
{
number = add + " " + number;
for(int I = 0; I < verses.size(); I++)
verses.get(I).addToId(add);
}
public ArrayList<Verse> getVerses() // returns a reference to
the Verse collection in the Chapter instance
{
return verses;
}
public String getId() // returns the book and chapter number
as a String
{
return number;
}
public void addVerse(Verse v) // adds a Verse instance to the
collection in the Chapter instance
{
v.addToId(number);
verses.add(v);
}
public Chapter(String number)
{
this.number = number;
verses = new ArrayList<Verse>();
}
public String toString() // returns a string containing all
the verses in the Chapter instance.
{
String str = number + "\n"; // the chapter itself
for(int I = 0; I < verses.size(); I++) // its verses
str += verses.get(I) + "\n";
return str;
}
}
package biblemodel;
import java.util.ArrayList;
public class Verse
{
private String id ; // parent's names and the verse's number
private String text; // verse's text
// adds parents' ids to the verse's id
public void addToId(String add)
{
id = add + " " + id;
}
public String getText() // returns the text of the verse
instance.
{
return text;
}
public String getId() // returns the book, chapter, and
verse number as a String.
{
return id;
}
public String toString() // returns the contents of the
instance in the format: “verse number : text”
{
return id + ": " + text;
}
public Verse(String id, String text) // constructor
{
this.id = id;
this.text = text;
}
}
import biblemodel.*;
class BibleTest
{
public static void main(String[] args)
{
// a verse
Verse verse = new Verse("1","In the beginning God created
the heavens and the earth.");
Chapter chapter = new Chapter("1"); // a chapter
chapter.addVerse(verse); // with that verse
Book book = new Book("Genesis"); // a book
book.addChapter(chapter); // with that chapter
Bible bible = new Bible("NIV"); // a bible
bible.addBook(book); // with that book
System.out.println(bible); // output using
Bible.toString()
}
}