Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 29.04.2016
Сообщений: 3
1

Подскажите в каком направлении двигаться

30.04.2016, 03:15. Показов 1038. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, возникли сомнения в правильности построения класса. А именно правильно ли я задаю координаты точек вершин через конструкторы? Как эти координаты лучше передавать, так как у меня, либо в массиве(но возникает вопрос - как с ними дальше работать)? Вообще не соображаю бьюсь пару часов, буду благодарен за правильный совет.

Вот само задание. Построить систему классов для описания объемных тел: треугольная призма, треугольная пирамида, тетраэдр – на основе треугольника. Предусмотреть методы для создания объектов, перемещения их в пространстве, изменения размеров, вычисления объемов и площадей поверхности.

Выкладываю свои наработки, понимаю что мало и на костылях и людям с опытом это не нравиться, но не могу собраться с мыслями как дальше делать.

Так понимаю, что по заданию нужно сделать три класса: призма, пирамида, тетраэдр. Сделал пока только для призмы хочу на ней понять как лучше все реализовать.

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
//Треугольная призма
public class TriPrism {
    
    public int x,y,z;
    
    public int getCoorX(){
        return x;
    }
    
    public void setСoorX(int x) {
        this.x = x;
    }
    
    public int getCoorY(){
        return y;
    }
    
    public void setCoorY(int y) {
        this.y = y;
    }
    
    public int getCoorZ(){
        return z;
    }
    
    public void setCoorZ(int z) {
        this.z = z;
    }
    
    public TriPrism(int x, int y, int z){
        this.x = x;
        this.y = y;
        this.z = z;
    }
    
    @Override
    public String toString() {
        return " " +getCoorX()+","+getCoorY()+","+getCoorZ();
    }
    
}
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
public class TestFigure {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        TriPrism A = new TriPrism (34,123,12);
        System.out.println(A);
        
        TriPrism B = new TriPrism (11,12,33);
        System.out.println(B);
        
        TriPrism C = new TriPrism (34,123,12);
        System.out.println(C);
        
        TriPrism D = new TriPrism (11,12,33);
        System.out.println(D);
        
        TriPrism E = new TriPrism (34,123,12);
        System.out.println(E);
        
        TriPrism F = new TriPrism (11,12,33);
        System.out.println(F);
        
    }
 
}
Добавлено через 2 часа 42 минуты
Добавил метод для нахождения основания треугольника(вообще можно это назвать ООП )

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
import static java.lang.Math.*;
 
public class TriPrism {
    
    public int x,y,z;
    
    public int getCoorX(){
        return x;
    }
    
    public void setCoorX(int x) {
        this.x = x;
    }
    
    public int getCoorY(){
        return y;
    }
    
    public void setCoorY(int y) {
        this.y = y;
    }
    
    public int getCoorZ(){
        return z;
    }
    
    public void setCoorZ(int z) {
        this.z = z;
    }
    
    public TriPrism(int x, int y, int z){
        this.x = x;
        this.y = y;
        this.z = z;
    }
    
    public TriPrism(){
    }
    
    //площадь основания призмы
    public double toSearchBase(TriPrism A, TriPrism B, TriPrism C){ 
        double AB = sqrt(pow(A.x-B.x,2)+pow(A.y-B.y,2)+pow(A.z-B.z,2));
        double BC = sqrt(pow(B.x-C.x,2)+pow(B.y-C.y,2)+pow(B.z-C.z,2));
        double AC = sqrt(pow(A.x-C.x,2)+pow(A.y-C.y,2)+pow(A.z-C.z,2));
        
        double p = (AB + BC + AC)/2;
        double SBase = sqrt((p-AB)*(p-BC)*(p-AC)*p);
        System.out.println(SBase);
        return SBase;
    }
    
    @Override
    public String toString() {
        return " " +getCoorX()+","+getCoorY()+","+getCoorZ();
    }
}
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
public class TestFigure {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        TriPrism A = new TriPrism (34,123,12);
        System.out.println(A);
        
        TriPrism B = new TriPrism (11,12,33);
        System.out.println(B);
        
        TriPrism C = new TriPrism (334,123,12);
        System.out.println(C);
        
        TriPrism D = new TriPrism (11,12,33);
        System.out.println(D);
        
        TriPrism E = new TriPrism (34,123,12);
        System.out.println(E);
        
        TriPrism F = new TriPrism (1321,12,33);
        System.out.println(F);
        
        TriPrism Test = new TriPrism();
            
        Test.toSearchBase(A, B, C);     
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2016, 03:15
Ответы с готовыми решениями:

Прошу указать верный курс, подсказать, в каком направлении двигаться
Знаю основы Java и хочу углубиться в его изучение. В данный момент есть потребность в написании...

Дайте совет жизненный, куда двигаться в Java направлении
Привет! Хех, молодость быстро пролетела, аж не верится. Вопрос не нубский, много чего прочитано,...

Подскажите в каком направлении двигаться
http://oxidemod.org/threads/mysql-and-sqlite-support-now-available.6841/ Имеется игровой сервер и...

Подскажите в каком направлении двигаться?
Если войти на сайт http://code.org/ (программирование для детей или для начинающих), весь процес...

3
155 / 154 / 53
Регистрация: 30.04.2016
Сообщений: 321
30.04.2016, 13:25 2
Во-первых, сделайте ваши поля x, y, z - private, вы же не просто так для них гет и сет методы сделали.
Во-вторых, я думаю что задание подразумевает создание не просто 3ех отдельных классов, а чтобы они как-то были связаны. Подумайте что между ними может быть общего, какие поля и методы, и возможно ли их вынести в общий суперкласс и наследовать уже от него.

Более правильным дизайном было бы создание класса, например Point, с тремя полями x, y, z. Потом уже например класс Пирамида, в котором полями являются Point-ы, и в этом классе Пирамида уже метод нахождения площади. А так у вас получается что каждый класс TriPrism содержит лишь одну точку, и в каждом этом классе свой метод по нахождению площади.
0
0 / 0 / 0
Регистрация: 29.04.2016
Сообщений: 3
01.05.2016, 02:52  [ТС] 3
Как ты и говорил создал класс родителя. Как думаешь что еще надо доработать? Если кого нибудь видит мои ошибки, подскажите как лучше их исправить.

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
public abstract class Figure {
    
    private int x,y,z;
    
    public int getCoorX(){
        return x;
    }
    
    public void setCoorX(int x) {
        this.x = x;
    }
    
    public int getCoorY(){
        return y;
    }
    
    public void setCoorY(int y) {
        this.y = y;
    }
    
    public int getCoorZ(){
        return z;
    }
    
    public void setCoorZ(int z) {
        this.z = z;
    }
    
    public Figure (int x, int y, int z){
        this.x = x;
        this.y = y;
        this.z = z;
    }
}
Остальные классы

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
import static java.lang.Math.*;
 
public class TriPrism extends Figure {
    private double VPrism, SBase, SPrism, h;
    
    public TriPrism(int x, int y, int z){
        super(x,y,z);
    }
    
    public void toSearchVPrism(TriPrism A, TriPrism B, TriPrism C, TriPrism A1, TriPrism B1, TriPrism C1){ 
        double AB = sqrt(pow(A.getCoorX()-B.getCoorX(),2)+pow(A.getCoorY()-B.getCoorY(),2)+pow(A.getCoorZ()-B.getCoorZ(),2)); // Длина вектора AB у основания
        double BC = sqrt(pow(B.getCoorX()-C.getCoorX(),2)+pow(B.getCoorY()-C.getCoorY(),2)+pow(B.getCoorZ()-C.getCoorZ(),2)); // Длина вектора AB у основания
        double AC = sqrt(pow(A.getCoorX()-C.getCoorX(),2)+pow(A.getCoorY()-C.getCoorY(),2)+pow(A.getCoorZ()-C.getCoorZ(),2)); // Длина вектора AB у основания
        
        double p = (AB + BC + AC)/2;
        SBase = sqrt((p-AB)*(p-BC)*(p-AC)*p);
        
        System.out.println("\nПлощадь основания призмы = " + SBase); // Площадь основания призмы
        
        if (((A.getCoorX()&A.getCoorY()) == (A1.getCoorX()&A1.getCoorY()))&&((B.getCoorX()&B.getCoorY()) == (B1.getCoorX()&B1.getCoorY()))&&((C.getCoorX()&C.getCoorY()) == (C1.getCoorX()&C1.getCoorY()))){
            double AA = sqrt(pow((A.getCoorZ()-A1.getCoorZ()),2));          // Высота
            h=AA;
            System.out.println("Высота призмы = "+AA);              
            VPrism = SBase * AA;                            // Нахождения объема призмы
            System.out.println("Объем призмы = "+VPrism);    
        
        } else{
            if ((A.getCoorX()&A.getCoorY()) != (A1.getCoorX()&A1.getCoorY())){
                System.out.println("Изменить координаты вершины в точке A1");
            }
            else if ((B.getCoorX()&B.getCoorY()) != (B1.getCoorX()&B1.getCoorY())){
                System.out.println("Изменить координаты вершины в точке B1");
            }   
            else if ((C.getCoorX()&C.getCoorY()) != (C1.getCoorX()&C1.getCoorY())){
                System.out.println("Изменить координаты вершины в точке C1");
                }
            System.out.println("Измените координаты верхних вершин основания, так как мы строим правильную призму!");
        }
    }   
    
    public void toSearchSPrism(TriPrism A, TriPrism B, TriPrism C, TriPrism A1, TriPrism B1, TriPrism C1){
        double AB = sqrt(pow(A.getCoorX()-B.getCoorX(),2)+pow(A.getCoorY()-B.getCoorY(),2)+pow(A.getCoorZ()-B.getCoorZ(),2));
        double BC = sqrt(pow(B.getCoorX()-C.getCoorX(),2)+pow(B.getCoorY()-C.getCoorY(),2)+pow(B.getCoorZ()-C.getCoorZ(),2));
        double AC = sqrt(pow(A.getCoorX()-C.getCoorX(),2)+pow(A.getCoorY()-C.getCoorY(),2)+pow(A.getCoorZ()-C.getCoorZ(),2));
        
        if (((A.getCoorX()&A.getCoorY()) == (A1.getCoorX()&A1.getCoorY()))&&((B.getCoorX()&B.getCoorY()) == (B1.getCoorX()&B1.getCoorY()))&&((C.getCoorX()&C.getCoorY()) == (C1.getCoorX()&C1.getCoorY()))){
                SPrism = SBase*2+h*(AB+BC+AC);                      // Нахождение площади призмы
                System.out.println("Площадь призмы = "+SPrism+"\n");   
        }
    }
    
    @Override
    public String toString() {
        return getCoorX()+","+getCoorY()+","+getCoorZ();
    }
}
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
import static java.lang.Math.*;
 
public class TriPyramid extends Figure {
    
    private double VPyramid, SPyramid;
    
    TriPyramid(int x, int y, int z){
        super(x,y,z);
    }
    
    public String toString() {
           return getCoorX()+","+getCoorY()+","+getCoorZ();
    }
    
    public void toSearchVPyramid(TriPyramid PA, TriPyramid PB, TriPyramid PC, TriPyramid PD){
        double[] AB = {PB.getCoorX()-PA.getCoorX(),PB.getCoorY()-PA.getCoorY(),PB.getCoorZ()-PA.getCoorZ()};    // Координата вектора AB к основанию
        double[] AC = {PC.getCoorX()-PA.getCoorX(),PC.getCoorY()-PA.getCoorY(),PC.getCoorZ()-PA.getCoorZ()};    // Координата вектора AC к основанию
        double[] AD = {PD.getCoorX()-PA.getCoorX(),PD.getCoorY()-PA.getCoorY(),PD.getCoorZ()-PA.getCoorZ()};    // Координата вектора AD к основанию
        
        VPyramid = ((AB[0]*AC[1]*AD[2])+(AB[1]*AC[2]*AD[0])+(AB[2]*AC[0]*AD[1])-(AB[2]*AC[1]*AD[0])-(AB[1]*AC[0]*AD[2])-(AB[0]*AC[2]*AD[1]))/6;
        if (VPyramid <0){
            VPyramid = 0 - VPyramid;
            System.out.println("Объём пирамиды = " +VPyramid);
        } else{
            System.out.println("Объём пирамиды = " +VPyramid);
        }
    }   
    
    public void toSearchSPyramid(TriPyramid PA, TriPyramid PB, TriPyramid PC, TriPyramid PD){
        // Найдем вектора, для правила "Площадь треугольника образованного векторами a и b равна половине модуля векторного произведения этих векторов" 
        double[] DB = {PB.getCoorX()-PD.getCoorX(),PB.getCoorY()-PD.getCoorY(),PB.getCoorZ()-PD.getCoorZ()};    // 
        double[] DC = {PC.getCoorX()-PD.getCoorX(),PC.getCoorY()-PD.getCoorY(),PC.getCoorZ()-PD.getCoorZ()};    
        double[] DA = {PA.getCoorX()-PD.getCoorX(),PA.getCoorY()-PD.getCoorY(),PA.getCoorZ()-PD.getCoorZ()};
        double[] CB = {DB[0]-DC[0], DB[1]-DC[1], DB[2]-DC[2]};
        double[] CA = {DA[0]-DC[0], DA[1]-DC[1], DA[2]-DC[2]};
        // Найдем векторное произведение векторов
        double[] C1 = {(DB[1]*DC[2])-(DB[2]*DC[1]), 0-((DB[0]*DC[2])-(DB[2]*DC[0])), ((DB[0]*DC[1])-(DB[1]*DC[0]))};
        double[] C2 = {(DB[1]*DA[2])-(DB[2]*DA[1]), 0-((DB[0]*DA[2])-(DB[2]*DA[0])), ((DB[0]*DA[1])-(DB[1]*DA[0]))};
        double[] C3 = {(DC[1]*DA[2])-(DC[2]*DA[1]), 0-((DC[0]*DA[2])-(DC[2]*DA[0])), ((DC[0]*DA[1])-(DC[1]*DA[0]))};
        double[] C4 = {(CB[1]*CA[2])-(CB[2]*CA[1]), 0-((CB[0]*CA[2])-(CB[2]*CA[0])), ((CB[0]*CA[1])-(CB[1]*CA[0]))};
        // Найдем площадь грани
        double SP1 = sqrt(pow(C1[0],2)+pow(C1[1],2)+pow(C1[2],2))/2;    // Основание
        double SP2 = sqrt(pow(C2[0],2)+pow(C2[1],2)+pow(C2[2],2))/2;    // Грань DAB
        double SP3 = sqrt(pow(C3[0],2)+pow(C3[1],2)+pow(C3[2],2))/2;    // Грань DAC
        double SP4 = sqrt(pow(C4[0],2)+pow(C4[1],2)+pow(C4[2],2))/2;    // Грань CAB
        
        SPyramid = SP1 + SP2 + SP3 + SP4;
        System.out.println("Площадь пирамиды = "+SPyramid+"\n"); 
    }
}
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
import static java.lang.Math.pow;
import static java.lang.Math.sqrt;
 
public class TriTetra extends Figure {
    private double VTetra, STetra;
    
    TriTetra(int x, int y, int z){
        super(x,y,z);
    }
    
    public void toSearchVTetra(TriTetra PA, TriTetra PB, TriTetra PC, TriTetra PD){
        double[] AB = {PB.getCoorX()-PA.getCoorX(),PB.getCoorY()-PA.getCoorY(),PB.getCoorZ()-PA.getCoorZ()};    // Координата вектора AB к основанию
        double[] AC = {PC.getCoorX()-PA.getCoorX(),PC.getCoorY()-PA.getCoorY(),PC.getCoorZ()-PA.getCoorZ()};    // Координата вектора AC к основанию
        double[] AD = {PD.getCoorX()-PA.getCoorX(),PD.getCoorY()-PA.getCoorY(),PD.getCoorZ()-PA.getCoorZ()};    // Координата вектора AD к основанию
        
        VTetra = ((AB[0]*AC[1]*AD[2])+(AB[1]*AC[2]*AD[0])+(AB[2]*AC[0]*AD[1])-(AB[2]*AC[1]*AD[0])-(AB[1]*AC[0]*AD[2])-(AB[0]*AC[2]*AD[1]))/6;
        if (VTetra <0){
            VTetra = 0 - VTetra;
            System.out.println("Объём тетраэдра = " +VTetra);
        } else{
            System.out.println("Объём тетраэдра = " +VTetra);
        }
    }
    
    public void toSearchSTetra(TriTetra PA, TriTetra PB, TriTetra PC, TriTetra PD){
        // Найдем вектора, для правила "Площадь треугольника образованного векторами a и b равна половине модуля векторного произведения этих векторов" 
        double[] DB = {PB.getCoorX()-PD.getCoorX(),PB.getCoorY()-PD.getCoorY(),PB.getCoorZ()-PD.getCoorZ()};    // 
        double[] DC = {PC.getCoorX()-PD.getCoorX(),PC.getCoorY()-PD.getCoorY(),PC.getCoorZ()-PD.getCoorZ()};    
        double[] DA = {PA.getCoorX()-PD.getCoorX(),PA.getCoorY()-PD.getCoorY(),PA.getCoorZ()-PD.getCoorZ()};
        double[] CB = {DB[0]-DC[0], DB[1]-DC[1], DB[2]-DC[2]};
        double[] CA = {DA[0]-DC[0], DA[1]-DC[1], DA[2]-DC[2]};
        // Найдем векторное произведение векторов
        double[] C1 = {(DB[1]*DC[2])-(DB[2]*DC[1]), 0-((DB[0]*DC[2])-(DB[2]*DC[0])), ((DB[0]*DC[1])-(DB[1]*DC[0]))};
        double[] C2 = {(DB[1]*DA[2])-(DB[2]*DA[1]), 0-((DB[0]*DA[2])-(DB[2]*DA[0])), ((DB[0]*DA[1])-(DB[1]*DA[0]))};
        double[] C3 = {(DC[1]*DA[2])-(DC[2]*DA[1]), 0-((DC[0]*DA[2])-(DC[2]*DA[0])), ((DC[0]*DA[1])-(DC[1]*DA[0]))};
        double[] C4 = {(CB[1]*CA[2])-(CB[2]*CA[1]), 0-((CB[0]*CA[2])-(CB[2]*CA[0])), ((CB[0]*CA[1])-(CB[1]*CA[0]))};
        // Найдем площадь грани
        double SP1 = sqrt(pow(C1[0],2)+pow(C1[1],2)+pow(C1[2],2))/2;    // Основание
        double SP2 = sqrt(pow(C2[0],2)+pow(C2[1],2)+pow(C2[2],2))/2;    // Грань DAB
        double SP3 = sqrt(pow(C3[0],2)+pow(C3[1],2)+pow(C3[2],2))/2;    // Грань DAC
        double SP4 = sqrt(pow(C4[0],2)+pow(C4[1],2)+pow(C4[2],2))/2;    // Грань CAB
        
        STetra = SP1 + SP2 + SP3 + SP4;
        System.out.println("Площадь тетраэдра = "+STetra+"\n");
    }
    
    public String toString() {
        return getCoorX()+","+getCoorY()+","+getCoorZ();
    }
}
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
public class TestFigure {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // Призма
        TriPrism TestPrism = new TriPrism(0,0,0);
        TriPrism A = new TriPrism (54,123,80);
        TriPrism B = new TriPrism (21,12,33);
        TriPrism C = new TriPrism (34,13,12);
        TriPrism A1 = new TriPrism (54,123,33);
        TriPrism B1 = new TriPrism (21,12,12);
        TriPrism C1 = new TriPrism (34,13,33);
        System.out.println("Вершина A("+A+");");     
        System.out.println("Вершина B("+B+");");     
        System.out.println("Вершина C("+C+");");     
        System.out.println("Вершина A1("+A1+");");       
        System.out.println("Вершина B1("+B1+");");       
        System.out.println("Вершина C1("+C1+");");
        
        TestPrism.toSearchVPrism(A, B, C, A1, B1, C1);
        TestPrism.toSearchSPrism(A, B, C, A1, B1, C1);
        
        // Пирамида
        TriPyramid TestPyramid = new TriPyramid(0,0,0);
        TriPyramid PA = new TriPyramid(4,12,8);         // Вершина
        TriPyramid PB = new TriPyramid(21,2,5);
        TriPyramid PC = new TriPyramid(9,8,1);
        TriPyramid PD = new TriPyramid(34,34,32);
        System.out.println("Вершина A("+PA+");");
        System.out.println("Вершина B("+PB+");");
        System.out.println("Вершина C("+PC+");");
        System.out.println("Вершина D("+PD+");");
        
        TestPyramid.toSearchVPyramid(PA, PB, PC, PD);   // Проверка [url]http://ru.onlinemschool.com/math/assistance/vector/pyramid_volume/[/url]
        TestPyramid.toSearchSPyramid(PA, PB, PC, PD);
        
        // Тетраэдр
        TriTetra TestTetra = new TriTetra(0,0,0);
        TriTetra TA = new TriTetra(1,2,1);
        TriTetra TB = new TriTetra(2,-3,4);
        TriTetra TC = new TriTetra(-4,5,1);
        TriTetra TD = new TriTetra(-1,2,-3);
        System.out.println("Вершина A("+TA+");");
        System.out.println("Вершина B("+TB+");");
        System.out.println("Вершина C("+TC+");");
        System.out.println("Вершина D("+TD+");");
        
        TestTetra.toSearchVTetra(TA,TB,TC,TD);
        TestTetra.toSearchSTetra(TA,TB,TC,TD);  
    }
}
0
155 / 154 / 53
Регистрация: 30.04.2016
Сообщений: 321
01.05.2016, 11:03 4
Не совсем то, что я имел в виду. Смотри, если например у тебя есть класс Раковина и есть класс Ванная, очевидно что между ними есть что-то. Но ты не будешь наследовать Ванную от Раковины или наоборот - это не имеет никакого логического смысла. Раковина содержится в Ванной, нужно различать два взаимоотношения между классами - IS-A и HAS-A, в первом ты применяешь наследование во втором композицию.
В твоем примере имеется класс представляющий одну координату, и от него происходит наследование 3д фигур - это неправильно, как и в примере с Ванной. В какой-либо фигуре должно содержаться некоторое количество координат.
Как примерно я представляю решение:
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
public class Point {
    private x, y, z;
    // конструктор, геттеры, сеттеры и тп.
}
 
public abstract class Shape3D {
    List<Point> coordinates = new ArrayList<Point>();
 
    public void Move() {
        // общий код для перемещения
    }
 
    public abstract double CalculateSurface();
    public abstract double CalculateVolume();
}
 
// и уже конкретные классы
public class Tetraedr extends Shape3D {
    // если вдруг надо что-то изменить то оверрайд move
    @Override public void Move() {
        // super.Move();
        // код для дополнительных действий
    }
 
    @Override public double CalculateSurface() {
        // код для вычисления площади тетраэдра
    }
 
    @Override public double CalculateVolume() {
        // код для вычисления объема тетраэдра
    }
}
И тебе не надо будет на разном объекте вызывать разные методы например для объема - toSearchVTetra или toSearchVPyramid, ты будешь просто писать:
Java
1
2
3
4
Shape3D tetraedr = new Tetraedr(...);
tetraedr.CalculateVolume();
Shape3D piramida = new Piramida(...);
piramida.CalculateVolume();
0
01.05.2016, 11:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2016, 11:03
Помогаю со студенческими работами здесь

Подскажите как развить сайт и в каком направлении двигаться
Новичок в этом деле вот моя работа http://newspak.in/ строго не судите

Подскажите в каком направлении дальше двигаться, что учить
Хотел бы спросить, я выучил C# (консольное приложение на базовом уровне) в каком направлении дальше...

В каком направлении двигаться
Доброго времени Камни просьба не бросать &quot;я в начале пути&quot;. Хочу в порядке хобби (для начала)...

В каком направлении двигаться?
Добрый вечер форумчане, хотел бы услышать от вас рекомендации в какую сторону стоит двигаться,...

В каком направлении двигаться ?
Помогите определиться с тем , что надо изучить ? Как реализовать данное приложение при помощи Qt...

В каком направлении двигаться?
Доброй ночи. Я учусь в университете, хотел поступить на программиста, как в России бывает,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru