Премини към съдържанието
  • Добре дошли!

    Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

    Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

     

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

cvetan96

Задача в java с геометрични фигури

Препоръчан отговор


Да се дефинира интерфейс Shape3d с методи за лице и обем и класове My_Cilinder и My_Pyramid, които прилагат интерфейса и съдържат име на фигура, тип на фигура, лице на основата и височина. Да се дефинират конструктори (поне 2, единият от които да предефинира подразбиращия се), методи за достъп до член-данните, за извеждането им на екрана, за изчисляване на обем. Член-данните на класовете да са с частен достъп (private). В тестващия клас TestFigures да се създават поне по два обекта (Cilinder1, Cilinder2, Pyramid1, Pyramid2) от всеки клас и да се тестват всички методи. Поне един от обектите да е достъпен чрез интерфейса.

 

Това е задачата ще се надявам някой да помогне!

миналия срок имах подобна задача на която решението е:

 MY CILINDER

import java.util.Scanner;

public class My_Cilinder

{

  private double S, h;

  private String name = new String(), type = new String();

  Scanner sc = new Scanner(System.in);

 

  My_Cilinder()

  {

  System.out.print("Vuvedete ime na figurata: ");

  name = sc.nextLine();

  System.out.print("Vuvedete tip na figurata: ");

  type = sc.nextLine();

  System.out.print("Vuvedete lice na osnovata na figurata: ");

  S = sc.nextDouble();

  System.out.print("Vuvedete visochina na figurata: ");

  h = sc.nextDouble();

  }

 

  My_Cilinder(double S, double h, String name)

  {

  System.out.print("Vuvedete ime na figurata: ");

  name = sc.nextLine();

  System.out.print("Vuvedete lice na osnovata na figurata: ");

  S = sc.nextDouble();

    System.out.print("Vuvedete visochina na figurata: ");

  h = sc.nextDouble();

  }

 

  public String getFigureName() { return this.name; }

  public String getFigureType() { return this.type; }

  public double getBaseArea() { return this.S; }

  public double getHeight() { return this.h; }

 

  public void printData()

  {

  System.out.println("Imeto na figurata e: " + this.name);

  System.out.println("Tiput na figurata e: " + this.type);

  System.out.println("Liceto na osnovata na figurata e: " + this.S);

  System.out.println("Visochinata na figurata e: " + this.h);

  }

 

  public double calculateVolume()

  {

  return S*h;

  }

}

 

 

 

 

 

 

MY PYRAMID

import java.util.Scanner;

public class My_Pyramid

{

  private double B, h;

  private String name = new String(), type = new String();

  Scanner sc = new Scanner(System.in);

 

  My_Pyramid()

  {

  System.out.print("Vuvedete ime na figurata: ");

  name = sc.nextLine();

  System.out.print("Vuvedete tip na figurata: ");

  type = sc.nextLine();

  System.out.print("Vuvedete lice na osnovata na figurata: ");

  B = sc.nextDouble();

  System.out.print("Vuvedete visochina na figurata: ");

  h = sc.nextDouble();

  }

 

  My_Pyramid(double B, double h, String name)

  {

  System.out.print("Vuvedete ime na figurata: ");

  name = sc.nextLine();

  System.out.print("Vuvedete lice na osnovata na figurata: ");

  B = sc.nextDouble();

  System.out.print("Vuvedete visochina na figurata: ");

  h = sc.nextDouble();

  }

 

  public String getFigureName() { return this.name; }

  public String getFigureType() { return this.type; }

  public double getBaseArea() { return this.B; }

  public double getHeight() { return this.h; }

 

  public void printData()

  {

  System.out.println("Imeto na figurata e: " + this.name);

  System.out.println("Tiput na figurata e: " + this.type);

  System.out.println("Liceto na osnovata na figurata e: " + this.B);

  System.out.println("Visochinata na figurata e: " + this.h);

  }

 

  public double calculateVolume()

  {

  return B*h/3;

  }

}

 

 

 

 

 

 

 

TEST FIGURES

public class TestFigures

{

  public static void main(String[] args)

  {

  System.out.println("Molq vuvedete danni za Cilindur No1:");

  My_Cilinder Cilinder1 = new My_Cilinder();

  System.out.println("nMolq vuvedete danni za Cilindur No2:");

  My_Cilinder Cilinder2 = new My_Cilinder();

  System.out.println("nMolq vuvedete danni za Piramida No1:");

  My_Pyramid Pyramid1 = new My_Pyramid();

  System.out.println("nMolq vuvedete danni za Piramida No2:");

  My_Pyramid Pyramid2 = new My_Pyramid();

 

  //TEST METHODS CILINDER

  System.out.println("nFigurata '" + Cilinder1.getFigureName() + "' e ot tip '" + Cilinder1.getFigureType() + "'. Liceto na osnovata i e " + Cilinder1.getBaseArea() + ", a visochinata - " + Cilinder1.getHeight());

  Cilinder1.printData();

  System.out.println("Obemut na figurata e: " + Cilinder1.calculateVolume());

 

  System.out.println("nFigurata '" + Cilinder2.getFigureName() + "' e ot tip '" + Cilinder2.getFigureType() + "'. Liceto na osnovata i e " + Cilinder2.getBaseArea() + ", a visochinata - " + Cilinder2.getHeight());

  Cilinder2.printData();

  System.out.println("Obemut na figurata e: " + Cilinder2.calculateVolume());

 

  //TEST METHODS PYRAMID

  System.out.println("nFigurata '" + Pyramid1.getFigureName() + "' e ot tip '" + Pyramid1.getFigureType() + "'. Liceto na osnovata i e " + Pyramid1.getBaseArea() + ", a visochinata - " + Pyramid1.getHeight());

  Pyramid1.printData();

  System.out.println("Obemut na figurata e: " + Pyramid1.calculateVolume());

 

  System.out.println("nFigurata '" + Pyramid2.getFigureName() + "' e ot tip '" + Pyramid2.getFigureType() + "'. Liceto na osnovata i e " + Pyramid2.getBaseArea() + ", a visochinata - " + Pyramid2.getHeight());

  Pyramid2.printData();

  System.out.println("Obemut na figurata e: " + Pyramid2.calculateVolume());

  }

}

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

...

Здравейте !

 

Разписаните класове съдържат основните части за решаване на задачата. Необходимо е да се дефинира самия интерфейс. Това може да стане по следния начин:

public interface Shape3d {	//Метод за изчисляване на лицето на основата.	double getBaseArea();		//Метод за изчисляване на пълната повърхнина.	double getSurfaceArea();		//Метод за изчисляване на обема.	double calculateVolume();}

След това, модифицирате класове My_Pyramid и My_Cilinder по следния начин:

 

public class My_Cilinder

става:

public class My_Cilinder implements Shape3d

и 

public class My_Pyramid

става

public class My_Pyramid implements Shape3d

И в двата класа ще трябва да имплементирате съответната версия на метода:

@Overridepublic double getSurfaceArea() {	// TODO Auto-generated method stub	return 0; // Тук няма да е 0, а ще бъде формулата за пълна повърхнина на съответната фигура.}

който е ще дава пълната повърхнина на съответната фигура.

За повече информация по формулите, моля провете тук и тук.

 

В тестовия клас, трябва само да добавите извикванията на новия метод - getSurfaceArea()

 

Надявам се това да Ви е помогнало за решаването на задачата :).

 

Поздрави !

 

Допълнение:

My_Pyramid(double B, double h, String name){      System.out.print("Vuvedete ime na figurata: ");      name = sc.nextLine();      System.out.print("Vuvedete lice na osnovata na figurata: ");      B = sc.nextDouble();      System.out.print("Vuvedete visochina na figurata: ");      h = sc.nextDouble(); }

Този конструктор и другия подобен в класа My_Cilinder са написано грешно. Защо присвоявате стойностите, изчетени през Scanner обекта в подадените параметри ? И какъв е смисъла да го правите, като тези данни трябва да са в член - променливите, а не във фактическите параметри при извикване ?

 

По - правилен начин да се дефинират е следния:

My_Pyramid(double B, double h, String name){      this.name = name;      this.B = B;      this.h = h; }

Този конструктор ще се ползва при вече налични данни за B, h и name, а не за да се изчитат през входен поток и Scanner. В текущия си вариант, кода ще се компилира, но реално този конструктор ще е безсмислен - няма да запази данните в обекта, който ще конструира (Поради това и подозирам, че в момента IDE-то Ви го подчертава и ви предупреждава). 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

×
×
  • Добави ново...