sfrsnyz

Юшкин ЯП 3

May 6th, 2021
390
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //////////// Main
  2. import java.util.ArrayList;
  3. import java.util.List;
  4.  
  5. public class Main {
  6.     public static void main(String[] args) {
  7.         List<Circle> list=new ArrayList<>(); //инициализация списка окружностей и ее наследников
  8.         for(int i=0;i<Rand.randInt();i++){ //
  9.             list.add(new Circle(Rand.randDouble())); //добавление в список рандомной окружности
  10.         }
  11.         for(int i=0;i<Rand.randInt();i++){
  12.             list.add(new Ball(Rand.randDouble()));//добавление в список рандомного шара
  13.         }
  14.         for(int i=0;i<Rand.randInt();i++){
  15.             list.add(new Conus(Rand.randDouble(),Rand.randDouble()));//добавление в список рандомного конуса
  16.         }
  17.         for(Circle circle:list){ //вывод информации о всез фигурах списка
  18.             circle.info();
  19.             System.out.println();
  20.         }
  21.         double max1=0;
  22.         double max2=0;
  23.         for(Circle circle:list){
  24.             if(circle.getType().equals("окружность")){ //поиск максимума площади среди родителей
  25.                 if(circle.square()>max1)
  26.                     max1=circle.square();
  27.             }
  28.             else{
  29.                 if(circle.square()>max2)//поиск максимума площади среди наследников
  30.                     max2=circle.square();
  31.             }
  32.         }
  33.         System.out.println("Маскимальная площадь среди родительских классов: "+max1);
  34.         System.out.println("Маскимальная площадь среди классов-наследников: "+max2);
  35.  
  36.     }
  37.     private static class Rand{ //класс для генерации рандомных чисел
  38.         private static double randDouble(){//генерации чисел с плавающей точкой
  39.             return Math.random()*10+5;
  40.         }
  41.         private static int randInt(){//генерация целых чисел
  42.             return (int)(Math.random()*3+4);
  43.         }
  44.     }
  45. }
  46.  
  47. ////////// Circle
  48.  
  49. public class Circle {
  50.     public static final double PI=3.14; //статическая константа
  51.     private double rad; //радиус
  52.     private String type; //тип фигуры
  53.  
  54.     public Circle(double rad) { //конструктор
  55.         this.rad = rad;
  56.         type="окружность";
  57.     }
  58.  
  59.     public double getRad() { //геттер радиуса
  60.         return rad;
  61.     }
  62.  
  63.     public String getType() { //геттер типа
  64.         return type;
  65.     }
  66.  
  67.     public void setType(String type) { //сеттер типа
  68.         this.type = type;
  69.     }
  70.  
  71.     public double square(){ //площадь
  72.         return PI*rad*rad;
  73.     }
  74.     public void info(){ //вывод информации о фигуре на консоль
  75.         System.out.printf("Класс-%s,\nPадиуc: %s\nПлощадь: %s%n",type,rad,square());
  76.     }
  77.  
  78. }
  79.  
  80. ///////////// Conus
  81. public class Conus extends Circle{
  82.     private double height; //высота
  83.  
  84.     public Conus(double rad, double height) { //конструктор
  85.         super(rad);
  86.         this.height = height;
  87.         setType("конус"); //устанавливаем типу значение конус
  88.     }
  89.  
  90.     @Override
  91.     public void info() { //вывод информации на консоль (переопределение метода)
  92.         super.info();
  93.         System.out.println("Высота: "+height);
  94.     }
  95.  
  96.     @Override
  97.     public double square() { // переопределение метода по нахождению площади
  98.         return PI*getRad()*(height+getRad());
  99.     }
  100. }
  101.  
  102. /////////////////// Ball
  103. public class Ball extends Circle{ //механизм наследования
  104.     public Ball(double rad) { //конструктор
  105.         super(rad); //вызов конструктора родительского класса
  106.         setType("шар");
  107.     }
  108.  
  109.     @Override //переопределение площади
  110.     public double square() {
  111.         return 4*super.square(); //вызов метода площадь родительского класса
  112.     }
  113. }
RAW Paste Data