Reference no: EM132845501
Project Overview: In this project, you will use Smalltalk to complete the same shape project done previously. You will implement one base class (Shape) and four (4) derived classes (Sphere, Cylinder, Cone, and Cuboid). They need to be saved into five different files, shape.st, sphere.st, cylinder.st, cone.st, and cuboid.st respectively.
For this project, you also need to write the main.st file that will read the shaper from a file with its filename furnished as a command line argument. You can download a sample shapes file named shapes.dat, as shown below. Each shape occupies one line in the file and two attributes of a shape are separated by one or more spaces. The number of shapes in the file is unknown in advance.
Cube#1 cuboid 1 1 1
Cube#2 cuboid 2 2 2
Cone#1 cone 1 1
Cyl#1 cylinder 1 1
Box#1 cuboid 2 4 6
Box#2 cuboid 10.5 21 10.5
UnitSphere sphere 1
LargeSphere sphere 100
Cone#2 cone 1 2
Cyl#2 cylinder 1 2
The user can execute your program using the following command, assuming shapes.dat is the shapes file. gst shape.st sphere.st cylinder.st cone.st cuboid.st -f main.st shapes.dat
If the number of arguments is incorrect, please print out a usage message and quit. If the file can't be opened for reading, print out an error message to indicate it and quit. If the file can be opened, you can assume it follows the correct format and it contains correct attributes.
The user can then issue one of the following queries: count, countN, print, printN, min, minN, max, maxN, total, totalN, avg, avgN. Here N is a positive integer to indicate the number of test conditions to be imposed with the query. Without N, the query will be unconditional (performed on all the shapes). If N appears, the user needs to enter N test conditions one by one, and the query will be performed on the shapes that satisfy all the N test conditions.
Each test condition will be in the <name> <op> <value> format. The <name> string can be "type", "area" or "volume" (without the quotation marks). The <op> string can be one of the six relational operators ("==", "!=", ">=", "<=", ">", and "<"). The <value> string is the reference value in the string format to be compared with. For example, "type" ">" "cyl", "area" "<=" "1000", and "volume" ">" "100.5" are three examples of test conditions.
The user can keep issuing the queries until the user enters the quit command. Please see the sample executions at the end for details. You can assume the user will enter the queries and the test conditions correctly.
It is not required, but it might be a good idea to define another class in main.st to represent a list of shapes read from the file and the class can respond to the messages that correspond different quarries issued by the user (i.e. count print min max total avg).
What You Need To Do
• Create a directory named project6 for this assignment. Download shapes.dat to the project6
directory.
• Create five classes to be saved in shape.st, sphere.st, cylinder.st, cone.st, and
cuboid.st respectively.
• Create another file named main.st to read the shapes file, and to accept and answer the queries issued by the user.
• When you are ready to submit your project, compress your project6 directory into a single (compressed) zip file, project6.zip.
• Once you have a compressed zip file named project6.zip, submit that zip file.
Attachment:- ven details.rar
Attachment:- shapes.rar