Big Java, Binder Ready Version: Early Objects
Big Java, Binder Ready Version: Early Objects
6th Edition
ISBN: 9781119056447
Author: Cay S. Horstmann
Publisher: WILEY
Question
Book Icon
Chapter 25, Problem 4PP
Program Plan Intro

Invoice Builder

Program plan:

Filename: “LineItem.java”

This program file is used to define a class “LineItem”. In the code,

  • Define a class “LineItem”.
    • Declare the class members “quantity” and “theProduct”.
    • Define the constructor “LineItem()”.
      • Initialize “quantity”.
      • Initialize “theProduct”.
    • Define a method “getTotalPrice()”,
      • Return the price.
    • Define a method “format()”,
      • Return the value in string format
    • Define a method “getQuantity()”,
      • Return the value of “quantity”.
    • Define a method “getProduct()”,
      • Return the value of “theProduct”.

Filename: “Product.java”

This program file is used to define a class “Product”. In the code,

  • Define a class “Product”.
    • Declare the class members “description” and “price”.
    • Define the constructor “Product()”.
      • Initialize “description”.
      • Initialize “price”.
    • Define a method “getDescription()”,
      • Return the “description”.
    • Define a method “getPrice()”,
      • Return the “price”.

Filename: “Address.java”

This program file is used to define a class “Address”. In the code,

  • Define a class “Address”.
    • Declare the class members “name”, “street”, “city”, “state” and “zip”.
    • Define the constructor “Address()”.
      • Initialize “name”.
      • Initialize “street”.
      • Initialize “city”.
      • Initialize “state”.
      • Initialize “zip”.
    • Define a method “format()”,
      • Return the value in string format
    • Define a method “getName()”,
      • Return the value of “name”.
    • Define a method “getStreet()”,
      • Return the value of “street”.
    • Define a method “getCity()”,
      • Return the value of “city”.
    • Define a method “getState()”,
      • Return the value of “state”.
    • Define a method “getZip()”,
      • Return the value of “zip”.

Filename: “Invoice.java”

This program file is used to define a class “Invoice”. In the code,

  • Define a class “Invoice”.
    • Declare the class members “billingAddress” and “items”.
    • Define the constructor “Invoice()”.
      • Initialize “billingAddress”.
      • Initialize “items”.
    • Define a method “add()”,
      • Define the object of “LineItem” called “anItem”.
      • Add item using “add()” method.
    • Define a method “getBillingAddress()”,
      • Return the value of “billingAddress”.
    • Define a method “getItems()”,
      • Return the value of “items”.
    • Define a method “format()”,
      • Declare a string variable “r” and set its value.
      • Iterate a “for” loop,
        • set the value of “r”.
          • Set the value of “r” to a string format.
          • Return the value of “r”.
    • Define a method “getAmountDue()”,
      • Declare a variable “amountDue”.
      • Iterate a “for” loop,
        • Set the value of “amountDue”.
          • Return the value of “amountDue”.

Filename: “InvoiceBuilder.java”

This program file is used to define a class “InvoiceBuilder”. In the code,

  • Define a class “InvoiceBuilder”.
    • Declare the class members “builder” and “doc”.
    • Define the constructor “InvoiceBuilder()”.
      • Create an object “factory” of class “DocumentBuilderFactory”.
      • Set “builder”.
      • Initialize “items”.
    • Define a method “build()”,
      • Set “doc”.
      • Create an object “root” of “Element”.
      • Add “root” to “doc”.
      • Return the “doc”.
    • Define a method “createInvoice()”,
      • Create an element “invoiceElement” for invoice.
      • Create an element “addressElement”.
      • Create an element “itemsElement”.
      • Append “addressElement” to “invoiceElement”.
      • Append “itemsElement” to “invoiceElement”.
    • Define a method “createInvoice()”,
      • Create an element “addressElement” for address.
      • Create a text node “nameText”.
      • Create an element “nameElement” for name.
      • Append “nameText” to “nameElement”.
      • Create a text node “streetText”.
      • Create an element “streetElement” for street.
      • Append “streetText” to “streetElement”.
      • Create a text node “cityText”.
      • Create an element “cityElement” for city.
      • Append “cityText” to “cityElement”.
      • Create a text node “stateText”.
      • Create an element “stateElement” for state.
      • Append “stateText” to “stateElement”.
      • Create a text node “zipText”.
      • Create an element “zipElement” for zip.
      • Append “zipText” to “zipElement”.
      • Append “nameElement” to “addressElement”.
      • Append “streetElement” to “addressElement”.
      • Append “cityElement” to “addressElement”.
      • Append “stateElement” to “addressElement”.
      • Append “zipElement” to “addressElement”.
      • Return the value of “addressElement”.
    • Define a method “createItemList()”,
      • Create an element “itemsElement” for items.
      • Iterate a “for” loop,
        • Create an object “itemElement”.
        • Append “itemElement” to “itemsElement”.
          • Return the value of “itemsElement”.
    • Define a method “createItem()”,
      • Create an element “itemElement” for item.
      • Create an element “productElement”.
      • Create a text node “quantityText”.
      • Create an element “quantityElement”.
      • Append “quantityElement” to “quantityText”.
      • Append “itemElement” to “productElement”.
      • Append “itemElement” to “quantityElement”.
    • Define a method “createProduct()”,
      • Create a text node “descriptionText”.
      • Create a text node “priceText”.
      • Create an element “descriptionElement” for description.
      • Create an element “priceElement” for price.
      • Append “descriptionText” to “descriptionElement”.
      • Append “priceText” to “priceElement”.
      • Create an element “productElement” for product.
      • Append “descriptionElement” to “productElement”.
      • Append “priceElement” to “productElement”.
      • Return “productElement”.

Filename: “InvoiceBuilderDemo.java”

This program file is used to define a class “InvoiceBuilderDemo”. In the code,

  • Import the required packages.
  • Define a class “InvoiceBuilderDemo”.
    • Define the method “main()”.
      • Define the object “samsAddress” of class “Address”.
      • Define the object “samsInvoice” of class “Invoice”.
      • Add the products using “add()” method.
      • Define the object “builder” of class “InvoiceBuilder”.
      • Define the DOM elements.
      • Define a variable “out”.
      • Print the variable “out”.

Blurred answer
Knowledge Booster
Background pattern image
Recommended textbooks for you
Text book image
Database System Concepts
Computer Science
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:McGraw-Hill Education
Text book image
Starting Out with Python (4th Edition)
Computer Science
ISBN:9780134444321
Author:Tony Gaddis
Publisher:PEARSON
Text book image
Digital Fundamentals (11th Edition)
Computer Science
ISBN:9780132737968
Author:Thomas L. Floyd
Publisher:PEARSON
Text book image
C How to Program (8th Edition)
Computer Science
ISBN:9780133976892
Author:Paul J. Deitel, Harvey Deitel
Publisher:PEARSON
Text book image
Database Systems: Design, Implementation, & Manag...
Computer Science
ISBN:9781337627900
Author:Carlos Coronel, Steven Morris
Publisher:Cengage Learning
Text book image
Programmable Logic Controllers
Computer Science
ISBN:9780073373843
Author:Frank D. Petruzella
Publisher:McGraw-Hill Education