Форум программистов, компьютерный форум, киберфорум
AlexProgramm
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Изученный материал по Java. Абстрактные классы и интерфейсы.

Запись от AlexProgramm размещена 06.12.2022 в 20:01
Показов 1373 Комментарии 0

Закончил тему:

7. Абстрактные классы и интерфейсы.

Задачи:
1.
В пакете com.spec создайте публичный интерфейс Helloable с методами:
• void sayHello()
• void sayBye()
Данные методы будет предназначаться для вывода приветственного и прощального сообщения на экран.
2. Создайте два класса, реализующих интерфейс Helloable. Классы должны выводить различные сообщения (например, первый класс – на русском языке, второй – на английском).
3. Разработайте демонстрационную программу. Программа должна случайным образом создавать объект одного из классов, поддерживающих Helloable, и работать с ним через интерфейсную ссылку
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public interface Helloable {
    void sayHello();
    void sayBye();
}
 
public class SayEngl implements Helloable {
    @Override
    public void sayHello() {
        System.out.println("Hello");
    }
 
    @Override
    public void sayBye() {
        System.out.println("Bye");
    }
}
public class SayRus implements Helloable {
 
    @Override
    public void sayHello() {
        System.out.println("Привет");
    }
 
    @Override
    public void sayBye() {
        System.out.println("До свидания");
    }
    
}
public class DZ71 {
 
    public static void main(String[] args) {
        Random r = new Random();
        Helloable h = null;
        if (r.nextBoolean()) 
            h = new SayEngl();
        else
            h = new SayRus();
        h.sayHello();
        h.sayBye();
        //System.out.println("Hello World!");
    }
}
2.
1. Разработайте абстрактный класс com.spec.Figure – описание геометрической фигуры на плоскости.
Класс должен содержать:
• скрытый массив точек – вершин фигуры (для описания точки используйте класс com.spec.Point)
• конструктор, принимающий на вход количество вершин фигуры
• метод, изменяющий координаты заданной точки
• метод, возвращающий координату x заданной точки
• метод, возвращающий координату y заданной точки
• метод, вычисляющий длину заданного ребра (расстояние между соседними точками)
• метод, вычисляющий периметр фигуры
• метод, перемещающий фигуру на плоскости (изменяющий координаты всех точек на заданные величины)
• абстрактный метод для вычисления площади фигуры
2. Разработайте класс com.spec.Triangular –треугольник. Класс Triangular должен расширять классFigure и реализовывать абстрактный метод вычисления площади фигуры.
3. Разработайте демонстрационную программу, работающую с треугольником.
Площадь треугольника рассчитывается по формуле: где:
• a, b, c – длины сторон треугольника
• p – полупериметр (периметр треугольника, разделенный на 2)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package com.spec;
 
import static java.lang.Math.pow;
import static java.lang.Math.sqrt;
 
public abstract class Figure {
    private Point[] p;
    
    public Figure(int cv) {
        p = new Point[cv];
        for (int i = 0; i < p.length; i++)
            p[i] = new Point();
    }
    public void changeCoordP(int i, int chx, int chy) {
        p[i].setCoord(chx, chy);
    }
    public int getXP(int i) {
        return p[i].getCoordX();
    }
    public int getYP(int i) {
        return p[i].getCoordY();
    }
    public double getLine(int i, int j) {
        double length;
        length = sqrt(pow(p[j].getCoordX() - p[i].getCoordX(), 2) + 
                pow(p[j].getCoordY() - p[i].getCoordY(), 2));
        return length;
    }
    public double getPer() {
        double per = 0;
        for (int i = 0; i < p.length - 1; i++) {
            per = per + getLine(i, i+1);
        }
        per = per + getLine(p.length - 1, 0);
        return per;
    }
    public void sdvig(int xsdvig, int ysdvig) {
        for (Point item : p) {
            item.setCoord(item.getCoordX() + xsdvig, item.getCoordY() + ysdvig);
        }
    }
    public abstract double getArea();
}
 
public class Point {
    private int x, y;
    
    public Point() {
        setCoord(0, 0);
    }
    public Point (int x, int y){
        this.x = x;
        this.y = y;
    }
    
    public void setCoord(int x, int y){
        this.x = x;
        this.y = y;
    }
//    public void sdvigCoord(int sdvigx, int sdvigy) {
//        x = x + sdvigx;
//        y = y + sdvigy;
//    }
    public int getCoordX(){
        //System.out.println("x = " + x + " y = " + y);
        return x;
    }
    public int getCoordY(){
        //System.out.println("x = " + x + " y = " + y);
        return y;
    }
 
//    double getCoordY() {
//        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
//    }
}
 
public class Triangular extends Figure {
 
    public Triangular() {
        super(3);
    }
 
    @Override
    public double getArea() {
        double area = 0;
        area = sqrt((getPer() / 2) * (getPer() / 2 - getLine(0, 1)) * (getPer() / 2 - getLine(1, 2)) *
                (getPer() / 2 - getLine(2, 0)));
        return area;
    }
    
    
}
 
public class DZ72 {
 
    public static void main(String[] args) {
        Triangular t = new Triangular();
        t.changeCoordP(0, 1, 1);
        t.changeCoordP(1, 6, 1);
        t.changeCoordP(2, 2, 7);
        
        System.out.println("Координата Х точки 0 = " + t.getXP(0));
        System.out.println("Координата Y точки 2 = " + t.getYP(2));
        
        System.out.println("Длина ребра между точками 0 и 1 = " + t.getLine(0, 1));
        System.out.println("Длина ребра между точками 1 и 2 = " + t.getLine(1, 2));
        System.out.println("Длина ребра между точками 2 и 0 = " + t.getLine(2, 0));
        
        System.out.println("Периметр треугольника = " + t.getPer());
        
        System.out.println("Перемещаем треугольник на 1 ед вверх");
        t.sdvig(0, 1);
        System.out.println("Координата Y точки 0 = " + t.getYP(0));
        System.out.println("Координата Y точки 1 = " + t.getYP(1));
        System.out.println("Координата Y точки 2 = " + t.getYP(2));
        
        System.out.println("Площадь треугольника = " + t.getArea());
    }
}
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru