Im totally new to Java been leaning for last couple weeks. Im getting there but obviously loads to learn. I'm hoping this forum will be the place that helps me to grow.

So to the task at hand. Below is a simple program that works out the area of different shapes. I want to use OOP, i know i could seperate the shapes out, but the formulas are all differnt so wouldn inherate from just a general shape class would they?

Some people have mention interfaces or abstract classes, im still reading up on this. But how would you make this program more OOP friendly?

Thanks in advance.

Craig.

Code below.

Main class

package areaprog; import java.util.Scanner; import java.util.InputMismatchException; public class Mainprog { public static void main (String [] args){ //Area Menu Selection System.out.println("What shape do you need to know the area of?\n" + "1: Square?\n" + "2: Rectangle?\n" + "3: Triangle?\n" + "4: Circle? \n" + "5: Exit\n" ); //User input for menu Scanner reader = new Scanner(System.in); System.out.println("Number: "); //Menu syntax checking while (!reader.hasNextDouble()) { System.out.println("Thats not a number you tool.\n"); System.out.println("Now pick again\n" + "1: Square?\n" + "2: Rectangle?\n" + "3: Triangle?\n" + "4: Circle? \n" + "5: Exit\n" ); reader.next(); //ask for next token } double input = reader.nextDouble(); reader.nextLine(); //Depending on user selection, depends on what method is called using switch. Scanner scan = new Scanner(System.in); //Square selection and InputMismatch Exception try { if (input == 1){ System.out.println("What is a length of 1 side of the Square?\n"); double s1 = scan.nextDouble(); double SqAns = AreaCalculator.getSquareArea(s1); System.out.println("The area of you square is: " + SqAns); } } catch (InputMismatchException e) { System.out.println("Why are you trying to be clever? use an interger"); } //Rectangle selection if (input == 2){ System.out.println("What is the width of your rectangle?.\n"); double r1 = scan.nextDouble(); System.out.println("What is the height of your rectangle?\n"); double r2 = scan.nextDouble(); double RecAns = AreaCalculator.getRectArea(r1, r2); System.out.println("The area of your rectangle is: " + RecAns); } //Triangle selection if (input == 3){ System.out.println("What is the base length of the triangle?."); double t1 = scan.nextDouble(); System.out.println("What is the height of your triangle?"); double t2 = scan.nextDouble(); double TriAns = AreaCalculator.getTriArea(t1, t2); System.out.println("The area of your triangle is " + TriAns); } //Circle selection if (input == 4){ System.out.println("What is the radius of your circle?."); double c1 = scan.nextDouble(); double CircAns = AreaCalculator.getCircleArea(c1); System.out.println("The area of your circle is " + CircAns); } //Exit application if (input == 5){ System.out.println("Goodbye."); } } }

Formula code

package areaprog; public class AreaCalculator { public static double getRectArea(double width, double height) { double aValue = width * height; return aValue; } public static double getCircleArea(double radius){ double PI = Math.PI; double aValue = PI * Math.pow(radius, 2); return aValue; } public static double getSquareArea(double side) { double aValue = Math.pow(side, 2); return aValue; } public static double getTriArea(double base , double height) { double aValue = (base/2)* height; return aValue; } }