Cамоучитель по Java

       

Краткий курс по Нечеткой Логике и Нечеткому Управлению

Нечеткая логика применяется как выгодный инструмент для управления систем подземки и комплексных индустриальных процессов, также для домашнего хозяйства и электроники развлечения, систем обнаружения ошибок и других экспертных систем. Хотя, Нечеткая Логика была изобретена в Соединенных Штатах,  быстрый рост этой технологии начался в Японии и теперь снова достиг США и Европы также.
Нечеткая Логика все еще быстро развивающаяся в Японии, количество патентов увеличивается по экспоненте. Основная часть имеет дело довольно с простыми приложениями Нечеткого Управления.
Нечеткость стало ключевым словом для маркетинга. Электронные статьи без нечеткого компонента постепенно, окажется,  мертвая акция. Пример, который показывает,  популярность Нечеткой Логики, даже существует туалетная бумага с " Нечеткой Логикой " напечатанный на ней.

Нечеткая логика - новая мощная технология
Решение прикладных задач на компьютере
Нечеткое сравнение коллекций: семантический и алгоритмический аспекты
Классификация коллекций
Сравнение списков
Сравнение упорядоченных множеств
Сортированные последовательности
Коллекции прямых и инверсных ассоциаций


Cамоучитель по Java

Как вы знаете, программа, написанная на одном из языков высокого уровня, к которым относится и язык Java, так называемый исходный модуль ("исходник" или "сырец" на жаргоне, от английского "source"), не может быть сразу же выполнена. Ее сначала надо откомпилировать, т. е. перевести в последовательность машинных команд — объектный модуль.
Но и он, как правило, не может быть сразу же выполнен: объектный модуль надо еще скомпоновать с библиотеками использованных в модуле функций и разрешить перекрестные ссылки между секциями объектного модуля, получив в результате загрузочный модуль — полностью готовую к выполнению программу.
Исходный модуль, написанный на Java, не может избежать этих процедур, но здесь проявляется главная особенность технологии Java — программа компилируется сразу в машинные команды, но не команды какого-то конкретного процессора, а в команды так называемой виртуальной машины Java (JVM, Java Virtual Machine).

Java в Internet
Оказалось, что на Java можно создавать полноценные приложения. Их графические элементы стали оформлять в виде компонентов — появились JavaBeans, с которыми Java вошла в мир распределенных систем и промежуточного программного обеспечения, тесно связавшись с технологией CORBA.

Логический тип
Значения логического типа boolean возникают в результате различных сравнений, вроде 2 з, и используются, главным образом, в условных операторах и операторах циклов. Логических значении всего два: true (истина) и false (ложь). Это служебные слова Java.

Принципы объектно-ориентированного программирования
Первые, даже самые простые программы, написанные в машинных кодах, составляли сотни строк совершенно непонятного текста. Для упрощения и ускорения программирования придумали языки высокого уровня: FORTRAN, Algol и сотни других, возложив рутинные операции по созданию машинного кода на компилятор. Те же программы, переписанные на языках высокого уровня, стали гораздо понятнее и короче. Но жизнь потребовала решения более сложных задач, и программы снова увеличились в размерах, стали необозримыми.

Права доступа к членам класса
Чтобы создать пакет надо просто в первой строке Java-файла с исходным кодом записать строку package имя; , например: package mypack; Тем самым создается пакет с указанным именем mypack и все классы, записанные в этом файле, попадут в пакет mypack

Числовые классы
В каждом из шести числовых классов-оболочек есть статические методы преобразования строки символов типа string лредставляющей число, в соответствующий примитивный тип: Byte.parseByte(), Double.parseDouble(), Float.parseFloat(), Integer.parselnt(), Long.parseLong(), Short.parseShort()

Как найти подстроку
Поиск всегда ведется с учетом регистра букв.Первое вхождение подстроки sub в данную строку this отыскивает метод indexof (String sub). Он возвращает индекс первого символа первого вхождения подстроки sub в строку или -1, если подстрока sub не входит в строку this

Класс Vector
В классе vector из пакета java.uti i хранятся элементы типа object , а значит, любого типа. Количество элементов может быть любым и наперед не определяться. Элементы получают индексы 0, 1, 2, .... К каждому элементу вектора можно обратиться по индексу, как и к элементу массива.

Взаимодействие с системой
Восемнадцать статических методов сортируют массивы с разными типами числовых элементов в порядке возрастания чисел или просто объекты в их естественном порядке.

Иерархия классов AWT
Как видите, библиотека графических классов AWT очень велика и детально проработана. Это многообразие классов только отражает многообразие задач построения графического интерфейса. Стремление улучшить интерфейс безгранично. Оно приводит к созданию все новых библиотек классов и расширению существующих. Независимыми производителями создано уже много графических библиотек Java: KL Group, JBCL, и появляются все новые и новые библиотеки.

Преобразование координат
При создании контекста в нем задается текущий цвет для рисования, обычно черный, и цвет фона области рисования — белый или серый. Изменить текущий цвет можно методом setcoior (Color newCoior), аргумент newcoior которого — объект класса Color. Узнать текущий цвет можно методом getcolor (), возвращающим объект класса color.

Класс Cursor
Класс component — центр библиотеки AWT — очень велик и обладает большими возможностями. В нем пять статических констант, определяющих размещение компонента внутри пространства, выделенного для компонента в содержащем его контейнере: BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT, И ОКОЛО СОТНИ МеТОДОВ

Менеджер BorderLayout
Все менеджеры размещения написаны полностью на языке Java, в состав SUN J2SDK входят их исходные тексты. Если вы решили написать свой менеджер размещения, реализовав интерфейс LayoutManager или LayoutManager2, то посмотрите эти исходные тексты.

Событие ItemEvent
Это простое событие означает, что надо выполнить какое-то действие. При этом неважно, что вызвало событие: щелчок мыши, нажатие клавиши или что-то другое.

Всплывающее меню
Его команды зависят от компонента, на котором была нажата кнопка мыши. В языке Java всплывающее меню — объект класса Рорирмепи. Этот класс расширяет класс Menu, следовательно, наследует все свойства меню и пункта меню Menultem. Всплывающее меню присоединяется не к строке меню типа MenuBar или к меню типа Menu в качестве подменю, а к определенному компоненту. Для этого в классе component есть метод add(PopupMenu menu).

Параметры тега applet
С увеличением скорости и улучшением качества компьютерных сетей значение апплетов сильно упало. Теперь вся обработка данных, прежде выполняемая апплетами, переносится на сервер, браузер только загружает и показывает результаты этой обработки, становится "тонким клиентом".

Изменение составляющих цвета
В библиотеке AWT применяются две модели обработки изображения. Одна модель реализует давно известную в программировании общую модель "поставщик-потребитель" (Producer-Consumer). Согласно этой модели один объект, "поставщик", генерирует сам или преобразует полученную из другого места продукцию, в данном случае, набор пикселов, и передает другим объектам. Эти объекты, "потребители", принимают продукцию и тоже преобразуют ее при необходимости. Только после этого создается объект класса image и изображение выводится на экран.

Часть заголовка метода throws
Обработка исключительных ситуаций стала сейчас обязательной частью объектно-ориентированных программ. Применяя методы классов J2SDK и других пакетов, обращайте внимание на то, какие исключения они выбрасывают, и обрабатывайте их. Исключения резко меняют ход выполнения программы, делают его запутанным. Не увлекайтесь сложной обработкой, помните о принципе KISS.

Синхронизация подпроцессов
Технология Java по своей сути — многозадачная технология, основанная на threads. Это одна из причин, по которым технология Java так и не может разумным образом реализоваться в MS-DOS и Windows 3.1, несмотря на многие попытки.

Печать в Java
Для вывода на консоль мы всегда использовали метод printino класса Pnntstream, никогда не определяя экземпляры этого класса. Мы просто использовали статическое поле out класса system, которое является объектом класса PrintStream. Исполняющая система Java связывает это поле с консолью.

Работа по протоколу TCP
Среди программного обеспечения Internet большое распространение получила информационная система WWW (World Wide Web), основанная на прикладном протоколе HTTP (Hypertext Transfer Protocol). В ней используется расширенная адресация, называемая URL (Uniform Resource Locator).

Архиватор jar
Для упаковки нескольких файлов в один архивный файл, со сжатием или без сжатия., в технологии Java разработан формат JAR. Имя архивного jar-файла может быть любым, но обычно оно получает расширение jar. Способ упаковки и сжатия основан на методе ZIP. Название JAR (Java ARchive) перекликается с названием известной утилиты TAR (Tape ARchive), разработанной в UNIX.

Платформа программирования J2ME для портативных устройств

Глава 1 познакомит вас с компьютерной платформой J2ME. В ней приводится большинство терминов, связанных с J2ME, и дается общая ориентация в понятиях, которые связаны с устройством и организацией платформы J2ME.
В главе 2 описывается процесс разработки приложений на J2ME. Вы узнаете, как создавать, компилировать, подготавливать, выполнять и отлаживать приложения на J2ME. В этой главе не описывается инструментарий или API. Описание этих элементов начинается в главе 3.
В главе 3 описывается платформа J2ME MIDP с точки зрения разработчика программного обеспечения. Здесь вы познакомитесь с организацией API, базовыми обобщенными понятиями программирования и моделями, характеризующими платформу MIDP.
Глава 4 продолжает тему главы 3. В ней затронут высокоуровневый программный интерфейс приложения (API) в MIDP, который заключает в себе набор компонентов UI, определяемых MIDP. Вы узнаете, как манипулировать различными компонентами UI, а также как выполнять обработку событий, называемую command processing в терминологии MIDP.
В главе 5 описа'ны компоненты пользовательского интерфейса (UI) MIDP. После изучения базовых обобщенных понятий, определяемых MIDP и описанных в главе 4, вы готовы к изучению того, как использовать компоненты, которые строятся на основе этих обобщений.
В главе 6 описывается низкоуровневый программный интерфейс приложения (API) в MIDP, который реализуется остальными компонентами UI MIDP, не описанными в главе 5.
В главе 7 описываются механизмы постоянного хранения, доступные вам благодаря MIDP.
Глава 8 посвящена организации сетей и коммуникаций. Здесь вы узнаете, как использовать службы организации сети и распределенной обработки данных и функциональные возможности, определяемые CLDC и MIDP. Вы также получите некоторое понятие о решениях создания и поддержки служб связи в J2ME.
Глава 9 знакомит вас с интернационализацией. Это вопрос значительной ширины и глубины, который требует даже более, чем отдельной посвященной ему книги. Здесь вы узнаете о некоторых проблемах, с которыми вы столкнетесь при создании практически применимых приложений MIDP. В этой главе описывается степень поддержки интернационализации в CLDC и MIDP и показано несколько примеров того, как использовать эти свойства. Вы также узнаете, как сконфигурировать ваше устройство для поддержки интернационализации и локализации.
В главе 10 описываются управление приложениями и системы инициализации. Теоретическое знакомство с этими системами важно для разработчика приложений на J2ME, особенно MIDP-разработчиков, поскольку эти системы влияют на ваше взаимодействие с поставщиками приложений и оперативной информации, поставщиками беспроводных сетей и даже с конечными пользователями.
В главе 11 описывается среда беспроводного Интернета. В ней описывается интеграция между беспроводными и стационарными сетями, беспроводной Интернет с точки зрения разработчика приложений, и среда, в которой выполняется приложение. Вы получите представление о беспроводных шлюзах Интернета, интерфейсах интернет-порталов, а также интерфейсах и службах беспроводных приложений - все, с чем вы, вероятно, столкнетесь как разработчик беспроводных приложений. Эта глава также знакомит разработчика приложений J2ME с базовыми понятиями об архитектуре и тем, как они действуют.

Введение
Вы можете скачать J2ME Wireless Toolkit и полную API-документацию, следуя ссылкам на Java Developer Connection с адреса java.sun.com/. Там вы найдете полную API-документацию для CDC, профиля Foundation Profile и CLDC/MIDP, а также инструментарий для всех платформ, таких, Платформа программирования J2ME для портативных устройств как Solaris, Linux, Windows NT и Windows 2000.

Знакомство с платформой Java 2 Micro Edition (J2ME)
Конфигурация J2ME определяет минимальную Java-платформу для семейства устройств. Все члены данного семейства имеют сходные требования к памяти и производительности. Конфигурация является на самом деле спецификацией, которая определяет доступные ресурсы системного уровня, такие, как набор свойств языка Java, характеристики и свойства имеющейся виртуальной машины и минимальные библиотеки Java, которые поддерживаются. Разработчики программного обеспечения могут рассчитывать, что определенный уровень системной поддержки будет доступен для семейства устройств, которое использует определенную конфигурацию.

Процесс разработки приложений MIDP
Прежде чем вы приступите к самому циклу разработки, вы должны сначала создать структуру директорий, которая будет поддерживать разработку вашего набора MID-летов. Набор MID-летов - это комплект MID-летов, которые используют общие ресурсы приложений. Вы получите более подробную информацию об этих общих ресурсах MID-летов в следующих главах книги.

Программная структура приложений MIDP
Запуск эмулятора. Вы увидите появившееся окно, которое имитирует интерфейс устройства. Если вы используете J2MEWTK версии 1.0.2, вы заметите, что эмулятор просто выполняет приложение HelloWorld, потому что это единственное приложение, присутствующее в наборе. На рисунке 3.1 показано главное окно выполнения этого MID-лета. Однако, если у вас J2MEWTK версии 1.0.3, вы увидите список выбора из всех MID-летов, даже если он у вас один. Добавьте вторую версию программы, названную HelloWorld2, к набору MID-летов. Вы можете начать этот процесс, нажав на кнопку Settings... (Параметры...) на основном окне инструментария

Oбpaбoткa кoмaнд
Высокоуровневый API MIDP поддерживает обработку событий с помощью использования команд. Команда представляет из себя действие пользователя - например, что-то, что пользователь делает на экране, к примеру, нажимает функциональную клавишу. Событие - это проявление результата действия. События могут представлять собой вызов команды в ответ на действие пользователя.

Компоненты пользовательского интерфейса MIDP
Вы знаете, что класс Displayable определяет природу основы любого компонента, который может быть отображен, и что класс Screen определяет базовую абстракцию пользовательского интерфейса MIDP - экран. Класс Screen является первым Displayable, который вы видели, a Form был первым конкретным типом используемого экрана.

Низкоуровневый программный интерфейс приложения (API) MIDP
Компоненты Canvas сами являются источниками низкоуровневых событий клавиш и указателя, которые генерируются действиями пользователя по вводу с клавиатуры и перемещением указателя на устройстве. Они также являются своими собственными блоками прослушивания низкоуровневых событий. Класс Canvas определяет интерфейс для обработки низкоуровневых событий как часть своего собственного API, другого интерфейса блока прослушивания не реализуется.

Поддержка постоянного хранения в MIDP
Каждое соответствующее требованиям MIDP устройство поддерживает выделенную область памяти для постоянного хранения данных приложения. Данные MID-лета, хранящиеся там, постоянно существуют при множестве инициализаций приложения, которое их использует. Как физическое местоположение, так и размер хранилища данных зависят от устройства.

Организация сетей и коммуникации в MIDP
В MIDP, как и в J2SE, потоки ввода-вывода являются наиважнейшим механизмом, доступным приложениям, для чтения и записи потоков данных. Как J2SE, так и J2ME имеют пакет java.io, который содержит эти классы потоков. Кроме того, MIDP имеет пакет javax.microedition.io, который поддерживает сетевую работу и коммуникации в приложениях MIDP. Этот пакет отличается от пакета java.net J2SE, который определяет поддержку сетевой работы на данной платформе.

Интернационализация
Интернационализация - это действия программного обеспечения по соблюдению географического, лингвистического и культурного контекста, определяемого средой исполнения. Термин интернационализация иногда сокращается как i18n, потому что 18 букв в этом слове между буквами i и n опускаются.

Инициализация приложений
Для того чтобы инициализировать приложения на своих устройствах, пользователям нужна возможность обнаружения, выбора, покупки, загрузки и установки приложений с помощью своих мобильных устройств. Поскольку мобильные устройства не всегда имеют возможность соединения с какой-либо сетью или другим устройством посредством каких-либо способов, за исключением радиоинтерфейса, поддерживаемого беспроводной сетью, транспортировщики должны поддерживать установку приложений MIDP по воздуху (over-the-air (OTA)). Во время написания данной книги инициализация ОТА являлась краеугольным камнем инициализации приложений для мобильных устройств.

Среда беспроводного Интернета
Термины беспроводный Web и беспроводный Интернет относятся к среде, в которой беспроводные радиоустройства могут получать доступ к World Wide Web и Интернету. Эти термины являются чем-то абстрактным по той причине, что они не несут информации об архитектуре или физической природе среды. Беспроводной Интернет, как и Интернет, является сетевым комплексом, объединением сетей. Однако, в отличие от Интернета, это объединение беспроводных и проводных сетей.

Приложение
Абстрактный оконный инструментарий (Abstract Window Toolkit (AWT) - определяет инструменты программирования графического интерфейса пользователя (GUI) для программ Java. Архитектура приложения (application architecture) - описание интерфейсов, взаимосвязей и состава структурных элементов системы программного обеспечения.