(La classe Triangle) Concevez une classe nommée Triangle qui étend GeometricObject


La classe contient:

  • Trois double champs de données nommée la face 1, side2, et side3, avec les valeurs par défaut 1.0 pour désigner les trois côtés du triangle

  • Un no-arg constructeur qui crée un triangle avec spécifiée la face 1, side2,et side3.

  • Les méthodes d'accesseur pour les trois champs de données.

  • Une méthode nommée getArea() qui renvoie la zone si ce triangle.

  • Une méthode nommée getPerimeter() qui retourne le périmètre de ce triangle.

*Une méthode nommée toString() qui renvoie une description de chaîne pour le triangle.

Pour la formule pour calculer l'aire d'un triangle, voir ProgrammingExercise 2.15 (dans Une introduction à la programmation java 9e édition) La méthode toString () est implémentée comme suit:

Retourne "Triangle: side1 =" + side1 + " side2 = "+ side2 + "side3" + side3;

Dessiner les diagrammes UML pour les classes Triangle et GeometricObject et de mettre en œuvre les classes. Écrivez un programme de test qui invite l'utilisateur à entrer trois côtés du triangle, une couleur et une valeur booléenne pour indiquer si le triangle est rempli. Le programme devrait créer un triangle objet avec ces côtés et le couleur et rempli propriétés à l'aide de l'entrée. Le programme doit afficher le zone, périmètre, couleur et vrai ou faux pour indiquer s'il est rempli ou non.


La partie de l'exercice avec laquelle j'ai des problèmes est le programme de test.

Si vous pourriez m'aider en me donnant des indications sur comment je peux faire le Triangle de l'entrée, je serais très reconnaissant.

Le code que j'ai en ce moment est le suivant:

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

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

Le 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?);

    }
}
Author: asermax, 2013-10-28

2 answers

Vous devez créer un nouvel objet Triangle comme celui-ci, de sorte que vous ayez une référence

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.    

Vous devez également définir c'est filled et color propriétés

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

Ensuite, vous pouvez invoquer ses méthodes comme ceci:

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());

Vous pouvez accéder aux GeometricObject ' s isFilled(), setFilled(), getColor(), et setColor() parce que a Triangle est un GeometricObject (extends), il hérite donc de toutes ses méthodes.

En passant, ce n'est pas comment calculer l'aire d'un triangle:

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

Regardez ceci lien pour la formule correcte

Edit: Avec un autre problème avec le code

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

Modifier: Formule triangle

public double getArea() {
    int p = getPerimeter() / 2
    return Math.sqrt(p * ((p - side1) * (p - side2) * (p - side3));
}
 1
Author: Paul Samsotha, 2013-10-28 14:02:39

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
 */

}

Triangle

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
Author: kiru, 2016-04-24 17:12:57