منتدى مصر التقني
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

تمارين بلغة الجافا ...انشاء مثلث و حساب محيطة

اذهب الى الأسفل

تمارين بلغة الجافا ...انشاء مثلث و حساب محيطة  Empty تمارين بلغة الجافا ...انشاء مثلث و حساب محيطة

مُساهمة من طرف أحمد مناع الجمعة مايو 08, 2020 12:40 pm

اهلا بكم السؤال على النحو التالى :

need to create a class called MyTriangle, which models a triangle with 3 vertices, is designed as follows. The MyTriangle class uses three MyPoint instances as the three vertices.

The class contains:

-Three private instance variables v1, v2, v3 (instances of MyPoint), for the three vertices.
-A constructor that constructs a MyTriangle with three points v1=(x1, y1), v2=(x2, y2), v3=(x3, y3).
-An overloaded constructor that constructs a MyTriangle given three instances of MyPoint.
-A toString() method that returns a string description of the instance in the format "Triangle @ (x1, y1), (x2, y2), (x3, y3)".
-A getPerimeter() method that returns the length of the perimeter in double. You should use the distance() method of MyPoint to compute the perimeter.
-A method printType(), which prints "equilateral" if all the three sides are equal, "isosceles" if any two of the three sides are equal, or "scalene" if the three sides are different.

Write the MyTriangle class. Also write a test program (called TestMyTriangle) to test all the methods defined in the class.


تمارين بلغة الجافا ...انشاء مثلث و حساب محيطة  110


اذا المطلوب فى هذا السؤال على النحو التالى :

1_إنشاء فئة تسمى MyTriangle ، والتي تصمم مثلثًا به 3 رؤوس
2_الاعلان عن عدد 3 كائنات فى فئة MyPoint و التى تثمثل النقطات الثلاث لرؤس المثلث
3_مُنشئ الفئة الاول يقوم بتكوين MyTriangle من ثلاث احداثيات
4_مُنشئ الفئة الثاني يقوم بتكوين MyTriangle من ثلاث نقاط يمعنى استخدام كائنات الفئة  MyPoint
5_انشاء الطريقة  getPerimeter التى قوم بارجاع  طول محيط الاضلاع للمثلث. وذلك باستخدام الطريقة المسافة distance والتى سيتم انشائها فى الفئة في MyPoint لحساب المسافة بين نقطيتن
6_انشاء الطريقة  printType  ، التي تطبع كملة "متساوية_equilateral" إذا كانت الجوانب الثلاثة متساوية ، أو تطبع "متساوي الساقين_isosceles" إذا كان أي من الجانبين الثلاثة متساويين ، أو "مختلف الاضلاع _scalene" إذا كانت الجوانب الثلاثة مختلفة.
7_اخيرا انشاء الطريقة A toString وهو أسلوب يقوم بإرجاع وصف سلسلة للمثيل بالتنسيق التالى " (x1، y1)، (x2، y2)، (x3، y3)".



1_فى البداية سنقوم بانشاء الفئة My_Point على النحو التالى :

الكود:

package egybanc;


public class My_Point
{
   private int x = 0;     // الاعلان عن متغير رقمي يمثل الاحداثى السيسنى
   private int y = 0;     // الاعلان عن متغير رقمي يمثل الاحداثى الصادي
   
   public My_Point() {}    // منشىء الفئة بدون معلمات لاستخدامها فى انشاء مثيل منها
   
   
   public My_Point(int x, int y)  // منشىء الفئة بمعلمين لانشاء نقطة على المستوي الاحداثى س و ص
   {
      this.x = x;
      this.y = y;
   }

   
    // طريقة لحساب المسافة بين نقطتين
        // لفهم محتوي الطريقة يرجي معاينة المشاركة التالية
        //https://egy-tech.forumegypt.net/t1838-topic#5388
        
   public double distance(My_Point another)
   {
      int xDiff = this.x - another.x;
      int yDiff = this.y - another.y;
      return Math.sqrt(xDiff*xDiff + yDiff*yDiff);
   }
   
        
        // طرقتين لاستدعاء و تعين الاحداثى السينيى
   public int getX(){return x;}
   public void setX(int x){this.x = x;}

        
       // طرقتين لاستدعاء و تعين الاحداثى الصادي
   public int getY(){return y;}
   public void setY(int y){this.y = y;}
   
   
   
}


2_انشاء الفئة MyTriangle على النحو التالى :

الكود:

public class MyTriangle {     // انشاء الفئة مثلث التى ستقوم بانشاء مثلث من ثلاث رؤس

    
        // الاعلان عن ثلاث كائنات من الفئة نقطة لاستخدامها فيما بعد فى تعين نقاط الرؤس الثلاث
   private My_Point v1;
   private My_Point v2;
   private My_Point v3;
   
        
        // منشىء الفئة الاول الذى يستخدم احداثيات ثلاث نقاط لتعين رؤس المثلث
   public MyTriangle(int x1, int y1, int x2, int y2, int x3, int y3)
   {
      this.v1 = new My_Point(x1, y1);
      this.v2 = new My_Point(x2, y2);
      this.v3 = new My_Point(x3, y3);
   }
   
        
        // منشىء الفئة الثانى الذى يستخدم الفئة نقطة لتعين رؤس المثلث
   public MyTriangle(My_Point v1, My_Point v2, My_Point v3)
   {
      this.v1 = v1;
      this.v2 = v2;
      this.v3 = v3;
   }
      
        //محيط اى مثلث يساوى مجموع اضلاعه رياضيا
        // لذلك سنقوم بانشاء الطريقة التالىة و التى تسخدم المعادلة المسافة فى الفئة نقطة لايجاد طول كل ضلع ثم جمعهم
   public double getPerimeter()
   {
      return v1.distance(v2) + v2.distance(v3) + v3.distance(v1);
   }
   
        
        // تقوم الطريقة التالية من التاكد من اطوال الاضلاع وطبع النتائج على حسب ما ورد فى السؤال
   public void printType()
   {
      if (v1.distance(v2) == v2.distance(v3) && v2.distance(v3) == v3.distance(v1))
      {
         System.out.println("equilateral");
      }
      else if (v1.distance(v2) == v2.distance(v3) || v2.distance(v3) == v3.distance(v1) || v3.distance(v1) == v1.distance(v2))
      {
         System.out.println("isosceles");
      }
      else
      {
         System.out.println("scalene");
      }
   }
   
        // طريقة لطباعة قيم الاحداثيات بالتنسيق المطلوب
        @Override
   public String toString()
   {
      return "Triangle @ ("+ v1.getX() + ", " + v1.getY() + "), (" + v2.getX() + ", " + v2.getY() + "), (" + v3.getX() + ", " + v3.getY() + ")";
   }
}


3_تنفيذ البرنامج على النحو التالى :

الكود:

public class TestMyTriangle
{
        // تنفيذ البرنامج
   public static void main(String[] args)
   {
      MyTriangle t1 = new MyTriangle(1, 2, 3, 4, 2, 1);
      MyTriangle t2 = new MyTriangle(new My_Point(0, 0), new My_Point(1, 1), new My_Point(-1, -1));
      System.out.println(t1);
      System.out.println(t1.getPerimeter());
      t1.printType();
      System.out.println(t2);
      System.out.println(t2.getPerimeter());
      t2.printType();
   }
}


المخرجات :

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1108
النقاط : 202034
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى