Скачать 138.77 Kb.
|
Основы программирования на JAVA.
•Классы инкапсулируют атрибуты (поля) и поведение(методы) •Классы могут быть независимы друг от друга •Атрибуты и методы являются членами класса •Члены класса могут принадлежать всему классу. В этом случае поля и методы помечаются ключевым словом static •Для доступа к статическому атрибуту (класса) используется имя класса, для доступа к атрибуту экземпляра - имя экземпляра. •В статических методах класса можно использовать только статические атрибуты класса и вызывать только статические методы класса. •Члены класса могут принадлежать конкретным объектам. В этом случае они называются полями и методами экземпляров класса •Классы инкапсулируют атрибуты (поля) и поведение(методы) • Классы могут быть связаны отношением наследования. (cуперкласс/подкласс). • Конструктор – метод который создает экземпляр класса. Имя конструктора совпадает с именем класса. Допустимы несколько конструкторов с различными параметрами • Конструктор используется для инициализации объектов • Тело класса содержит по меньшей мере один конструктор • Конструктор возвращает указатель на созданный объект. Оператор return в конструкторе отсутствует • Для создания экземпляров класса используется ключевое слово new с именем конструктора King piece = new King(); • Умалчиваемый конструктор не имеет аргументов. Предоставляется по умолчанию платформой Java если нет ни одного явно определенного конструктора • При определении хотя бы одного явного конструктора необходимо объявить явно и умалчиваемый конструктор • Цепочка конструкторов - вызов внутри класса одного конструктора другим. Используется для разделения общего кода между конструкторами • Вызов цепочки конструкторов: this(список аргументов • Объекты суперкласса строятся до построения объекта- подкласса • Для инициализации членов суперкласса используется вызов: - super(список-аргументов) • Первой строкой конструктора могут быть: - super(список-аргументов) - this(список-аргументов) • В одном конструкторе нельзя использовать одновременно и super и this • Компилятор предоставляет неявный вызов конструктора super() для всех конструкторов подклассов • Приложение не может быть выполнено без хотя бы одного класса с методом main • Виртуальная машина Java загружает класс и начинает выполнение с метода main • Статические поля и методы принадлежат классу • При изменении статического значения одним из объектов данного класса изменяется значение для всех объектов данного класса • Статические методы и поля могут быть доступны без создания экземпляров класса
• Логически связанные классы группируются в пакеты •Классы могут реализовывать один и более интерфейсов •Различные пакеты могут иметь классы с одинаковыми именами •По соглашению имена пакетов задаются в нижнем регистре •Для ссылки на классы в том же пакете можно использовать только имя класса •Для ссылки на классы из других пакетов необходимо использовать полностью квалифицированное имя класса • Предложение import используется для того, что бы сделать классы непосредственно доступными •В одном файле с расширением *.java не может быть более одного публичного класса ^ •Модификатор public Класс доступен для всех других классов. Отсутствие модификатора означает доступность класса только классам внутри пакета содержащего данный класс. •Модификатор private Этот модификатор допустим только для классов, которые вложены в другие классы •Модификатор abstract Запрет на создание экземпляров класса •Модификатор final Запрет на создание подклассов данного класса
•Каждый подкласс наследует поля суперкласса и всех классов расположенных выше в иерархии наследования •Каждый подкласс наследует методы суперкласса. Объект будет понимать все сообщения (вызов методов) его класса и суперклассов •Имеется возможность дополнить или изменить поведение суперкласса перекрытием в подклассе унаследованного метода • Перекрывающий метод должен иметь то же имя и список параметров (сигнатуру) • Метод подкласса может заменять или уточнять метод суперкласса ^ •Список параметров должен совпадать со списком параметров перекрываемого наследуемого метода суперкласса •Тип возвращаемого результата должен совпадать с типом возвращаемого результата метода суперкласса •Модификатор доступа в суперклассе не может быть более ограничительным, чем модификатор доступа в подклассе. Пример. При перекрытии метода с модификатором protected, новый метод может быть protected или public, но не private ^ •Вызываться могут только конструкторы класса, экземпляр которого создается, либо конструктор непосредственного суперкласса • Для вызова конструктора суперкласса используется ключевое слово super и список параметров конструктора • Для вызова конструктора того же класса используется ключевое слово this и список параметров конструктора • Первой строкой конструктора может быть одна из: this() , super() •Вызов конструктора через this() или super() допустим только в конструкторе ^ private – доступ ограничен классом в котором объявлен данный член класса. private int x; default (без модификатора) – доступ ограничен пакетом, в котором данный класс объявлен. int y; protected – доступ ограничен пакетом, в котором данный класс объявлен, и подклассами данного класса p ^ Создание и удаление •классов, методов, переменных Перемещение методов и переменных: •вниз/вверх по иерархии наследования • перемещение в другой класс Реорганизация • Иерархии наследования • Кода методов Основа рефакторинга – обобщение. Абстракции находятся снизу вверх проверкой множества конкретных примеров • Поиск методов с различными именами, но имеющими схожее поведение • Параметризация различий у методов • Разделение больших методов на методы меньшего размера, но допускающие большее переиспользование • Выполняется во время сопровождения, тестирования,кодирования rotected void setName(String name) {…} public – доступ для всех классов всех пакетов public String getName() {…} Полиморфизм: • Переменной может быть присвоен объект типа переменной, либо объект типа – подкласс типа переменной: • Любой объект может быть присвоен переменной типа Object, поскольку он самый верхний в иерархии объектов ^ •Модификатор abstract Запрет на создание экземпляров класса •Модификатор final Запрет на создание подклассов данного класса Полиморфизм: • Переменной может быть присвоен объект типа переменной, либо объект типа – подкласс типа переменной: TextFile file = new TextFile(); TextFile file = new EncryptedFile(); TextFile file = new; PropertiesFile(); • Любой объект может быть присвоен переменной типа Object, поскольку он самый верхний в иерархии объектов Object anything = new AnyType();
• Интерфейс – именованный список объявлений методов Методы только объявляются, а не реализуются Интерфейс похож на абстрактный класс, но тем не менее отличается от него • Объявляемые в Java типы либо классы, либо интерфейсы • Методы объявленные в интерфейсе реализуются в классе, поддерживающим данный интерфейс • Объявление суперкласса всегда предшествует объявлению интерфейсов реализуемых классом: • Если класс реализует несколько интерфейсов, то имена этих интерфейсов перечисляются через запятую: ^ • Типом переменной и параметра может быть интерфейс • Переменной и параметру может быть присвоен только объект, реализующий этот интерфейс • Переменная и параметр могут быть использованы только для вызова методов, определенных в интерфейсе • Имя интерфейса не может быть в выражении new ^ • Между интерфейсами возможно отношение наследования • Интерфейс, расширяющий другой интерфейс, наследует все объявления методов интерфейса - предка • Иерархия наследования интерфейсов независима от иерархии наследования классов interface File { public void open(String name); public void close(); } interface ReadableFile extends File { public byte readByte(); } interface WritableFile extends File { public void writeByte(byte b); } interface ReadWriteFile extends ReadableFile, WritableFile { public void seek(int position); } Использование интерфейсов • Использование интерфейсов позволяет Использовать полиморфизм независимо от иерархии классов Осуществлять доступ к методам в отдельных независимых деревьях классов Использовать в переменных и параметрах объекты не связанные иерархией наследования классов • Классы, реализующие один и тот же интерфейс, понимают те же самые сообщения независимо от положения в иерархии классов
^ • Событие или условие которое нарушает нормальных ход выполнения программы • Условие, которое приводит к порождению (throw) исключения системой • Поток управления прерывается и обработчик исключения будет перехватывать (catch) исключение Обработка исключения объектно-ориентированная • Локализует в объекте стандартные условия выполнения программы • Предоставляет простой способ сделать программу более надежной • Позволяет разделить нормальный и ненормальный ход выполнения программы ^ • Источник исключений виртуальная машина Java Не может быть загружен класс Используется нулевая (null) ссылка на объект • Ситуацию может породить и код, который пишет программист, и класс, который программист использует IOError Деление на ноль Проверка корректности данных Исключение обусловленное логикой работы программы • Если исключение не перехвачено, оно завершает работу программы ^ •Throwable – базовый класс, предоставляющий общий интерфейс и реализацию большинства исключений •Error – отмечает серьезные проблемы,которые не могут быть перехвачены •Exception – описывает класс условий, которые должны быть перехвачены или описаны как порождаемые • RuntimeException – это исключение может быть порождено при нормальном выполнении виртуальной машины • ArithmeticException • BufferOverflowException ^ • Порожденные исключения обрабатываются либо в методе, в котором они были порождены, либо делегируются в вызывающий метод • throws – фрагмент объявления метода, содержащий список исключений который могут быть делегированы вверх по стеку вызовов public int doIt() throws SomeException, … • try – представляет блок кода с присоединенными обработчиками ошибок. Ошибки в try-блоке будут обработаны обработчиками ошибок • catch – блок кода для обработки конкретного исключения • finally – необязательный блок который следует после блоков catch. Выполняется всегда независимо от того, какое исключение порождено и было ли оно порождено • throw – явно порождает исключение throw new SomeException(); • Не рекомендуется использовать утверждения Для проверки аргументов в публичных методах. Для этого требуются RuntimeException, например IllegalArgumentException • Рекомендуется использовать утверждения для проверки Внутренних инвариантов (значения, которые никогда не должны возникать). Например, вставить default: assert false в конец выбирающего предложения Инварианты потоков управления. Например, вставить assert false в те части программы, которые никогда не должны быть достигнуты Предусловия, постусловия и инварианты классов.Например, проверка аргументов скрытых методов • Две формы утверждений assert • Если утверждение ложно первая форма утверждения порождает исключение AssertionError без сообщений вторая форма утверждения порождает исключение AssertionError с сообщением, определенным при вычислении второго выражения • По умолчанию утверждения не работают (игнорируются). Для их включения необходимо в командной строке java использовать ключ enableassertions • Утверждения включаются/выключаются для классов/пакетов
JCF - унифицированная архитектура для представления и манипулирования коллекциями •Уменьшает усилия по программированию • Уменьшает усилия по изучению и использованию нового API • Увеличивает скорость и надежность программы • Допускает переносимость среди связанных API Состоит из трех частей: Интерфейсы Реализации Алгоритмы Интерфейсы – абстрактные типы данных представляющие коллекции. Назначение коллекций: позволить манипулирование коллекциями независимо от их деталей их представления предоставить точки расширения для добавления новых типов коллекций и их реализаций • Реализации – конкретная реализация интерфейса коллекции • Алгоритмы – методы, выполняющие полезные вычисления над объектами, которые реализуют интерфейс коллекций. Например, поиск и сортировку. Предоставляют повторно используемую функциональность посредством полиморфизма – один алгоритм для разных реализаций Этот универсальный интерфейс для изменения коллекций и прохода по элементам коллекций • |
![]() | В частности, в курсе рассматриваются основные конструкции языков программирования, анализируются основные типы и структуры данных,... | ![]() | Но нет появился еще один, с названием Java. Этот язык сумел получить весьма заметную известность за последние несколько лет, так... |
![]() | Си либо к императивно-объектным языкам. Императивные языки расширены объектной парадигмой – C++, Java, C#, Delfi и многие другие.... | ![]() | Из Open-Source продуктов мы решили начать обзор с java ориентированной системы Openwfe |
![]() | Программа предназначена для обучения основам программирования на языке низкого уровня Ассемблере учащихся средних школ, учреждений... | ![]() | Б73 Основы программирования на языке Си++: Для студентов физико-математических факультетов педагогических институтов. – Коломна:... |
![]() | Б73 Основы программирования на языке Си++: Для студентов физико-математических факультетов педагогических институтов. Коломна: кгпи,... | ![]() | Б73 Основы программирования на языке Си++: Для студентов физико-математических факультетов педагогических институтов. Коломна: кгпи,... |
![]() | Все реализации Java должны эмулировать jvm, чтобы создаваемые приложения могли выполняться на любой системе, включающей виртуальную... | ![]() | Поскольку Dudge является веб-приложением, для его запуска необходим сервер приложений. В качестве сервера приложений Dudge использует... |