BIG JAVA: LATE OBJECTS
BIG JAVA: LATE OBJECTS
2nd Edition
ISBN: 9781119626220
Author: Horstmann
Publisher: WILEY
Question
Book Icon
Chapter 24, 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
Students have asked these similar questions
I would like to get help to resolve the following case
Last Chance Securities The IT director opened the department staff meeting today by saying, "I've got some good news and some bad news. The good news is that management approved the payroll system project this morning. The new system will reduce clerical time and errors, improve morale in the payroll department, and avoid possible fines and penalties for noncompliance. The bad news is that the system must be installed by January 1st in order to meet new federal reporting rules, all expenses from now on must be approved in advance, the system should have a modular design if possible, and the vice president of finance would like to announce the new system in a year-end report if it is ready by mid-December." Tasks 1. Why is it important to define the project scope? How would you define the scope of the payroll project in this case? 2. Review each constraint and identify its characteristics: present versus future, internal versus exter- nal, and mandatory versus desirable. 3. What…
2. Signed Integers Unsigned binary numbers work for natural numbers, but many calculations use negative numbers as well. To deal with this, a number of different methods have been used to represent signed numbers, but we will focus on two's complement, as it is the standard solution for representing signed integers. 2.1 Two's complement • Most significant bit has a negative value, all others are positive. So, the value of an n-digit -2 two's complement number can be written as: Σ2 2¹ di 2n-1 dn • Otherwise exactly the same as unsigned integers. i=0 - • A neat trick for flipping the sign of a two's complement number: flip all the bits (0 becomes 1, or 1 becomes 0) and then add 1 to the least significant bit. • Addition is exactly the same as with an unsigned number. 2.2 Exercises For questions 1-3, answer each one for the case of a two's complement number and an unsigned number, indicating if it cannot be answered with a specific representation. 1. (15 pts) What is the largest integer…
Knowledge Booster
Background pattern image
Similar questions
SEE MORE QUESTIONS
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