Наши проекты

Статьи | ООП

Паттернология. Система команд


Святая троица «Инкапсуляция — Наследование — Полиморфизм» — это вершина айсберга под названием ООП. Это всего лишь инструменты для организации взаимодействия между объектами. В этом и есть смысл ООП — не просто создать кучу объектов, а сделать так, чтобы они эффективно взаимодействовали друг с другом. И в данном случае эффективность — это не скорость исполнения программы, а
возможность вносить правки в код максимально быстро, при этом не переписывая тонны кода.
Как я уже отмечал, с «движком для конфигов на LiketEngine» что-то не так. У него есть проблема — хоть он и написан на объектно-ориентированном языке (на самом деле Java уже давно не ОО, а мультипарадигма), он не ОО. В нём нет той ...
Продолжить

Рейтинг:  8  (Против: 0 | За: 8)
Добавил: aRiGaTo

Комментарии (18)

ООП в примерах. Часть 1


Недавно я пообещал написать что-нибудь про ООП. Честно сказать, тема довольно щекотливая, новичку без пяти капель не разобраться. Я не знал, с чего начать, поэтому решил просто начать, а дальше уже, по отзывам, буду решать в какую сторону делать упор.

Итак, я не буду сразу парить вас нудной информацией о том, что такое ООП, где оно используется, зачем и т.д. Сразу открываем среду разработки и пишем код!!

Пишем меню на Canvas.

Вариант 1. Меню без ООП.
NonOopMenu.java
Как видно, мы определили массив строк items для пунктов меню и числовое значение cursor для текущего выделенного элемента. При выборе пункта меню мы просто выводим Alert с текстом этого пункта, всё просто.
  - Ну и норм, без ООП справились, - подумаете вы.
  - Хорошо, а если нам надо ...
Продолжить

Рейтинг:  15  (Против: 1 | За: 16)
Добавил: aNNiMON

Комментарии (18)

Дизайн API библиотеки


На написание данной статьи меня натолкнула библиотека EasyCamera, которая упрощает сложный вызов Android Camera API (статья о ней).
Часто приходится сталкиваться с тем, что для работы той или иной библиотеки необходимо прочитать документацию или поискать подробные примеры её использования. Например, чтобы заставить ту же Android Camera API показать экран видоискателя, нужно вызвать сначала метод setPreviewDisplay(holder), а затем уже startPreview(). Это не всегда очевидно и не очень удобно.
Поэтому при проектировании библиотеки следует учитывать некоторые параметры, а именно:
1. Классы и методы должны быть понятны пользователю (в данном случае пользователем ...
Продолжить

Рейтинг:  3  (Против: 1 | За: 4)
Добавил: aNNiMON

Комментарии (16)

ООП в примерах. Часть 3. Переопределение методов, уровни абстракции


Первая часть
Вторая часть. Наследование.

Пункт меню должен рисоваться на экране. Так почему бы нам не добавить метод отрисовки сразу в класс MenuItem и в его классы-потомки? Передадим этому методу все нужные нам параметры и будем рисовать.
  1. public class MenuItem {
  2.  
  3.     protected static final Font ITEM_FONT = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM);
  4.     protected static final int ITEM_HEIGHT = ITEM_FONT.getHeight() + 5;
  5.  
  6.     protected String name;
  7.  
  8.     public MenuItem(String name) {
  9.         this.name = name;
  10.     }
  11.  
  12.     public String getName() {
  13.         return name;
  14.     }
  15.  
  16.     public void paint(Graphics g,
...
Продолжить

Рейтинг:  7  (Против: 1 | За: 8)
Добавил: aNNiMON

Комментарии (23)

ООП в примерах. Часть 4. Интерфейсы, повторное использование


Первая часть
Вторая часть. Наследование
Третья часть. Переопределение методов, уровни абстракции

Продолжим наше изучение ООП. Давайте создадим сущность Меню и обернём её вокруг наших пунктов, то есть перенесём всё, что касается меню в отдельный класс Menu.
Позиция курсора (int cursor), массив с пунктами меню (MenuItem[] items), отрисовка, обработка клавиш теперь будет в классе Menu. Menu.java
Вместо массива я добавил Vector, чтобы можно было динамически добавлять элементы.

Теперь класс Canvas будет ещё проще:
  1. public class OopMenu5 extends Canvas {
  2.  
  3.     private final
...
Продолжить

Рейтинг:  5  (Против: 1 | За: 6)
Добавил: aNNiMON

Комментарии (24)
Всего: 6
1 2 >>
Категории


Пожертвования

Аноним2800 р.
Freddy1700 р.
NaruTrey800 р.
vlavolk637 р.
GOFMIDO256 р.
  © aNNiMON (Melnik Software)
 
Яндекс.Метрика