2013-10-27 5 views
0

Класс содержит:(Класс Triangle) Дизайн класса под названием треугольник, который простирается GeometricObject

  • Три двойных поля данных с именем side1, side2 и side3 со значениями по умолчанию 1.0 для обозначения трех сторон треугольника

  • Конструктор no-arg, который создает треугольник с указанием сторона1, сторона2, и сторона3.

  • Методы доступа для всех трех полей данных.

  • Метод с именем getArea(), который возвращает область, если этот треугольник.

  • Метод с именем getPerimeter(), который возвращает периметр этого треугольника.

* Способ по имени ToString(), который возвращает строку описания для треугольника.

Для формулы для вычисления площади треугольника, см ProgrammingExercise 2,15 (в предисловии к Java программирование 9-е издание) The ToString() метод реализуется следующим образом:

возвращение "Треугольник: side1 = "+ side1 +" side2 = "+ side2 +" side3 "+ side3;

Нарисуйте UML диаграмм для классов треугольник и GeometricObject и реализовать классы. Напишите тестовую программу, которая предложит пользователю ввести три стороны треугольника, цвет и логическое значение, чтобы указать, что треугольник заполнен. Программа должна создать треугольник объект с этими сторонами и установить цвет и заполнены свойства с использованием ввода. Программа должна отображать область, периметр, цвет и истину или ложь, чтобы указать, что она заполнена или нет.


Часть упражнения, с которой у меня возникают проблемы, - это тестовая программа.

Если бы вы могли помочь мне, указав мне, как я могу сделать Треугольник со входа, я был бы очень благодарен.

код у меня есть на данный момент это:

GeometricObject

public class GeometricObject { 
    private String color = " white "; 
    private boolean filled; 
    private java.util.Date dateCreated; 

    public GeometricObject() { 
     dateCreated = new java.util.Date(); 
    } 

    public GeometricObject(String color, boolean filled) { 
     dateCreated = new java.util.Date(); 
     this.color = color; 
     this.filled = filled; 
    } 

    public String getColor() { 
     return color; 
    } 

    public void setColor(String color) { 
     this.color = color; 
    } 

    public boolean isFilled() { 
     return filled; 
    } 

    public void setFilled(boolean filled) { 
     this.filled = filled; 
    } 

    public java.util.Date getDateCreated() { 
     return dateCreated; 
    } 

    public String toString() { 
     return "Created on " + dateCreated + "\n color: " + color + " and filled ";     
    } 
} 

Программа Triangle

public class Triangle extends GeometricObject { 
    private double side1 = 1.0; 
    private double side2 = 1.0; 
    private double side3 = 1.0; 

    public Triangle() { 
    } 

    public Triangle(double side1, double side2, double side3) { 
     this.side1 = side1; 
     this.side2 = side2; 
     this.side3 = side3; 
    } 

    public double setSide1() { 
     return side1; 
    } 

    public double setSide2() { 
     return side2; 
    } 

    public double setSide3() { 
     return side3; 
    } 

    public void setSide1(double side1) { 
     this.side1 = side1; 
    } 

    public void setSide2(double side2) { 
     this.side2 = side2; 
    } 

    public void setSide3(double side3) { 
     this.side3 = side2; 
    } 

    public double getArea() { 
     return (side1 + side2 + side3)/2; 
    } 

    public double getPerimeter() { 
     return side1 + side2 + side3; 
    } 

    public String toString() { 
    return " Triangle: Side 1 = " + side1 + " Side 2 = " + side2 
      + " Side 3 = " + side3; 
    } 
} 

Testprogram.

import java.util.Scanner; 

public class TestTriangle { 
    private double side1 = 1.0; 
    private double side2 = 1.0; 
    private double side3 = 1.0; 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 

     System.out.println("Enter three sides of the Triangle"); 
     double side1 = input.nextDouble(); 
     double side2 = input.nextDouble(); 
     double side3 = input.nextDouble(); 

     System.out.println("Enter the color of the Triangle"); 
     String color = input.next(); 

     System.out.println(" Is the Triangle filled? Reply with 'True' or 'False' "); 

     String filled = input.next(); 
    } 
    { 
     new Triangle(side1, side2, side3); 
     //How do i get the information into theTriangle? 

     System.out.println("The Triangle Sides are \n side 1: " + side1 + "\n Side 2: " + side2 + "\n Side 3: " + side3); 
     System.out.println("The Triangle's Area is " + (side1 + side2 + side3)/2); 
     System.out.println("The Triangle's Perimeter is " 
          + (side1 + side2 + side3)); 
     System.out.println("The Triangle's Color is " + //what goes here?); 
     System.out.println("Is the Triangle filled? " + //what goes here?); 

    } 
} 
+0

'новый треугольник (side1, side2, side3)'? – BartoszKP

+0

Хорошо, спасибо вам за быстрый ответ. Я добавил код, который вы предложили, теперь я ближе к своей цели! – Khilmarsen

ответ

1

Вам нужно создать новый Triangle объект, как это, так что у вас есть ссылка

Trangle triangle = new Triangle(side1, side2, side3); 

    //  ^^^^^^ This is the most important thing you're missing. You need a reference 
    //   point for your object. That's the only way you can access it's 
    //   properties.  

Кроме того, необходимо установить его filled и color свойства

triangle.setFilled(filled); 
triangle.setColor(color); 

Тогда , вы можете вызвать его методы следующим образом:

System.out.println("The Triangle Sides are \n side 1: " 
     + triangle.getSide1() + "\n Side 2: " + triangle.getSide2() 
     + "\n Side 3: " + triangle.getSide3()); 

System.out.println("The Triangle's Area is " + triangle.getArea()); 

System.out.println("The Triangle's Perimeter is " + triangle.getPerimeter(); 

System.out.println("The Triangle's Color is " + triangle.getColor()); 
System.out.println("Is the Triangle filled? " + triangle.isFilled()); 

Вы в состоянии получить доступ к GeometricObject «s isFilled(), setFilled(), getColor() и setColor() потому Triangle является GeometricObject (extends), поэтому он наследует все его методы.

Кстати, это не то, как вычислить площадь треугольника:

public double getArea() { 
    return (side1 + side2 + side3)/2; // This is so wrong 
} 

Заканчивать этот link для правильной формулы

Edit: С другой проблемы с кодом

public double setSide1() { 
    return side1; 
} 

public double setSide2() { 
    return side2; 
} 

public double setSide3() { 
    return side3; 
} 

/**** Should Be ******/ 

public double getSide1() { 
    return side1; 
} 

public double getSide2() { 
    return side2; 
} 

public double getSide3() { 
    return side3; 
} 

Редакция: Треугольник Формула

public double getArea() { 
    int p = getPerimeter()/2 
    return Math.sqrt(p * ((p - side1) * (p - side2) * (p - side3)); 
} 
+0

Привет, спасибо за ответ. Как цвет, так и заполненный дают мне ошибки. 'Треугольник треугольника = новый треугольник (side1, side2, side3); \t \t triangle.setFilled (заполнено); \t \t triangle.setColor (цвет); ' Также весь треугольник.getSide()) ' в' System.out.println («Треугольные стороны: \ n сторона 1:» + треугольник.getSide1() + "\ n Сторона 2:" + треугольник.getSide2() + "\ n Side 3: "+ triangle.getSide3()) ' – Khilmarsen

+0

Кроме того, могу ли я использовать' getColor() ',' setColor() ',' isFilled() ',' setFilled() 'из' GeometricObject', когда мне нужно сделать треугольник на основе ввода? – Khilmarsen

+0

Хорошо, ошибки, которые я получаю сейчас: _these_: ** В этих строках ** 'System.out.println (« Стороны треугольника: \ n сторона 1: »+ треугольник.getSide1() +" \ n Сторона 2: "+ triangle.getSide2() + "\ п Сторона 3:" + triangle.getSide3());' ** - метод getSide1() не определено для типа \t треугольник - метод getSide2 () не определено для типа \t Треугольник Метод getSide3() не определен для типа \t Triangle ** – Khilmarsen

0

GeometricObject

package geometricobject; 
import java.util.Scanner; 

/** 
* 
* @author Kirubel 
*/ 

abstract class GeometricObject 
{ 

private String color = "white"; 
private boolean filled; 
private java.util.Date dateCreated; 
/** Construct a default geometric object */ 
protected GeometricObject() 
{ 


} 

/** Construct a geometric object with color and filled value */ 
protected GeometricObject(String color, boolean filled) 
{ 
    dateCreated = new java.util.Date(); 
    this.color = color; 
    this.filled = filled; 
} 

/** Return color */ 
public String getColor() 
{ 
    return color; 
} 

/** Set a new color */ 
public void setColor(String color) 
{ 
    this.color = color; 
} 

/** Return filled. Since filled is boolean , 
* the get method is named isFilled */ 
public boolean isFilled() 
{ 
    return filled; 
} 

/** Set a new filled */ 
public void setFilled(boolean filled) 
{ 
    this.filled = filled; 
} 

/** Get dateCreated */ 
public java.util.Date getDateCreated() 
{ 
    return dateCreated; 
} 

@Override 
public String toString() { 
    return "created on " + dateCreated + "\ncolor: " + color + 
      " and filled: " + filled; 
} 

/** Abstract method getArea */ 
public abstract double getArea(); 

/** Abstract method getPerimeter */ 
public abstract double getPerimeter(); 

/** 
* @param args the command line arguments 
*/ 

} 

Треугольник

class Triangle extends GeometricObject 
{ 

public double side1; 
public double side2; 
public double side3; 
public Triangle() //default constructor 
{ 
    side1=1.0; 
    side2=1.0; 
    side3=1.0; 
} 

public Triangle(double side1,double side2,double side3) //peremetrised constructor 
{ 
    this.side1=side1; 
    this.side2=side2; 
    this.side3=side3; 
} 
@Override 
public double getPerimeter() //function for getting peremeter for triangle 
{ 
    return(side1+side2+side3) ; 

} 



@Override 
// function for getting area of triangle 
public double getArea() 
{ 
    double area,s; 
    s=side1+side2+side3; 
    area = Math.sqrt(s * (s- side1) * (s - side2) * (s - side3)); 
    return(area); 

} 
@Override 
public String toString()//to print the data 
{ 
    String s; 
    s="Triangle:side1 "+ side1 +" side2 " + side2 + " side3 "+side3; 
    return(s); 
} 

private String getSide1() { 
    // TODO Auto-generated method stub 
    return null; 
} 

private String getPerimeter(double d) { 
    // TODO Auto-generated method stub 
    return null; 
} 

private String getPerimeter(String string) { 
    // TODO Auto-generated method stub 
    return null; 
} 

private String getSide3() { 
    // TODO Auto-generated method stub 
    return null; 
} 

private String getSide2() { 
    // TODO Auto-generated method stub 
    return null; 
} 


public static void main(String args[]) 
{ 

    Scanner input = new Scanner(System.in); 

    System.out.println("Enter three sides of the Triangle"); 
    double side1 = input.nextDouble(); 
    double side2 = input.nextDouble(); 
    double side3 = input.nextDouble(); 

    System.out.println("Enter the color of the Triangle"); 
    String color = input.next(); 

    System.out.println(" Is the Triangle filled? Reply with 'True' or 'False' "); 

    String filled = input.next(); 
} 


{ 
    Triangle triangle = new Triangle(side1, side2, side3); 
    triangle.setFilled(isFilled()); 
    triangle.setColor(getColor()); 

    // Display 
    System.out.println("The Triangle Sides are \n side 1: " 
      + triangle.getSide1() + "\n Side 2: " + triangle.getSide2() 
      + "\n Side 3: " + triangle.getSide3()); 

    System.out.println("The Triangle's Area is " + triangle.getArea()); 
    System.out.println("The Triangle's Perimeter is " + triangle.getPerimeter()); 
    System.out.println("The Triangle's Color is " + triangle.getColor()); 
    System.out.println("Is the Triangle filled? " + triangle.isFilled()); 
} 
} 
+0

после получения ввода от пользователя, он не отображает вход или ответ. не Образец Run # 1: Введите сторону 1 треугольника: 13 Введите сторону 2 треугольника: 14 Введите сторону 3 треугольника: 15 Введите цвет треугольника: красный Введите ли заполнен треугольник (да/нет): да Площадь: 84,0 Периметр: 42,0 Цвет: красный Заполненные ?: правда Sample Run # 2: Введите сторону 1 треугольника: 9 Введите сторону 2 треугольника: 40 Введите сторону 3 треугольника: 41 Введите цвет треугольника: оранжевый Укажите, является ли треугольник fil (да/нет): нет Площадь: 180,0 Периметр: 90,0 Цвет: оранжевый Заполненный ?: false – kiru

Смежные вопросы