Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

Best way to make my prog more OOP friendly

$
0
0
Hi Guys,

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;
		
		
	}
}



Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>