Generating classes to create objects
Imagine that we have to draw and calculate the perimeters and areas of three different rectangles. You will end up with three rectangles drawn with their widths and height values and their calculated perimeters and areas. It would be great to have a blueprint to simplify the process of drawing each rectangle with their different width and height values.
In object-oriented programming, a class is a template definition or blueprint from which objects are created. Classes are models that define the state and behavior of an object. After declaring a class that defines the state and behavior of a rectangle, we can use it to generate objects that represent the state and behavior of each real-world rectangle.
Note
Objects are also known as instances. For example, we can say each rectangle
object is an instance of the Rectangle
class.
The following picture shows two rectangle instances named rectangle1
and rectangle2
. These instances are drawn with their width and height values specified. We can use a Rectangle
class as a blueprint to generate the two different Rectangle
instances. Note that rectangle1
has the width and height values of 36
and 20
, and rectangle2
has the width and height values of 22
and 41
. Each instance has different values for their width and height. It is very important to understand the difference between a class and the objects or instances generated through its usage. The object-oriented programming features supported in Java 9 allow us to discover which blueprint we used to generate a specific object. We will use these features in many examples in the upcoming chapters. Thus, we can determine whether each object is an instance of the Rectangle
class or not.
The following picture shows two regular pentagon instances named pentagon1
and pentagon2
. These instances are drawn with their length of side values specified. We can use a RegularPentagon
class as a blueprint to generate the two different RegularPentagon
instances. Note that pentagon1
has the length of a side value of 20
, and pentagon2
has the length of a side value of 16
. Each instance has different values for its length of a side.
The following picture shows four ellipse instances named ellipse1
, ellipse2
, ellipse3
, and ellipse4
. These instances are drawn with their semimajor axis and semiminor axis values specified. We can use an Ellipse
class as a blueprint to generate the four different Ellipse
instances. Note that each ellipse has its own specific values for the semimajor and semiminor axes.
We recognized nine completely different real-world objects from the Web Service requirements, and therefore, we can generate the following nine classes to create the necessary objects:
Circle
Ellipse
EquilateralTriangle
Square
Rectangle
RegularPentagon
RegularHexagon
RegularOctagon
RegularDecagon
Tip
Note the usage of Pascal case for class names. Pascal case means that the first letter of each word that composes the name is capitalized, while the other letters are in lowercase. This is a coding convention in Java. For example, we use the EquilateralTriangle
name for the class that will be the blueprint that will allow us to generate multiple equilateral triangles.