Задать вопрос
Ответы пользователя по тегу Java
  • Float обратно в байты как реализовать?

    @Mercury13
    Программист на «си с крестами» и не только
    int asInt = Float.floatToIntBits(asFloat);
    byte data0 = (byte)asInt;
    byte data1 = (byte)(asInt >> 8);
    byte data2 = (byte)(asInt >> 16);
    byte data3 = (byte)(asInt >> 24);


    Как я понял, вы тут сериализацией занимаетесь, для этого в Java обычно используют порядок байтов Motorola и все Stream’ы выдают именно его. А тут у вас порядок Intel — видимо, для совместимости с кем-то.
    Ответ написан
  • Что такое нарушения принципов ООП?

    @Mercury13
    Программист на «си с крестами» и не только
    Нарушение инкапсуляции. Наружу (т.е. public) торчат какие-то данные, которые можно изменить, и объект уходит в противоречивое состояние.

    Инверсия абстракции. Простые вещи, которые, вероятно, понадобятся потомкам, недоступны даже через protected.

    Нарушение принципа Лисков (ломаная абстракция). Для отца вы сделали некое предположение, которое неверно для сыновей. Классический пример — прямоугольник и квадрат — предполагается, что отец может произвольно масштабироваться, что неверно для сына.

    Класс вместо интерфейса. Если можно, родителя делайте классом без данных с двумя видами функций: public virtual = 0, и protected/public не-virtual (т.н. интерфейс с утилитами). Наследоваться от нескольких классов с данными очень некузяво (а во многих языках вообще невозможно).

    Всемогущий родитель. Слишком много функциональности придумали родительскому классу.

    В общем, покажите интерфейсы (protected/public, без точных реализаций) ваших классов, и погоняем, что там неверного.
    Ответ написан
    Комментировать
  • С чего начинать: Спортивное программирование VS Изучение языка программирования?

    @Mercury13
    Программист на «си с крестами» и не только
    Если с твоих пальцев код слетает так легко, что можно уже в спортивное… то почему бы не заняться тем, что нужно в жизни и тем, что тебе нравится? Напиши нечто посложнее, чем арканоид или тетрис!

    Подумай, что тебе в жизни нравится. Скажем, игры. Вот берёшь и пишешь арканоид. Потом арканоид с хитрой физикой. Потом платформерный движок — пускай враги будут каляки-маляки, зато чтобы было интересно бегать-прыгать. Если любишь музыку — придумай какой-нибудь синтезатор или звукопреобразователь. Если фотографируешь — да хоть каталогизатор фотографий! И так далее.

    Если ты пока ещё туг в программировании, пиши что угодно, что пишется, но программировать научись. Спортивное, возможно, тебе и подойдёт, но, вероятно, ты будешь то ли клевать носом на непонятной лекции, то ли постоянно переспрашивать: как это? Сходи на их лекцию, посмотри, каково оно тебе?

    Прогерская работа — не олимпиада. Там много других задач: как это будет выглядеть с точки зрения пользователя? Стоит ли налаживать O(n) или обойтись O(n²)? Джонатан Блоу (автор великого Braid) говорит: 80%, что простейший алгоритм подойдёт, а в отладке он проще. Хотя и хорошие алгоритмы знать тоже надо, хотя бы на уровне теории.
    Ответ написан
    Комментировать