Задать вопрос
  • Почему прямоугольник не является экземпляром класса квадрата?

    @ProkletyiPirat
    ПМСМ авторы привели ЖУТКО НЕПРАВИЛЬНЫЙ пример ООП
    Смотрите
    1)квадрат,
    1.1)имеет переменную A="длина сторон"
    1.2)Имеет функцию площади F=(A^2)

    2)прямоугольник
    2.1)имеет переменную A="длина"
    2.2)имеет переменную B="ширина"
    2.3)Имеет функцию площади F=(A*B)

    3)четырёхугольник
    3.1)имеет переменную A="длина стороны 1"
    3.2)имеет переменную B="длина стороны 2"
    3.3)имеет переменную C="длина стороны 3"
    3.4)имеет переменную D="длина стороны 4"
    3.5)имеет угол Q="угол между сторонами 1 и 2"
    3.6)имеет угол W="угол между сторонами 2 и 3"
    3.7)имеет угол E="угол между сторонами 3 и 4"
    3.8)имеет угол R="угол между сторонами 4 и 1"
    3.9)функция высчитывания площади самопересекающегося четырёхугольника(точнее функция высчитывающая площадь с учётом того что четырёхугольник может быть самопересекающимся)

    А вот теперь ВНИМАНИЕ: В каждом из этих объектов есть что-то что не нужно(излишне) другим объектам, ПОТОМУ данные объекты(классы) не могут быть "наследуемыми" друг от друга.

    А как правильно?
    А правильно сделать "интерфейс"("интерфейс" - это название шаблона(паттерна) проектирования) под названием "объект имеющий площадь" в котором объявить функцию "получить площадь" и сделать 2\3\4\N классов которые будут наследовать данный интерфейс и реализовывать данную функцию.

    p.s.Вообще мне в понимании ООП и того "нахрена это нужно" очень сильно помогли статьи на тему паттернов проектирования, и лично я считаю что одно без другого преподавать нельзя.
    Ответ написан
    2 комментария
  • Какие есть программы для хранения данных в виде дерева?

    @ProkletyiPirat
    Не совсем понятно что конкретно вы хотите, лично я понял как два варианта
    1)вам нужен оутлайнер, персональный информационный менеджер, тогда из мне понравившихся:
    TreeDBNotes Pro 4
    myBase Desktop 7
    Aml Pages
    EssentialPIM
    doogiePIM (интерфейс говно, но функционала больше)
    (тут должен быть "идеал" но его не нашел, а писать свой слишком геморно)

    2)вам нужен файл-менеджер работающий быстрее стандартного и с возможностью добавления плагинов для просмотра файлов, тогда Total Commander и его аналоги
    Ответ написан
    Комментировать
  • Какие есть хорошие записные книжки с древовидной структурой?

    @ProkletyiPirat
    Время от времени пробую разные, идеала не нашел, уже на раз думал запилить "фатальный недостаток" :)
    Из тех что отмечены лучшими:
    1)myBase Desktop
    2)Aml Pages
    3)TreeDBNotes
    Ответ написан
    Комментировать
  • Какой выбрать ноутбук с хорошим аккумулятором?

    @ProkletyiPirat
    сижу на thikpad t420 аккум 9-cell пока был новый держал 10-15 часов при средней нагрузки и оптимизации винды, можно вставить аккумы вместо DVD и ещё подрубить снизу в виде док станции вроде как 30-40ч будет работать

    но ёмкость аккумов каждый год падает примерно в 2 раза, в итоге через 2-3 года при ежедневной нагрузке держит 6ч, 10ч при средней и минимальной нагрузке
    Ответ написан
  • Hello World не может найти класс, что делать?

    @ProkletyiPirat
    public class Hello{
    	public static void main(String args[]) {
    		System.out.println("Hello World");
    	}
    }


    вам же по "русски" пишет "не могу найти метод main в классе, пожалуйста определите метод public static void main(String args[]) " (учитесь пользоваться хотя бы гугл переводчиком)

    а вообще берите книгу по java например: автор Кей Хорстман том 1 и том 2 и учите нормально java
    Ответ написан
  • Как организовать хранение настроек в приложении android?

    @ProkletyiPirat
    примерно такую же проблему сейчас решаю.
    нужно сделать возможность инкрементной (во время выполнения) кастомизации внешнего вида программы, от размера и положения кнопок до их цветовой гаммы, и это не считая настроек того что должны делать эти кнопки. Помимо этого должна быть возможность собрать все настройки в группу и при определённых условиях применить эту группу.


    сейчас всего пара настроек и хранятся они в preferences.

    сначала думал реализовать всё в preferences но из за группировки и условий размер и сложность изменения этих preferences будет мега огромна.
    потом подумал о БД, но тут опять гемморой в добавлении\удалении\изменении как самих настроек так и их количества.

    в общем из-за того что при добавлении новой "фичи" придётся перелопачивать код сразу в нескольких места (и это не считая реализации самой "фичи") отказался от выше озвученных идей.

    но не всё так грустно, пришла в голову вот такая мысль "хранить настройки в формате xml или json". Собственно хранить в виде текста дефолтные настройки в preferences, а групповые в БД.
    Когда настройки понадобятся они парсятся из json-строки в map и передаются куда надо. В итоге имею возможность не трогая сохранение\загрузку\передачу данных в preferences и БД, добавлять настройки фич, нужно только подправлять десериализацию из за вложенности настроек.

    если нет вложенности настроек (вместо map просто набор переменных) то по крайней мере в gson сериализация\десериализация происходит в пару строк кода.
    Ответ написан
  • Какой есть хороший учебник по C++?

    @ProkletyiPirat
    Единственный качественный и от того популярный GUI, в С++, это QT, всё остальное это переходные или устаревшие технологии. То есть если нужен GUI и строго С++ то только QT, альтернатива это C# или Java, где придётся учить новый язык.
    Ответ написан
    7 комментариев
  • ООП - Как понимать Интерфейсы в java?

    @ProkletyiPirat
    идея
    смотрите, вы создаёте объект "Кнопка" и этот объект может изменять своё состояние (нажата кнопка да\нет это и есть состояние). Другие программисты в других проектах будут использовать ваш объект "Кнопка", и эти программисты хотят что бы при изменение состояния что то происходило. При этом вы не знаете что именно должно происходить во всех этих проектах (это знают только их разработчики).

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

    нормальная реализация: пусть сама кнопка вызывает нужные действия, веть она же знает когда её состояние изменилось. Значит кнопка должна вызывать какую-то функцию но при этом не знать что именно эта функция должна делать. Вот тут и приходят на помощь интерфейсы и паттерны проектирования в данном случае Listeners (aka Observers). Вот как раз OnClickListener это и есть интерфейс. Что касается кнопки то она хранит список объектов которые нужно уведомить при изменении состояния, тип этих объектов "OnClickListener". Таким образом "Кнопке" плевать "что где и как" должно происходить при изменении состояния, но при этом она обеспечивает возможность выполнения этого "что где и как" и при этом гарантирует что не произойдёт ошибки из за отсутствия вызываемого метода.

    ru.wikibooks.org/wiki/Java/Listeners
    citforum.ru/SE/project/pattern
    Ответ написан
    3 комментария
  • Как сделать центрирование drawable в button android?

    @ProkletyiPirat
    сам недавно искал ответ на этот вопрос, не нашел.
    Сделал так

    <?xml version="1.0" encoding="utf-8"?>
    
    <FrameLayout
        android:id="@+id/myButton"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/selector_bottom_buttons"
        >
    
        <ImageView
            android:id="@+id/myButton_Image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:contentDescription="@string/text_btnKill"
            android:clickable="false"
            android:focusable="false"
            android:focusableInTouchMode="false"
            />
    
        <TextView
            android:id="@+id/myButton_Text"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="Kill"
            />
    </FrameLayout>


    если размер кнопки строго фиксированный то можно сделать drawable из layer-list и внутри у картинки сделать отступ, но на мой взгляд FrameLayout более простой способ.
    Ответ написан
  • Как сделать многослойный интерфейс приложения Android Xamarin?

    @ProkletyiPirat
    в Android ВСЕ интерфейсы резиновые. и никогда даже не пытайтесь сделать по другому...

    в Android есть FrameLayout в котором можно располагать элементы поверх друг друга, и RealtiveLayout в котором вдобавок можно располагать элементы относительно друг друга. В общем используйте RealtiveLayout с позиционированием относительно других элементов или родителя и отступами внутренними и внешними.
    Ответ написан
  • Java vs C++. Что полезнее?

    @ProkletyiPirat
    смотря что считать "распространенными задачами" ...

    первое что нужно понимать что для каждой задачи свой инструмент, и особенно нужно помнить что инструмент можно применять не по назначению.
    скажем отвёрткой можно забивать гвозди, ей даже можно пользоваться как стамеской или долото, но она для этого не предназначена и используя нормальный инструмент вы будете куда производительнее.

    так например на Java в сравнении с C++ проще и быстрее писать кросс платформенные приложения или много поточные приложения и при этом они будут работать быстрее C++, но зато когда дело касается железок или объёмной работы над памятью то на С++ писать быстрее и проще и работать будет быстрее чем Java.

    а весь цимес в том что не надо говорить "Java" или "C++", надо говорить "Java" и "C++", за счёт того что есть JNI вы спокойно можете вынести все нагруженные вычисления в С\С++, а в Java оставить всё остальное, и получить лучшее из двух миров.
    Ответ написан
    Комментировать
  • Как правильно расставлять фигурные скобки?

    @ProkletyiPirat
    как верно тут заметили главное придерживаться единого стиля...

    лично я когда то давно на хабре увидел такую мысль:

    если и условие и решение простое то пишем в одну строчку
    if (view == null) continue;

    если условие простое, а решение сложное то
    if (isFreeze) {
        setPrevEnabledView(null);
        prevBlock = Block.EMPTY;
        isRun = false;
        if (timer != null) {
            timer.cancel();
        }
    }


    если и условие и решение сложные то
    if ((objectEnabled = mapSettings.get(ATTRIBUTE_COLOR_BACKGROUND_ENABLED)) != null
        | (objectDefault = mapSettings.get(ATTRIBUTE_COLOR_BACKGROUND_DEFAULT)) != null)
    {
        //body
    }
    Ответ написан
    Комментировать
  • На каких сайтах искать первую работу/стажировку?

    @ProkletyiPirat
    как правило работу можно найти только в Москва - Питер, исключений очень мало...
    как альтернатива - фриланс, но нужен свой хотя бы один проект.

    p.s. это касается большинства языков программирования, правда тут тоже есть исключение - web.
    Ответ написан
  • Eclipse vs AndroidStudio: что выбрать?

    @ProkletyiPirat
    про AndroidStudio точнее intellij-idea можно говорить много и очень долго!

    сижу на ней пол года, ненарадуюсь! в прямом смысле не проходит недели что бы я не воскликнул "БОЖЕ, да ты и ЭТО, умеешь?!?!!" причин таких эмоций море достаточно зайти на хабр и почитать про линейку intellij от JetBrains или зайти на ютьюб и глянуть их TV, буквально вчера-позавчера опять статья про PhpStorm и её возможности....

    что касается Eclipse то в нём можно сделать тоже что и в intellij-idea но это нужно ставить 100500 плагинов, а с учётом того что есть бесплатная версия intellij-idea CE и что сама intellij-idea стоит для индивидуального лица 200$ а для фирмы 500$ то надобность в самом Eclipse и плагинов под него отпадает.
    Ответ написан
    Комментировать
  • Какой выбрать ноутбук для работы Android разработчика в районе 600$?

    @ProkletyiPirat
    по моему для разработки подойдёт любой ноут выполняющий следующие условия
    0. ОЗУ=8+гб, CPU=i5 или аналоги
    1.размер от 14 дюймов (меньше неудобно)
    2.удобная клава (опять таки только при размере 14+ получится норм клава)
    3.возможность установить 2-3 венча один из которых SSD а второй HDD от 1TB для хлама (у меня например msata + 2hdd)
    4.долгая работа при средней нагрузке, то есть возможность подрубить один мощный акум или сразу 2-3 акума
    5.относительно прочный
    дополнительным требованием может быть маленький блок питания с длинными проводами.

    на мой взгляд лучшие представители это ThinkPad'ы я со своим t420 могу летом просидеть весь день на лужайке без зарядки. Очень приятно!
    Ответ написан
    Комментировать
  • Какой есть оффлайновый англо-русский словарь на Android?

    @ProkletyiPirat
    а нужен словарь или переводчик? словари не умеют переводить фразы и предложения, только конкретные слова.

    лично я на андройде и винде пользуюсь GoldenDict + скаченные словари RU->RU, RU->EN, EN->RU, EN->EN, wiki(RU), wiki(EN) общий вес где то 15гб, количество словарей не поддаётся исчислению...

    дополнительный профит от словарей это; перевод в конкретной тематике и повышение словарного запаса...

    ru.wikipedia.org/wiki/GoldenDict
    4pda.ru/forum/index.php?showtopic=267685
    goldendict.org
    Ответ написан
    Комментировать
  • Логотип Android (робот), право на использование в рекламном объявлении

    @ProkletyiPirat
    там же установлена ссылка на описание лицензии "the Creative Commons Attribution license"
    там можете изучить все подробности, или почитать на wiki

    ---------------------------------------------
    немного отсебятины
    насколько я помню CC-BY позволяет всё что угодно при: если у исходного продукта(ИП) было указано авторство или лицензия то вы обязаны это сохранить

    то есть
    если у ИП был указан автор "это сделал вася пупкин" то вы обязаны сохранить надпись "это сделал вася пупкин"

    если у исходного названия было указано сокращенное название лицензии "img_name(CC-BY).gif" то вы обязаны сохранить (CC-BY)
    Ответ написан
    3 комментария
  • Есть ли среди резидентов Хабра поклонники iPhone?

    @ProkletyiPirat
    а на кой чёрт сравнивать тех. характеристики? у ios система и программы кушают меньше ресурсов а значит и железо мощное не нужно (так как Objective-C), в андройде DVM построенный на базе JVM и java байт-кода, в результате программы жрут значительно больше, потому и 2,4,8,N ядер и ОЗУ. В итоге работают одинаково...

    Нужно понимать что apple ни когда не придумывала что-то революционное, "всегда было что-то до"
    однако в нашем мире создать это "что-то" это только 5% успеха, а 95% успеха это умение преподнести и продать, и вот тут у apple нету равных! я просто восхищаюсь PR гениальностью джобса! столько разнообразных хитроумных штук он использовал! В итоге и получаем вот это
    Поклонники яблочной продукции не могут аргументированно объяснить чем айфон лучше, они говорят, например, что это "лучший подарок для девушки", что "чувствуется порода", что "у айфона стабильная ОС и плавный, удобный интерфейс" (видимо, они ни разу не держали в руках ни последний Андроид ни Surface)
    Ответ написан
  • Изучение C++ программирование

    @ProkletyiPirat
    взято с wikipedia ...
    // это подключает заголовочный файл iostream
    #include <iostream> 
     
    using namespace std; //где искать cout, cin и т.п.  гуглим что такое namespace
     
    int main()
    {
        cout << "Hello, world!" << endl; // можно и "...\n" вместо endl
        return 0;
    }


    пример 2:

    // это подключает заголовочный файл iostream
    #include <iostream> 
     
    int main()
    {
        /* можно и без namespace */
        std::cout << "Hello, world!" << endl; // можно и "...\n" вместо endl
        return 0;
    }
    Ответ написан
    Комментировать