MaxSite.org
Блог вебмастера

Java и Android

Реализация паттерна Observer в MVC (Model View Controller) для JavaFX

В продолжении предыдущей статьи «MVC (Model View Controller) в JavaFX», я решил-таки реализовать паттерн Наблюдатель (Observer), чтобы довести работу до логического завершения. За основу я взял код Java с Википедии. Этот пример из книги «Паттерны проектирования» Эрика и Элизабет Фримен, поэтому наверняка все его разбирали.

Пример я немного упростил, поскольку «погодная станция» нам не нужна, а также сделал так, чтобы уведомления могли быть разными.

В конце статьи вы найдете исходные коды для загрузки.

Читать дальше...

MVC (Model View Controller) в JavaFX

MVC (Model View Controller / Модель Представление Контроллер) — это даже не паттерн, который имеет понятную реализацию (с примером кода), а некая концепция, призванная упростить разработку, поддержку и изменение программы. Именно поэтому все примеры кода имеют отношение только к конкретно решаемой задаче. Более того, реализация будет ещё зависеть и от используемого языка — в некоторых случаях «классическое» применение MVC может только усложнить код.

Я всегда воспринимал MVC как алгоритм, в котором определяются сущности под определенную задачу. До начала изучения Java, мне как-то не было особой нужды вдаваться во все эти тонкости, поскольку на Delphi, PHP или JavaScript нет ограничений и жестких рамок: задачу можно решать любыми способами. Но Ява заставляет использовать только классы ООП, а значит неизбежно возникает задача на логическое разделение кода.

Читать дальше...

Визуальное программирование на Java

Почти все книги и уроки по Java для новичков начинаются с описания ООП: какой он замечательный с великолепный. Понятно, поскольку в Яве просто невозможно любое другое программирование, кроме как объектно-ориентированное, то вначале предлагается освоить 40..80 страниц безумных аналогий с иерахией кошечек/собачек/уточек/автомашин, и только после этого предлагается написать «Hello, World!». :-)

При этом стоит заметить, что абсолютно всё обучение Java строится на примитивнейшем выводе результата на консоль. То есть не консольное приложение в привычном понимание, а именно вывод каких-то данных построчно. Ну вот например Turbo Pascal 3.0 вышел в 1985 году и в нём уже была поддержка графических режимов. В 1990 году появился Turbo Vision — очень крутая вещь — аля-Windows только для DOS. А в Яве в 2018 году возможен только вывод на консоль. И вот вся эта восторженность и крутость как-то вдребезги разбивается уже на этапе «Hello, World!»... Хуже наверное это только развлекаться на программируемом калькуляторе МК-61 или МК-52 — а что? там такой же построчный вывод.

Но, самое забавное — это то, что на Java реально можно создавать программы используя визуальное программирование! Я об этом узнал только когда прочитал (или скорее ознакомился) с 500 страничной книгой, где в одной из последних глав, вдруг выяснилось, что для Java существуют нормальные GUI (графические интерфейсы пользователя) и можно оформлять программы с кнопочками, полями ввода и нормальными меню. Спрашивается: зачем вы столько времени «мурыжили» эту паршивую консоль, когда можно было сразу всё делать красиво и аккуратно?

(Дальше много картинок!)

Читать дальше...

Как скомпилировать java-файл из консоли

Компиляция java-программы без проблем работает ровно до того момента, пока не потребуется создать что-то сложнее одного файла в проекте. Когда я попытался использовать два java-файла в разных каталогах, компилятор напрочь отказался работать, выдавая загадочные сообщения вроде «cannot find symbol»: чисто интуитивно я понял, что он просто не видит второй исходный файл.

Что может означать команда import(импорт)? Опять же интуитивно — это какой-то импорт из другого файла, например его подключение. В Java это означает лишь «расширение» области видимости — эдакое namespace, которое призвано исключить конфликт одинаковых имён. Никакого импорта здесь и в помине нет.

Другой пример — что такое package(пакет)? Какой-то пакет — набор модулей, файлов под одним именем, может архив. Ан, нет! В Jave к пакетам это никакого отношения не имеет — это всего лишь каталог. Причём каталог, который указывается в полном имени. Или чтобы его не указывать (частично), нужно задать его в import. О как!

При чём тут компиляция? А при том, что компилятор не шибко умный: чтобы он нормально заработал потребуется указать дополнительные параметры, которые завязаны на каталоги, файлы и классы (читай: «package» и «import»).

Читать дальше...

Как я начал изучать Java и Android

Видимо на Солнце были сильные вспышки, а может летняя жара так подействовала, но что-то меня дёрнуло поизучать программирование под Андроид. А там где Андроид, то там и Ява. Ну а почему бы и нет? — решил я, тем более что программированием я занимаюсь почти всю жизнь, а новый язык — дело наживное. Я неоднократно встречал утверждение, что Java — это только второй язык программирования, к нему следует приступать, когда в багаже знаний уже есть другие языки. И, забегая вперёд, скажу, что это очень верное замечание, поскольку программировать на Яве (или Джаве?) можно не только понимая основные принципы ООП, но и уметь принимать все явовские «отклонения» от того, к чему мы мы привыкли.

Лично я не понимаю как вообще можно изучать Яву в качестве первого языка программирования, поскольку первая программа «Hellо, World!» приводится лишь на 80-й странице описания. :-)

Впрочем это уже из другой истории, в своих заметках я привожу лишь забавные «нестыковки» и всё то, с чем мне прийдется столкнуться при изучении Java. Поскольку я сейчас в роли «зелёного» новичка, то читая эти строки через месяц или год, сам буду удивляться какой был «баран». :-) Пусть это будет просто забавным чтивом без каких-либо претензий на истину. ;-)

Читать дальше...