ПредишенСледващото

Трябва да се напише програма, която съдържа класа триъгълник. В този клас, трябва да има три конструктори:

  1. Конструктор, че отнема три страни.
  2. Конструктор приемате две страни и ъгъл между тях, както и изчисляване на трето лице на косинус теорема.
  3. Конструктор, че отнема два ъгъла и страната между тях и изчисляване на останалите страни на синусова теорема (съпричастни на теоремата на сумата от ъглите на триъгълник).

Всеки триъгълник също така трябва да се върне на собствената си територия.







Това означава, че ние имаме следното:

Проблемът е, че и трите конструктори същия подпис, но различна логика.
Въпрос: как да се реши на "правилната" за този проблем?

  1. Заместването параметър (и) двойно низ и за по-нататъшно разбор низ в двойно.
  2. Заместването параметър (и) удвои да плува.






Налагането параметри в масива:

  • Създаване на нов тип данни Angle.
  • настроен 27 Септември '16 в 05:42

    Вариант 1 - Използвайте посочените дизайнери.

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

    Вариант 2 - използване на домейни типове данни

    Определяне на типове данни "дължина" и "ъгъл" - и да ги използвате в конструктора.

    Чифт алтернативи на тези, които вече предложи.

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

    Проблемът може да бъде решен чрез добавяне на допълнителен параметър.

    Създаване на нови "празни" класове (имена, взети от @Argon отговор):

    Дизайнери подписи в този случай са, както следва:

    Използвайте изброяване ENUM.

    В този случай, дизайнерът ще бъде единственият с водещи символи в рамките на:

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







    Свързани статии

    Подкрепете проекта - споделете линка, благодаря!