Ответы пользователя по тегу ООП
  • С++ Классы, нужно сравнить два объекта одного класса и вывести результат на экран, как это сделать?

    arusef
    @arusef
    Novice .NET dev
    Эх. Вообще, знать длину окружности или площадь для сравнения не нужно. Достаточно знать, что у окружностей радиусы одинаковые.
    А посему, есть пара советов (и пускай это пока не будет true C++)
    1. Делать методы get_XXXX типа void - очень странный подход. Мало того, что класс такой специфики едва ли должен знать о логике вывода в консоль, так ещё и это нарушает в принципе семантику get. Поэтому из таких методов лучше возвращать просто значение соответствующего поля.
    2. Чтобы добавить какую-то логику сравнения, можете добавить такой или аналогичный метод:
    public: bool equals_to(const Circles& right){
        return rad == right.rad; // обычно сравнивать float так не очень хорошо, но пусть будет
    }
    Ответ написан
    1 комментарий
  • Как создать ссылку на строку внутри объекта класса, которая указывает на переменную вне объекта?

    arusef
    @arusef
    Novice .NET dev
    Это невозможно в рамках C#, потому что тип string - неизменяемый тип. Каждая новая строка имеет свой собственный экземпляр string (такое же поведение имеют все ValueType).
    Если хотите добиться иного поведения, нужно использовать System.Text.StringBuilder.
    Например:
    public class stateEnterWord
            {
                private StringBuilder word;
                public void init(StringBuilder input)
                {
                    word = input;
                }
                public void startExecution()
                {
                    word.Append(Console.ReadLine());
                }
            }
      static void Main(string[] args)
            {
                stateEnterWord obj = new stateEnterWord();
                StringBuilder Name = new StringBuilder();
                obj.init(Name);
                obj.startExecution();
                Console.WriteLine(Name.ToString());
            }

    Однако, если честно, это нарушает принципы ООП.
    Ответ написан
  • Можете пояснить принципы ООП?

    arusef
    @arusef
    Novice .NET dev
    Это принципы, касающиеся не столько процесса выполнения программы, сколько её дизайна. Все изменения в данном случае - процесс переписывания исходного кода программистом.
    Архитектура приложения должна быть составлена таким образом, чтобы для некоторого изменения её функционала, расширения и т.д. достаточно было бы изменить код лишь в узком круге мест, а для добавления нового - вовсе ничего не меняя, включить новые элементы. На такую гибкость, лёгкость в сопровождении/тестировании, читабельность, и направлены принципы ООД, которые определяются вот уже несколько десятков лет.
    Это очень обширная тема, требующая огромных знаний и опыта в сфере ООП. Лучше начинать с чего-то простого, и не лезть в тот же MVC без хотя бы базового понимания этих принципов.
    Ответ написан
    4 комментария
  • Как хранить массу электрона?

    arusef
    @arusef
    Novice .NET dev
    В принципе, точности double должно хватить для обычных вычислений каких-нибудь школьно-академических задач по физике. Однако, если этого мало, лучше использовать какие-то альтернативные единицы. Пользователь выше предложил всё мерить относительно масс электрона, что в принципе неплохо, однако трудновато для понимания и выражения масс других частиц. Есть возможность использовать электронвольты (эВ) для выражения массы покоя. (Ну в данном случае лучше МэВ, т.к. 1 эВ - слишком маленькая велична). К тому же, массы элементарных частиц часто приводятся именно в таком виде и эта информация доступна.
    Me = 0,510 998 9461 МэВ
    Mp = 938,272 0813 МэВ
    Mn = 939,565 4133 МэВ
    1 МэВ = 1,782 661 907е−30 кг (для перевода в килограммы, если требуется)
    Ответ написан
    Комментировать