powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Наследование, какого потомка выбрать
7 сообщений из 32, страница 2 из 2
Наследование, какого потомка выбрать
    #39272505
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВИзопропила как же быть, если треугольник одновременно равнобедренный и прямоугольный?
А у тебя треугольник с точки зрения Евклида или Лобачевского?
для начала - в конечномерном пространстве, метрикой - пусть кто-нибудь другой озаботатится
...
Рейтинг: 0 / 0
Наследование, какого потомка выбрать
    #39272535
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lskПользователь вводит 3 точки

это условие сбивает с толку.

можно так построить классы
Код: c#
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.
public interface ISquared//что-то, имеющее площадь
    {        
        double GetSquare();
    }

    public class A : ISquared//треугольник по координатам вершин
    {
        private double x1;
        private double x2;
        private double x3;

        private double y1;
        private double y2;
        private double y3;
                
        public A(double x1, double y1, double x2, double y2, double x3, double y3)
        {
            this.x1 = x1;
            this.y1 = y1;
            this.x2 = x2;
            this.y2 = y2;
            this.x3 = x3;
            this.y3 = y3;
        }
        public virtual double GetSquare() 
        {
            return 0.5 * ( (x1 - x3) * (y2 - y3) - (x2 - x3) * (y1 - y3) ); 
        }
    }

    public class B : ISquared //равносторонний треугольник
    {
        private double a;

        public B(double a)
        {
            this.a = a;
        }
        public double GetSquare() 
        {
            return a * a * Math.Sqrt(3) / 4; 
        }
    }

    public class C : ISquared //равнобедренный треугольник
    {
        private double a;
        private double alpha;

        public C(double a, double alpha)
        {
            this.a = a;
            this.alpha = alpha;
        }
        public double GetSquare() 
        {
            return a * a * Math.Sin(alpha); 
        }
    }

    public class D : ISquared //прямоугольный треугольник
    {
        private double a;
        private double b;
        public D(double a, double b)
        {
            this.a = a;
            this.b = b;
        }
        public double GetSquare() 
        { 
            return a * b / 2; 
        }
    }



и тогда вообще становится не принципиально, кто и от кого наследовался, и как создался - есть площать, отдай. и задача приобретает смысл
...
Рейтинг: 0 / 0
Наследование, какого потомка выбрать
    #39272544
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lskСделал через фабричный метод

если этот метод создает экземпляр нужного класса, выполняя проверки точек на нужный тип треугольника, то это не фабричный метод: как я с его помощью получу равносторонний 3-к, который равнобедренный?
...
Рейтинг: 0 / 0
Наследование, какого потомка выбрать
    #39272568
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MineRunnerИзопропила как же быть, если треугольник одновременно равнобедренный и прямоугольный?
Тогда первый кейс, что сработал, по нему и определять площадь.

жестко. тогда лучше сразу отдавать площать и не мучить высосанное из пальца наследование от A
...
Рейтинг: 0 / 0
Наследование, какого потомка выбрать
    #39272586
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ещё один смешной момент - координаты в double - все треугольники общего вида будут
...
Рейтинг: 0 / 0
Наследование, какого потомка выбрать
    #39272627
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилЕвгенийВпропущено...

А у тебя треугольник с точки зрения Евклида или Лобачевского?
для начала - в конечномерном пространстве, метрикой - пусть кто-нибудь другой озаботатится
Площадь будем мерить по Жордану или по Лебегу или по Хаусдорфу?
...
Рейтинг: 0 / 0
Наследование, какого потомка выбрать
    #39272643
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

по Жордану
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Наследование, какого потомка выбрать
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]