- •Что такое Java?
- •История создания Java
- •Сложности внутри Sun Microsystems
- •Проект Green
- •Компания FirstPerson
- •Возрождение OaK
- •Java выходит в свет
- •История развития Java
- •Браузеры
- •Сетевые компьютеры
- •Платформа Java
- •Основные версии и продукты Java
- •Заключение
- •Методология процедурно-ориентированного программирования
- •Методология объектно-ориентированного программирования
- •Объекты
- •Состояние
- •Поведение
- •Уникальность
- •Инкапсуляция
- •Наследование
- •Полиморфизм
- •Типы отношений между классами
- •Агрегация
- •Ассоциация
- •Наследование
- •Метаклассы
- •Достоинства ооп
- •Недостатки ооп
- •Заключение
- •Кодировка
- •Анализ программы
- •Пробелы
- •Комментарии
- •Лексемы
- •Виды лексем
- •Идентификаторы
- •Ключевые слова
- •Литералы
- •Целочисленные литералы
- •Дробные литералы
- •Логические литералы
- •Символьные литералы
- •Строковые литералы
- •Null-литерал
- •Разделители
- •Операторы
- •Пример программы
- •Дополнение. Работа с операторами
- •Операторы присваивания и сравнения
- •Арифметические операции
- •Логические операторы
- •Битовые операции
- •Заключение
- •Введение
- •Имена Простые и составные имена. Элементы
- •Имена и идентификаторы
- •Область видимости (введение)
- •Элементы пакета
- •Платформенная поддержка пакетов
- •Модуль компиляции
- •Объявление пакета
- •Импорт-выражения
- •Объявление верхнего уровня
- •Уникальность имен пакетов
- •Область видимости имен
- •"Затеняющее" объявление (Shadowing)
- •"Заслоняющее" объявление (Obscuring)
- •Соглашения по именованию
- •Заключение
- •Введение
- •Модификаторы доступа
- •Предназначение модификаторов доступа
- •Разграничение доступа в Java
- •Объявление классов
- •Заголовок класса
- •Тело класса
- •Объявление полей
- •Объявление методов
- •Объявление конструкторов
- •Инициализаторы
- •Дополнительные свойства классов
- •Метод main
- •Параметры методов
- •Перегруженные методы
- •Заключение
- •Введение
- •Виды приведений
- •Тождественное преобразование
- •Преобразование примитивных типов (расширение и сужение)
- •Преобразование ссылочных типов (расширение и сужение)
- •Преобразование к строке
- •Запрещенные преобразования
- •Применение приведений
- •Присвоение значений
- •Вызов метода
- •Явное приведение
- •Оператор конкатенации строк
- •Числовое расширение
- •Унарное числовое расширение
- •Бинарное числовое расширение
- •Тип переменной и тип ее значения
- •Заключение
- •Статические элементы
- •Ключевые слова this и super
- •Ключевое слово abstract
- •Интерфейсы
- •Объявление интерфейсов
- •Реализация интерфейса
- •Применение интерфейсов
- •Полиморфизм
- •Полиморфизм и объекты
- •Заключение
- •Массивы как тип данных в Java
- •Объявление массивов
- •Инициализация массивов
- •Многомерные массивы
- •Класс массива
- •Преобразование типов для массивов
- •Ошибка ArrayStoreException
- •Переменные типа массив и их значения
- •Клонирование
- •Клонирование массивов
- •Заключение
- •Управление ходом программы
- •Нормальное и прерванное выполнение операторов
- •Блоки и локальные переменные
- •Пустой оператор
- •Оператор if
- •Оператор switch
- •Управление циклами
- •Цикл while
- •Цикл do
- •Цикл for
- •Операторы break и continue
- •Оператор continue
- •Оператор break
- •Именованные блоки
- •Оператор return
- •Оператор synchronized
- •Ошибки при работе программы. Исключения (Exceptions)
- •Причины возникновения ошибок
- •Обработка исключительных ситуаций Конструкция try-catch
- •Конструкция try-catch-finally
- •Использование оператора throw
- •Проверяемые и непроверяемые исключения
- •Создание пользовательских классов исключений
- •Переопределение методов и исключения
- •Особые случаи
- •Заключение
- •Введение
- •Дерево компонентов
- •Положение
- •Видимость
- •Доступность
- •Алгоритм отрисовки
- •Методы класса Graphics для отрисовки
- •Состояние Graphics
- •Clip (ограничитель)
- •Методы repaint и update
- •Прорисовка контейнера
- •Наследники класса Component
- •Класс Canvas
- •Класс Label
- •Класс Button
- •Классы Checkbox и CheckboxGroup
- •Классы Choice и List
- •Классы TextComponent, TextField, TextArea
- •Класс Scrollbar
- •Наследники Container
- •Класс Panel
- •Класс ScrollPane
- •Класс Window
- •Классы Frame и Dialog
- •Класс FileDialog
- •Обработка пользовательских событий
- •Событие ActionEvent
- •События awt
- •Обработка событий с помощью внутренних классов
- •Пример приложения, использующего модель событий
- •Апплеты
- •Жизненный цикл апплета
- •Передача параметров
- •Интерфейс AppletContext
- •Менеджеры компоновки
- •Класс FlowLayout
- •Класс BorderLayout
- •Класс GridLayout
- •Класс CardLayout
- •Заключение
- •Введение
- •Многопоточная архитектура
- •Базовые классы для работы с потоками Класс Thread
- •Интерфейс Runnable
- •Работа с приоритетами
- •Демон-потоки
- •Синхронизация
- •Хранение переменных в памяти
- •Модификатор volatile
- •Блокировки
- •Методы wait(), notify(), notifyAll() класса Object
- •Заключение
- •Введение
- •Классы-обертки
- •Системные классы
- •SecurityManager – менеджер безопасности
- •Потоки исполнения
- •Исключения
- •Заключение
- •Работа с датами и временем Класс Date
- •Классы Calendar и GregorianCalendar
- •Метод set(int field,int value).
- •Метод add(int field,int delta).
- •Метод roll(int field,int delta).
- •Класс TimeZone
- •Класс SimpleTimeZone
- •Интерфейс Observer и класс Observable
- •Коллекции
- •Интерфейсы Интерфейс Collection
- •Интерфейс Set
- •Интерфейс List
- •Интерфейс Map
- •Интерфейс SortedSet
- •Интерфейс SortedMap
- •Интерфейс Iterator
- •Aбстрактные классы, используемые при работе с коллекциями
- •Конкретные классы коллекций
- •Класс Collections
- •Класс Properties
- •Интерфейс Comparator
- •Класс Arrays
- •Класс StringTokenizer
- •Класс BitSet
- •Класс Random
- •Локализация Класс Locale
- •Класс ResourceBundle
- •Классы ListResourceBundle и PropertiesResourceBundle
- •Заключение
- •Система ввода/вывода. Потоки данных (stream)
- •Классы InputStream и OutputStream
- •Классы-реализации потоков данных Классы ByteArrayInputStream и ByteArrayOutputStream
- •Классы FileInputStream и FileOutputStream
- •Классы FilterInputStream и FilterOutputStream и их наследники
- •Сериализация объектов (serialization)
- •Стандартная сериализация
- •Восстановление состояния
- •Граф сериализации
- •Расширение стандартной сериализации
- •Классы Reader и Writer и их наследники
- •Класс StreamTokenizer
- •Работа с файловой системой Класс File
- •Класс RandomAccessFile
- •Заключение
- •Основы модели osi
- •Класс a
- •Класс b
- •Класс c
- •Подсети. Маска подсети
- •Протоколы arp, rarp
- •Утилиты для работы с сетью
- •Пакет java.Net
- •Заключение
Уникальность
Уникальность - это то, что отличает объект от других объектов. Например, у вас может быть несколько одинаковых монет. Даже если абсолютно все их свойства (атрибуты) одинаковы (год выпуска, номинал и т.д.) и при этом вы можете использовать их независимо друг от друга, они по-прежнему остаются разными монетами.
В машинном представлении под параметром уникальности объекта чаще всего понимается адрес размещения объекта в памяти.
Identity ( уникальность ) объекта состоит в том, что всегда можно определить, указывают две ссылки на один и тот же объект или на разные объекты. При этом два объекта могут во всем быть похожими, их образ в памяти может представляться одинаковыми последовательностями байтов, но, тем не менее, их Identity может быть различна.
Наиболее распространенной ошибкой является понимание уникальности как имени ссылки на объект. Это неверно, т.к. на один объект может указывать несколько ссылок, и ссылки могут менять свои значения (ссылаться на другие объекты).
Итак, уникальность (identity) - свойство объекта; то, что отличает его от других объектов (автор не согласен с переводом русского издания [поэтому здесь приводится авторский перевод).
Классы
Все монеты из предыдущего примера принадлежат одному и тому же классу объектов (именно с этим связана их одинаковость). Номинальная стоимость монеты, металл, из которого она изготовлена, форма - это атрибуты класса. Совокупность атрибутов и их значений характеризует объект. Наряду с термином "атрибут" часто используют термины "свойство" и "поле", которые в объектно-ориентированном программировании являются синонимами.
Все объекты одного и того же класса описываются одинаковыми наборами атрибутов. Однако объединение объектов в классы определяется не наборами атрибутов, а семантикой. Так, например, объекты "конюшня" и "лошадь" могут иметь одинаковые атрибуты: цена и возраст. При этом они могут относиться к одному классу, если рассматриваются в задаче просто как товар, либо к разным классам, если в рамках поставленной задачи будут использоваться по-разному, т.е. над ними будут совершаться различные действия.
Объединение объектов в классы позволяет рассмотреть задачу в более общей постановке. Класс имеет имя (например, "лошадь"), которое относится ко всем объектам этого класса. Кроме того, в классе вводятся имена атрибутов, которые определены для объектов. В этом смысле описание класса аналогично описанию типа структуры или записи (record), широко применяющихся в процедурном программировании; при этом каждый объект имеет тот же смысл, что и экземпляр структуры (переменная или константа соответствующего типа).
Формально класс - это шаблон поведения объектов определенного типа с заданными параметрами, определяющими состояние. Все экземпляры одного класса ( объекты, порожденные от одного класса ) имеют один и тот же набор свойств и общее поведение, то есть одинаково реагируют на одинаковые сообщения.
В соответствии с UML (Unified Modelling Language - унифицированный язык моделирования), класс имеет следующее графическое представление.
Класс изображается в виде прямоугольника, состоящего из трех частей. В верхней части помещается название класса, в средней - свойства объектов класса, в нижней - действия, которые можно выполнять с объектами данного класса (методы).
Каждый класс также может иметь специальные методы, которые автоматически вызываются при создании и уничтожении объектов этого класса:
конструктор (constructor) - выполняется при создании объектов ;
деструктор (destructor) - выполняется при уничтожении объектов.
Обычно конструктор и деструктор имеют специальный синтаксис, который может отличаться от синтаксиса, используемого для написания обычных методов класса.
