Implement a shape hierarchy. you must have your superclass shape and 2 subclasses two-dimensional shape and three-dimensional shape. Under two-dimensional shape, you have other subclasses, circle, square, and triangle. Under the three-dimensional shape you have the sphere, cube, and tetrahedron. Each two-dimensional shape should contain a method getArea to calculate the area of the two-dimensional shape. Each three-dimensional shape should have a method getArea and getVolume to calculate the surface area and volume, respectively, of the three-dimensional shape. Create a program that uses an array of shape references to objects of each concrete class in the hierarchy. The program should print a text description of the object to which each array element refers. Also, in the loop that processes all the shapes in the array, determine whether each shape is a two-dimensional shape or a three-dimensional shape. If a shape is a two-dimensional shape, display it's area. If a shape is a three-dimensional shape, display its area and volume.

Can you please help me with this problem? I'm finding it hard to figure out what to do. Please help I'm still just a beginner. Thank you!

This is part of the Shape Hierarchy so it should help you get started...

``````public class Shape
{

}

public class Shape2d extends Shape
{

}

public class Shape3d extends Shape
{

}``````

Thank you! but how about the 2d-shapes circle, square and triangle also the 3-shapes sphere, cube and tetrahedron? Do i have to put them in classes??? where should i put them? I'm still confused. Help me please... Thank you!!!

You should search the web for some more information on polymorphism to help you. The other 2d and 3d shapes are subclasses of the Shape superclass, but you should be able to figure out how to implement them with my above code. The code above can be stated as:

Shape is a superclass
Shape2d is a subclass of Shape
Shape3d is a subclass of Shape

Whenever you see the word subclass it means that you are going to have to extend the functionality of a superclass. Hence the word "extends."

Does any of this make sense to you?

Oh Yeah! got it! I'll try my best to figure it out. Anyway, thanks for the tip!

Its easiest if you break things down line by line. For example...

"You must have your superclass shape and 2 subclasses two-dimensional shape and three-dimensional shape."

``````//superclass shape
public class Shape
{
}
//subclass 2d shape
public class Shape2d extends Shape
{
}
//subclass 3d shape
public class Shape3d extends Shape
{
}``````

"Under two-dimensional shape, you have other subclasses, circle, square, and triangle."

so now circle, square, and triangle are all subclasses of 2d shape so

``````public class Circle extends Shape2d
{
}``````

etc..

Understand it now?

ahh! I see!!! i understand it now! So all of the 2d shapes extends shape2d and all 3d shapes extends shape3d?? Am i right??? Thank you very much! You're good!!!

Yes, that is correct.

Ok Thank you! I'll try figuring out whats next on this...hehe

I still don"t get it! can somebody please help again??? I don't know what to put inside the classes!!! please help me! tNx!!!

Your goal is to define a datatype Shape that can answer the question "Get Area?". You need to define the method getArea in each of the subclasses and declare the abstract method in the base class Shape. By declaring the abstract method in Shape, you're saying to the rest of the program that "a Shape is something that can answer the question 'Get Area'." Anything that is a Shape must be able to answer that question. Therefore, you need to define the method in your subclasses.

Also, you need to define the shape-specific information that each type of shape would like to know about itself.

Which part are you stuck on?

I don't know. I don't know where to start at the first place. It's kind of new to me because our teacher haven't discussed it yet to us. Can you help me???

Start by creating all the classes like I showed in my previous posts. Next add all the methods to the classes. Next implement all the methods.

Like this?

public class Shape
{

}

public class 2dshape extends Shape
{

}

public class Circle extends 2dshape
{

}

public class Square extends 2dshape
{

}

public class Triangle extends 2dshape
{

}

public class 3dshape extends Shape
{

}

public class Sphere extends 3dshape
{

}

public class Cube extends 3dshape
{

}

public class Tetrahedron extends 3dshape
{

}

So what's next?

Thats a start but Java doesn't allow you to start a class with a number so thats why I named mine Shape2d and Shape3d, so just rename them.

Now start adding all the constructors and methods to the classes.

OK!

Can somebody please help out again? I really don't know what to do.