Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Project: Tetrahedron with JUnit Tests - Part 2 Page 1 of 5 Deliverables Your project files should be submitted to Web-CAT by the due date

image text in transcribed

Project: Tetrahedron with JUnit Tests - Part 2 Page 1 of 5 Deliverables Your project files should be submitted to Web-CAT by the due date and time specified. Note that there is also an optional Skeleton Code assignment which will indicate level of coverage your tests have achieved (there is no late penalty since the skeleton code assignment is ungraded for this project). The files you submit to skeleton code assignment may be incomplete in the sense that method bodies have at least a return statement if applicable or they may be essentially completed files. In order to avoid a late penalty for the project, you must submit your completed code files to Web-CAT no later than 11:59 PM on the due date for the completed code assignment. If you are unable to submit via Web-CAT, you should e-mail your project Java files in a zip file to your TA before the deadline. Your grade will be determined, in part, by the tests that you pass or fail in your test file and by the level of coverage attained in your source file, as well as our usual correctness tests. Files to submit to the grading system: Tetrahedron.java, Tetrahedron Test.java . Specifications Overview: In this project, the two files developed in Part I are to be extended as follows: (1) Tetrahedron, which is a class representing a Tetrahedron object, will implement the Comparable interface and (2) Tetrahedron Test class, which is a JUnit test class, will be expanded from method coverage to condition coverage for Tetrahedron. The new items for Part 2 are underlined below for your convenience. Note that there is no requirement for a class with a main method in this project. You should create a new folder to hold the files for this project and add your files from Part 1 (Tetrahedron java file and TetrahedronTest.java). You should create a new jGRASP project for Part 2 and add Tetrahedron java file and Tetrahedron Test.java to the project, you should see the two files. in their respective categories - Source Files and Test Files. If TetrahedronTestjava appears in source File category, you should right-click on the file and select "Mark As Test" from the right-click menu. You will then be able to run the test file by clicking the JUnit run button on the Open Projects toolbar . Tetrahedron.java (new items for this class in Part 2 are underlined) Requirements: Create a Tetrahedron class that stores the label and edge, where edge is non- negative (>=0). The Tetrahedron class also includes methods to set and get each of these fields, as well as methods to calculate the height, surface area, and volume of a Tetrahedron object, and a method to provide a String value that describes a Tetrahedron object. The Tetrahedron class includes a one static field (or class variable) to track the number of Tetrahedron objects that have been created, as well appropriate static methods to access and reset this field. And finally, this class provides a method that JUnit will use to test Tetrahedron objects for equality as well as a method required by Checkstyle. In addition, Tetrahedron must implement the Comparable interface for objects of type Tetrahedron. Page 1 of 5 Project: Tetrahedron with JUnit Tests - Part 2 Page 2 of 5 A regular tetrahedron is a tetrahedron in which all four faces are equilateral triangles with edge length a. When lying on one face, the tetrahedron is a pyramid with heighth (Source: https://en.wikipedia.org/wiki/Tetrahedron) The variables are abbreviated as follows: h = a 3 a is edge length h is height A = 3 a A is surface area V is volume V = 6V2 Design: The Tetrahedron class implements the Comparable interface for objects of type Tetrahedron and has fields, a constructor, and methods as outlined below (last method is new) (1) Fields: Instance Variables - label of type String and edge of type double. Initialize the String to and the double variable to 0 in their respective declarations. These instance variables should be private so that they are not directly accessible from outside of the Tetrahedron class, and these should be the only instance variables (fields) in the class. Class Variable - count of type int should be private and static, and it should be initialized to zero. (2) Constructor: Your Tetrahedron class must contain a public constructor that accepts two parameters (see types of above) representing the label and edge length. Instead of assigning the parameters directly to the fields, the respective set method for each field (described below) should be called since they are checking the validity of the parameter. For example, instead of using the statement label = labelIn; use the statement set Label (labelIn): The constructor should increment the class variable count cach time a Tetrahedron is constructed. Below are examples of how the constructor could be used to create Tetrahedron objects. Note that although String and numeric literals are used for the actual parameters (or arguments) in these examples, variables of the required type could have been used instead of the literals. Tetrahedron examplel - new Tetrahedron ("Small Example", 0.5); Tetrahedron example2 new Tetrahedron" Medium Example ", 12.8); Tetrahedron example3 - new Tetrahedron ("Large Example", 97.36) Page 2 of 5 Project: Tetrahedron with JUnit Tests - Part 2 Page 3 of 5 (3) Methods: Usually a class provides methods to access and modify each of its instance variables (known as get and set methods) along with any other required methods. The methods for Tetrahedron, which should each be public, are described below. See the formulas in the figure above and the Code and Test section below for information on constructing these methods. o get Label: Accepts no parameters and returns a String representing the label ficld. set Label: Takes a String parameter and returns a boolean. If the String parameter is not null, then the trimmed" String is set to the label field and the method returns true. Otherwise, the method returns false and the label is not set. o getEdge: Accepts no parameters and returns a double representing the edge field. setEdge: Takes a double parameter and returns a boolean. If the double parameter is non-negative, then the parameter is set to the edge field and the method returns true. Otherwise, the method returns false and the edge field is not set. o height: Accepts no parameters and returns the double value for the height of the Tetrahedron. [Be sure to avoid integer division in your expression.) surfaceArea: Accepts no parameters and returns the double value for the total surface area of the Tetrahedron, volume: Accepts no parameters and returns the double value for the volume of the Tetrahedron. (Be sure to avoid integer division in your expression.] otoString: Returns a String containing the information about the Tetrahedron object formatted as shown below, including decimal formatting ("###0.0##") for the double values. Newline and tab escape sequences should be used to achieve the proper layout within the String but it should not begin or end with a newline. In addition to the field values (or corresponding "get" methods), the following methods should be used to compute appropriate values in the toString method: height(), surfaceArea(). and volume (). Each line should have no trailing spaces (e.g., there should be no spaces before a newline (n) character). The tostring value for examplel, example, and example3 respectively are shown below (the blank lines are not part of the toString values), O 0 Tetrahedron Small Example" with six edges of length 0.5 has: height - 0.408 units surface area - 0.433 square unita volume - 0.015 cubic units Tetrahedron Medium Example" with six edges of length 12.8 has: height - 10.451 units surface area - 283.779 square units volume - 247.152 cubic unita Tetrahedron "Large Example" with six edges of length 97.36 has: height - 79.494 units surface area - 16,418.057 square units volume - 108,761.565 cubie units Page 3 of 5 Project: Tetrahedron with JUnit Tests - Part 2 Page 4 of 5 O getCount: A static method that accepts no parameters and returns an int representing the static count field. o resetCount: A static method that returns nothing, accepts no parameters, and sets the static count field to zero. o equals: An instance method that accepts a parameter of type Object and returns false if the Object is a not a Tetrahedron; otherwise, when cast to a dron, it has the same field values as the Tetrahedron upon which the method was called, it returns true. Otherwise, it returns false. Note that this equals method with parameter type Object will be called by the JUnit Assert.assertEquals method when two Tetrahedron objects are checked for equality Below is a version you are free to use. public boolean equals(Object obi) ( if (!(oby Instanceof Tetrahedron)) return false; > else { Tetrahedron d - (Tetrahedron) obj; return (label.equals IgnoreCase(d.getLabel()) && Math.abs(edge - d.getEdge() <.000001> > hashCode(): Accepts no parameters and returns zero of type int. This method is required by Checkstyle if the equals method above is implemented. O compaxelor Accepts a parameter of type Tetrahedron and returns an int as follows.a negative value if this,volume) is less than the parameter's volumes a positive value if this.volume() is greater than the parameter's volume: zero if the two volumes are essentially equal. For a hint see the activity for this module Code and Test: As you implement the methods in your Tetrahedron class, you should compile it and then create test methods scribed below for the Tetrahedron Test class. Tetrahedron Test.java Requirements: Create a Tetrahedron Test class that contains a set of rest methods to test cach of the methods in Tetrahedron. The goal for Part 2 is method, statement, and condition coverage. Design: Typically, in each test method, you will need to create an instance of Tetrahedron, call the method you are testing, and then make an assertion about the expected result and the actual result (note that the actual result is commonly the result of invoking the method unless it has a void return type). You can think of a test method as simply formalizing or codifying what you could be doing in GRASP interactions to make sure a method is working correctly. That is, the sequence of statements that you would enter in interactions to test a method should be entered into a single test method. You should have sufficient test methods so that each method. statement, and condition in Tetrahedron are covered. Collectively, these test methods are a set of Page 4 of 5 Project: Tetrahedron with JUnit Tests - Part 2 Page 5 of 5 test cases that can be invoked with a single click to test all of the methods in your Tetrahedron class Code and Test: A good strategy would be to begin by writing test methods for those methods in Tetrahedron that you "know" are correct. By doing this, you will be able to concentrate on the getting the test methods correct. That is, if the test method fails, it is most likely due to a defect in the test method itself rather the Tetrahedron method being testing. As you become more familiar with the process of writing test methods, you will be better prepared to write the test methods as new methods are developed. Be sure to call the Tetrahedron toString method in one of your test cases so that the grading system will consider the tosin Project: Tetrahedron with JUnit Tests - Part 2 Page 1 of 5 Deliverables Your project files should be submitted to Web-CAT by the due date and time specified. Note that there is also an optional Skeleton Code assignment which will indicate level of coverage your tests have achieved (there is no late penalty since the skeleton code assignment is ungraded for this project). The files you submit to skeleton code assignment may be incomplete in the sense that method bodies have at least a return statement if applicable or they may be essentially completed files. In order to avoid a late penalty for the project, you must submit your completed code files to Web-CAT no later than 11:59 PM on the due date for the completed code assignment. If you are unable to submit via Web-CAT, you should e-mail your project Java files in a zip file to your TA before the deadline. Your grade will be determined, in part, by the tests that you pass or fail in your test file and by the level of coverage attained in your source file, as well as our usual correctness tests. Files to submit to the grading system: Tetrahedron.java, Tetrahedron Test.java . Specifications Overview: In this project, the two files developed in Part I are to be extended as follows: (1) Tetrahedron, which is a class representing a Tetrahedron object, will implement the Comparable interface and (2) Tetrahedron Test class, which is a JUnit test class, will be expanded from method coverage to condition coverage for Tetrahedron. The new items for Part 2 are underlined below for your convenience. Note that there is no requirement for a class with a main method in this project. You should create a new folder to hold the files for this project and add your files from Part 1 (Tetrahedron java file and TetrahedronTest.java). You should create a new jGRASP project for Part 2 and add Tetrahedron java file and Tetrahedron Test.java to the project, you should see the two files. in their respective categories - Source Files and Test Files. If TetrahedronTestjava appears in source File category, you should right-click on the file and select "Mark As Test" from the right-click menu. You will then be able to run the test file by clicking the JUnit run button on the Open Projects toolbar . Tetrahedron.java (new items for this class in Part 2 are underlined) Requirements: Create a Tetrahedron class that stores the label and edge, where edge is non- negative (>=0). The Tetrahedron class also includes methods to set and get each of these fields, as well as methods to calculate the height, surface area, and volume of a Tetrahedron object, and a method to provide a String value that describes a Tetrahedron object. The Tetrahedron class includes a one static field (or class variable) to track the number of Tetrahedron objects that have been created, as well appropriate static methods to access and reset this field. And finally, this class provides a method that JUnit will use to test Tetrahedron objects for equality as well as a method required by Checkstyle. In addition, Tetrahedron must implement the Comparable interface for objects of type Tetrahedron. Page 1 of 5 Project: Tetrahedron with JUnit Tests - Part 2 Page 2 of 5 A regular tetrahedron is a tetrahedron in which all four faces are equilateral triangles with edge length a. When lying on one face, the tetrahedron is a pyramid with heighth (Source: https://en.wikipedia.org/wiki/Tetrahedron) The variables are abbreviated as follows: h = a 3 a is edge length h is height A = 3 a A is surface area V is volume V = 6V2 Design: The Tetrahedron class implements the Comparable interface for objects of type Tetrahedron and has fields, a constructor, and methods as outlined below (last method is new) (1) Fields: Instance Variables - label of type String and edge of type double. Initialize the String to and the double variable to 0 in their respective declarations. These instance variables should be private so that they are not directly accessible from outside of the Tetrahedron class, and these should be the only instance variables (fields) in the class. Class Variable - count of type int should be private and static, and it should be initialized to zero. (2) Constructor: Your Tetrahedron class must contain a public constructor that accepts two parameters (see types of above) representing the label and edge length. Instead of assigning the parameters directly to the fields, the respective set method for each field (described below) should be called since they are checking the validity of the parameter. For example, instead of using the statement label = labelIn; use the statement set Label (labelIn): The constructor should increment the class variable count cach time a Tetrahedron is constructed. Below are examples of how the constructor could be used to create Tetrahedron objects. Note that although String and numeric literals are used for the actual parameters (or arguments) in these examples, variables of the required type could have been used instead of the literals. Tetrahedron examplel - new Tetrahedron ("Small Example", 0.5); Tetrahedron example2 new Tetrahedron" Medium Example ", 12.8); Tetrahedron example3 - new Tetrahedron ("Large Example", 97.36) Page 2 of 5 Project: Tetrahedron with JUnit Tests - Part 2 Page 3 of 5 (3) Methods: Usually a class provides methods to access and modify each of its instance variables (known as get and set methods) along with any other required methods. The methods for Tetrahedron, which should each be public, are described below. See the formulas in the figure above and the Code and Test section below for information on constructing these methods. o get Label: Accepts no parameters and returns a String representing the label ficld. set Label: Takes a String parameter and returns a boolean. If the String parameter is not null, then the trimmed" String is set to the label field and the method returns true. Otherwise, the method returns false and the label is not set. o getEdge: Accepts no parameters and returns a double representing the edge field. setEdge: Takes a double parameter and returns a boolean. If the double parameter is non-negative, then the parameter is set to the edge field and the method returns true. Otherwise, the method returns false and the edge field is not set. o height: Accepts no parameters and returns the double value for the height of the Tetrahedron. [Be sure to avoid integer division in your expression.) surfaceArea: Accepts no parameters and returns the double value for the total surface area of the Tetrahedron, volume: Accepts no parameters and returns the double value for the volume of the Tetrahedron. (Be sure to avoid integer division in your expression.] otoString: Returns a String containing the information about the Tetrahedron object formatted as shown below, including decimal formatting ("###0.0##") for the double values. Newline and tab escape sequences should be used to achieve the proper layout within the String but it should not begin or end with a newline. In addition to the field values (or corresponding "get" methods), the following methods should be used to compute appropriate values in the toString method: height(), surfaceArea(). and volume (). Each line should have no trailing spaces (e.g., there should be no spaces before a newline (n) character). The tostring value for examplel, example, and example3 respectively are shown below (the blank lines are not part of the toString values), O 0 Tetrahedron Small Example" with six edges of length 0.5 has: height - 0.408 units surface area - 0.433 square unita volume - 0.015 cubic units Tetrahedron Medium Example" with six edges of length 12.8 has: height - 10.451 units surface area - 283.779 square units volume - 247.152 cubic unita Tetrahedron "Large Example" with six edges of length 97.36 has: height - 79.494 units surface area - 16,418.057 square units volume - 108,761.565 cubie units Page 3 of 5 Project: Tetrahedron with JUnit Tests - Part 2 Page 4 of 5 O getCount: A static method that accepts no parameters and returns an int representing the static count field. o resetCount: A static method that returns nothing, accepts no parameters, and sets the static count field to zero. o equals: An instance method that accepts a parameter of type Object and returns false if the Object is a not a Tetrahedron; otherwise, when cast to a dron, it has the same field values as the Tetrahedron upon which the method was called, it returns true. Otherwise, it returns false. Note that this equals method with parameter type Object will be called by the JUnit Assert.assertEquals method when two Tetrahedron objects are checked for equality Below is a version you are free to use. public boolean equals(Object obi) ( if (!(oby Instanceof Tetrahedron)) return false; > else { Tetrahedron d - (Tetrahedron) obj; return (label.equals IgnoreCase(d.getLabel()) && Math.abs(edge - d.getEdge() <.000001> > hashCode(): Accepts no parameters and returns zero of type int. This method is required by Checkstyle if the equals method above is implemented. O compaxelor Accepts a parameter of type Tetrahedron and returns an int as follows.a negative value if this,volume) is less than the parameter's volumes a positive value if this.volume() is greater than the parameter's volume: zero if the two volumes are essentially equal. For a hint see the activity for this module Code and Test: As you implement the methods in your Tetrahedron class, you should compile it and then create test methods scribed below for the Tetrahedron Test class. Tetrahedron Test.java Requirements: Create a Tetrahedron Test class that contains a set of rest methods to test cach of the methods in Tetrahedron. The goal for Part 2 is method, statement, and condition coverage. Design: Typically, in each test method, you will need to create an instance of Tetrahedron, call the method you are testing, and then make an assertion about the expected result and the actual result (note that the actual result is commonly the result of invoking the method unless it has a void return type). You can think of a test method as simply formalizing or codifying what you could be doing in GRASP interactions to make sure a method is working correctly. That is, the sequence of statements that you would enter in interactions to test a method should be entered into a single test method. You should have sufficient test methods so that each method. statement, and condition in Tetrahedron are covered. Collectively, these test methods are a set of Page 4 of 5 Project: Tetrahedron with JUnit Tests - Part 2 Page 5 of 5 test cases that can be invoked with a single click to test all of the methods in your Tetrahedron class Code and Test: A good strategy would be to begin by writing test methods for those methods in Tetrahedron that you "know" are correct. By doing this, you will be able to concentrate on the getting the test methods correct. That is, if the test method fails, it is most likely due to a defect in the test method itself rather the Tetrahedron method being testing. As you become more familiar with the process of writing test methods, you will be better prepared to write the test methods as new methods are developed. Be sure to call the Tetrahedron toString method in one of your test cases so that the grading system will consider the tosin

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Making Databases Work The Pragmatic Wisdom Of Michael Stonebraker

Authors: Michael L. Brodie

1st Edition

1947487167, 978-1947487161

More Books

Students also viewed these Databases questions

Question

Evaluate Steven Pinker's criticism of Sapir-Whorf.

Answered: 1 week ago