Презентация Java. SE. 02. Object-oriented programming in Java онлайн

На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Java. SE. 02. Object-oriented programming in Java абсолютно бесплатно. Урок-презентация на эту тему содержит всего 150 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Java. SE. 02. Object-oriented programming in Java



Оцените!
Оцените презентацию от 1 до 5 баллов!
  • Тип файла:
    ppt / pptx (powerpoint)
  • Всего слайдов:
    150 слайдов
  • Для класса:
    1,2,3,4,5,6,7,8,9,10,11
  • Размер файла:
    1.34 MB
  • Просмотров:
    86
  • Скачиваний:
    0
  • Автор:
    неизвестен



Слайды и текст к этой презентации:

№1 слайд
Object-oriented programming
Содержание слайда: Object-oriented programming in Java

№2 слайд
Причины возникновение ООП
Содержание слайда: Причины возникновение ООП Классы и объекты Три кита ООП Наследование Интерфейсы Введение в Design Patterns

№3 слайд
Причины возникновения ооп
Содержание слайда: Причины возникновения ооп

№4 слайд
Причины возникновения ООП
Содержание слайда: Причины возникновения ООП Классификация языков (одна из ...) По одной из классификаций языки программирования делятся на: директивные (directive), называемые также процедурными (procedural) или императивными (imperative), декларативные (declarative) языки, объектно-ориентированные (object-oriented).

№5 слайд
Причины возникновения ООП
Содержание слайда: Причины возникновения ООП Декларативная и директивная парадигмы Поговорим о различии между первыми двумя парадигмами. Главное заключается в следующем: декларативная программа заявляет (декларирует), что должно быть достигнуто в качестве цели, а директивная предписывает, как ее достичь.

№6 слайд
Причины возникновения ООП
Содержание слайда: Причины возникновения ООП

№7 слайд
Причины возникновения ООП
Содержание слайда: Причины возникновения ООП

№8 слайд
Причины возникновения ООП
Содержание слайда: Причины возникновения ООП Объектно-ориентированное программирование - это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования. ... ООП использует в качестве базовых элементов объекты, а не алгоритмы. Хорошо и ... не понятно. Вот и давайте разбираться постепенно.

№9 слайд
Классы и объекты
Содержание слайда: Классы и объекты

№10 слайд
Классы и объекты Классом
Содержание слайда: Классы и объекты Классом называется описание совокупности объектов с общими атрибутами, методами, отношениями и семантикой. Классы определяют структуру и поведение некоторого набора элементов предметной области, для которой разрабатывается программная модель. Каждый класс имеет свое имя, отличающее его от других классов, и относится к определенному пакету. Имя класса в пакете должно быть уникальным. Физически пакет представляет собой каталог, в который помещаются программные файлы, содержащие реализацию классов. Классы позволяют разбить поведение сложных систем на простое взаимодействие взаимосвязанных объектов.

№11 слайд
Классы и объекты Объект.
Содержание слайда: Классы и объекты Объект. Понятие "объект" не имеет в ООП канонического определения Объект- это осязаемая сущность, которая четко проявляет свое поведение. Объект состоит из следующих трех частей: имя объекта; состояние (переменные состояния); методы (операции) Объект ООП - это совокупность переменных состояния и связанных с ними методов(операций). Эти методы определяют как объект взаимодействует с окружающим миром.

№12 слайд
Классы и объекты Класс
Содержание слайда: Классы и объекты Класс / Экземпляр Класса Объект совокупность (разнотипных) данных (полей объекта), физически находящихся в памяти ЭВМ, и алгоритмов, имеющих доступ к ним. Каждый объект может обладать именем (идентификатором), используемым для доступа ко всей совокупности полей, его составляющих. В предельных случаях объект может не содержать полей или методов. Класс - тип (описание структуры данных и операций над ними), предназначенный для описания множества объектов.

№13 слайд
Классы и объекты Каждый класс
Содержание слайда: Классы и объекты Каждый класс может иметь подклассы - классы, обладающие всеми или частью его свойств, а так же собственными свойствами. Класс, не имеющий ни одного представителя (объекта) обычно называют абстрактным.

№14 слайд
Классы и объекты Рассмотрим
Содержание слайда: Классы и объекты Рассмотрим основные этапы разработки класса. Прежде всего, необходимо привести описание разрабатываемого класса. При разработке класса нужно представить определение класса, которое включает в себя: определение имени класса (определяет новый тип; абстракция, с которой будем иметь дело); определение состояния класса (состав, типы и имена полей в классе, предназначенных для хранения информации, а также уровни их защиты); данные, определяющие состояние класса, получили название членов-данных класса; определение методов класса (определение прототипов функций, которые обеспечат необходимую обработку информации). На этом этапе приводится описание того, что мы хотим получить от класса, не указывая, как мы этого добьемся.

№15 слайд
Классы и объекты Варианты
Содержание слайда: Классы и объекты Варианты графического изображения класса на диаграмме классов Примеры графического изображения конкретных классов

№16 слайд
Классы и объекты Переменные
Содержание слайда: Классы и объекты Переменные класса и константы Данные – члены класса, которые называются полями или переменными класса, объявляются в классе следующим образом: cпецификатор тип имя; Cпецификаторы доступа: static public final private protected

№17 слайд
Классы и объекты Область
Содержание слайда: Классы и объекты Область видимости public private friendly (по умолчанию) protected

№18 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 1

№19 слайд
Классы и объекты Конструкторы
Содержание слайда: Классы и объекты Конструкторы Конструктор – это метод, который автоматически вызывается при создании объекта класса и выполняет действия только по инициализации объекта; Конструктор имеет то же имя, что и класс; Вызывается не по имени, а только вместе с ключевым словом new при создании экземпляра класса; Конструктор не возвращает значение, но может иметь параметры и быть перегружаемым.

№20 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 2 Пример использования super и this

№21 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 3 Конструкторы. Пример перегрузки

№22 слайд
Классы и объекты Объекты
Содержание слайда: Классы и объекты Объекты создаются динамически с помощью операции new, а уничтожаются автоматически. Когда никаких ссылок на объект не существует (все ссылки на него вышли из области видимости программы) предполагается, что объект больше не нужен, и память, занятая объектом, может быть освобождена. “Сборка мусора” происходит нерегулярно во время выполнения программы. Рекомендовано ее выполнить вызовом метода System.gc() или Runtime.getRuntime().gc(). Вызов метода System.runFinalization() приведет к запуску метода finalize() для объектов утративших все ссылки.

№23 слайд
Классы и объекты В Java
Содержание слайда: Классы и объекты В Java пересмотрена концепция динамического распределения памяти: отсутствуют способы освобождения динамически выделенной памяти. Вместо этого реализована система автоматического освобождения памяти (сборщик мусора), выделенной с помощью оператора new. Сборщик мусора уничтожает объекты, которым не соответствует ни одна ссылка из активного потока. Аналогом деструктора можно считать метод finalize(), который исполняющая среда языка Java будет вызывать каждый раз, когда сборщик мусора будет уничтожать объекты этого класса.

№24 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 4

№25 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 4 Результат выполнения:

№26 слайд
Классы и объекты Методы
Содержание слайда: Классы и объекты Методы классов, передача параметров в методы Ссылки в методы передаются по значению. Выделяется память под параметры метода, и те переменные, которые являются ссылочными аргументами инициализируются значением своих фактических параметров. Таким образом, минимум две ссылки начинают указывать на один объект.

№27 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 5 Результат:

№28 слайд
Классы и объекты
Содержание слайда: Классы и объекты Следовательно, при передаче в метод аргумента-ссылки можно изменить состояние объекта и оно сохранится после возвращения из метода, так как в этом случае нового объекта не создается, а создается лишь новая ссылка, указывающая на старый объект. Из этого правила существует одно исключение – когда передается ссылка, указывающая на константный объект. Константный объект – это такой объект, изменить состояние которого нельзя. При попытке его изменить создается новый модифицированный объект. Примером таких объектов являются объекты класса String.

№29 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 6 Результат:

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

№31 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 7 Результат:

№32 слайд
Классы и объекты Если
Содержание слайда: Классы и объекты Если необходимо вернуть в вызывающий метод ссылку на новый константный объект, созданный в этом методе, следует указать её тип как тип возвращаемого методом значения и использовать return.

№33 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 8 Результат:

№34 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 9 Явные и неявные параметры метода. Явные параметры метода определяются списком параметров. Неявный параметр – это this – ссылка на вызвавший метод объект.

№35 слайд
Классы и объекты Статические
Содержание слайда: Классы и объекты Статические методы и поля Поля данных, объявленные в классе как static, являются общими для всех объектов класса и называются переменными класса. Если один объект изменит значение такого поля, то это изменение увидят все объекты.

№36 слайд
Классы и объекты Для работы
Содержание слайда: Классы и объекты Для работы со статическими атрибутами используются статические методы, объявленные со спецификатором static. являются методами класса; не привязаны ни к какому объекту; не содержат указателя this на конкретный объект, вызвавший метод; реализуют парадигму «раннего связывания», жестко определяющую версию метода на этапе компиляции; статические поля и методы не могут обращаться к нестатическим полям и методам напрямую (по причине недоступности указателя this ), так как для обращения к статическим полям и методам достаточно имени класса, в котором они определены.

№37 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 10

№38 слайд
Классы и объекты Статические
Содержание слайда: Классы и объекты Статические поля используются довольно редко, а вод поля static final наоборот часто. Очень часто используемая статическая константа System.out. другая часто используемая константа – Math.PI. Статические константы нет смысла делать закрытыми, а обращаются к ним через имя класса: имя_класса.имя_статической_константы

№39 слайд
Классы и объекты Статические
Содержание слайда: Классы и объекты Статические методы не работают с объектами, поэтому их использовать следует в двух случаях: когда методу не нужен доступ к состоянию объекта, а все необходимые параметры задаются явно (например, метод Math.pow(…). когда методу нужен доступ только к статическим полям класса (статический метод не может получить доступ к нестатическим полям класса, так как они принадлежат объектам, а не классам). Статические методы можно вызывать, даже если ни один объект этого класса не создан. Кроме того, статические методы часто используют в качестве порождающих, т.е. таких методов. которые создают объект своего класса и возвращают ссылку на него.

№40 слайд
Классы и объекты Модификатор
Содержание слайда: Классы и объекты Модификатор final. Модификатор final используется для определения констант в качестве члена класса, локальной переменной или параметра метода. Методы, объявленные как final, нельзя замещать в подклассах, для классов – создавать подклассы. Константа может быть объявлена как поле класса, но не проинициализирована. В этом случае она должна быть проинициализирована в логическом блоке класса, заключенном в {}, или конструкторе, но только в одном из указанных мест. Значение по умолчанию константа получить не может в отличие от переменных класса. Константы могут быть объявлены в методах как локальные или как параметры метода. В обоих случаях значения таких констант изменять нельзя. Значение константному полю можно присвоить при объявлении, в логическом блоке инициализации или в конструкторе.

№41 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 11

№42 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 11

№43 слайд
Классы и объекты Модификатор
Содержание слайда: Классы и объекты Модификатор native Приложение на языке Java может вызывать методы, написанные на языке С++. Такие методы объявляются с ключевым словом native, которое сообщает компилятору, что метод реализован в другом месте. public native int loadCripto(int num); Методы, помеченные native, можно переопределять обычными методами в подклассах.

№44 слайд
Классы и объекты Модификатор
Содержание слайда: Классы и объекты Модификатор synchronized . При использовании нескольких потоков управления в одном приложении необходимо синхронизировать методы, обращающиеся к общим данным. Когда интерпретатор обнаруживает synchronized, он включает код, блокирующий доступ к данным при запуске потока и снимающий блок при его завершении.

№45 слайд
Классы и объекты Блоки
Содержание слайда: Классы и объекты Блоки инициализации При описании класса могут быть использованы логические блоки. Логическим блоком называется код, заключенный в фигурные скобки и не принадлежащий ни одному методу текущего класса. { /* код */ } Логические блоки чаще всего используются в качестве инициализаторов полей, но могут содержать вызовы методов как текущего класса, так и не принадлежащих ему. Для инициализации статических переменных существуют статические блоки инициализации. В этом случае фигурные скобки предваряются ключевым словом static.

№46 слайд
Классы и объекты При создании
Содержание слайда: Классы и объекты При создании объекта блоки инициализации класса вызываются последовательно, в порядке размещения, вместе с инициализацией полей как простая последовательность операторов, и только после выполнения последнего блока будет вызван конструктор класса. Операции с полями класса внутри логического блока до явного объявления этого поля возможны только при использовании ссылки this, представляющую собой ссылку на текущий объект. Логический блок может быть объявлен со спецификатором static. В этом случае он вызывается только один раз в жизненном цикле приложения при создании объекта или при обращении к статическому методу (полю) данного класса.

№47 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 12

№48 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 12 Результат:

№49 слайд
Классы и объекты
Содержание слайда: Классы и объекты Инициализация полей класса. Общий порядок инициализации следующий При загрузке классов в память статические поля инициализируются значениями по умолчанию. Статически поля классов инициализируются значением, присвоенным при объявлении. Выполняется статический блок инициализации. При вызове конструктора класса все поля данных инициализируются своими значениями, предусмотренными по умолчанию. Инициализаторы всех полей и блоки инициализации выполняются в порядке их перечисления в объявлении класса. Если в первой строке конструктора вызывается другой конструктор, то вы­полняется вызванный конструктор. Выполняется тело конструктора.

№50 слайд
Классы и объекты Если
Содержание слайда: Классы и объекты Если значение поля не задано в конструкторе явно, ему автоматически присваивается значение по умолчанию: числам — нули, булевским значениям — false,а ссылкам на объект — null.

№51 слайд
Классы и объекты Перегрузка
Содержание слайда: Классы и объекты Перегрузка методов. Метод называется перегруженным, если существует несколько его версий с одним и тем же именем, но с различным списком параметров. Перегрузка реализует «раннее связывание». Перегрузка может ограничиваться одним классом. Методы с одинаковыми именами, но с различающимися списком параметров и возвращаемыми значениями могут находиться в разных классах одной цепочки наследования и также будут являться перегруженными.

№52 слайд
Классы и объекты Перегрузка
Содержание слайда: Классы и объекты Перегрузка методов. Если в последнем случае списки параметров совпадают, то имеет место другой механизм – переопределение метода. Статические методы могут перегружаться нестатическими и наоборот – без ограничений. При вызове перегруженных методов следует избегать ситуаций, когда компилятор будет не в состоянии выбрать тот или иной метод.

№53 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 13

№54 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 13 Результат:

№55 слайд
Классы и объекты При
Содержание слайда: Классы и объекты При непосредственной передаче объекта в метод выбор производится в зависимости от типа ссылки на этапе компиляции. С одной стороны, этот механизм снижает гибкость, с другой – все возможные ошибки при обращении к перегруженным методам отслеживаются на этапе компиляции, в отличие от переопределенных методов, когда их некорректный вызов приводит к возникновению исключений на этапе выполнения.

№56 слайд
Классы и объекты При
Содержание слайда: Классы и объекты При перегрузке всегда следует придерживаться следующих правил: не использовать сложных вариантов перегрузки; не использовать перегрузку с одинаковым числом параметров; заменять при возможности перегруженные методы на несколько разных методов.

№57 слайд
Классы и объекты Класс
Содержание слайда: Классы и объекты Класс java.lang.Object - родительский для всех классов Содержит следующие методы: protected Object clone() – создает и возвращает копию вызывающего объекта; boolean equals(Object ob) – предназначен для переопределения в подклассах с выполнением общих соглашений о сравнении содержимого двух объектов; Class<? extends Object> getClass() – возвращает объект типа Class; protected void finalize() – вызывается перед уничтожением объекта автоматическим сборщиком мусора (garbage collection); int hashCode() – возвращает хэш-код объекта; String toString() – возвращает представление объекта в виде строки.

№58 слайд
Классы и объекты
Содержание слайда: Классы и объекты Переопределение метода equals() - метод equals() при сравнении двух объектов возвращает истину, если содержимое объектов эквивалентно, и ложь – в противном случае. При переопределении должны выполняться соглашения: рефлексивность – объект равен самому себе; симметричность – если x.equals(y) возвращает значение true, то и y.equals(x) всегда возвращает значение true; транзитивность – если метод equals() возвращает значение true при сравнении объектов x и y, а также y и z, то и при сравнении x и z будет возвращено значение true; непротиворечивость – при многократном вызове метода для двух не подвергшихся изменению за это время объектов возвращаемое значение всегда должно быть одинаковым; ненулевая ссылка при сравнении с литералом null всегда возвращает значение false.

№59 слайд
Классы и объекты
Содержание слайда: Классы и объекты Переопределение метода hashCode() - метод int hashCode() возвращает хэш-код объекта, вычисление которого управляется следующими соглашениями: во время работы приложения значение хэш-кода объекта не изменяется, если объект не был изменен; все одинаковые по содержанию объекты одного типа должны иметь одинаковые хэш-коды; различные по содержанию объекты одного типа могут иметь различные хэш-коды.

№60 слайд
Классы и объекты Метод
Содержание слайда: Классы и объекты Метод hashCode() переопределен, как правило, в каждом классе и возвращает число, являющееся уникальным идентификатором объекта, зависящим в большинстве случаев только от значения объекта. Следует переопределять всегда, когда переопределен метод equals().

№61 слайд
Классы и объекты
Содержание слайда: Классы и объекты Переопределение метода toString() - метод toString() следует переопределять таким образом, чтобы кроме стандартной информации о пакете (опционально), в котором находится класс, и самого имени класса (опционально), он возвращал значения полей объекта, вызвавшего этот метод (то есть всю полезную информацию объекта), вместо хэш-кода, как это делается в классе Object. В классе Object возвращает строку с описанием объекта в виде: getClass().getName() + '@' + Integer.toHexString(hashCode()) Метод вызывается автоматически, когда объект выводится методами println(), print() и некоторыми другими. При реализации всегда следует стремиться к тому, чтобы сообщить максимальную информацию об объекте.

№62 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 14

№63 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 14

№64 слайд
Классы и объекты Методы с
Содержание слайда: Классы и объекты Методы с переменным числом параметров !!! Возможность передачи в метод нефиксированного числа параметров позволяет отказаться от предварительного создания массива объектов для его последующей передачи в метод. Чтобы передать несколько массивов в метод по ссылке, следует использовать следующее объявление: Методы с переменным числом аргументов могут быть перегружены:

№65 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 15 Результат:

№66 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 16

№67 слайд
Классы и объекты. Example
Содержание слайда: Классы и объекты. Example 16 Результат:

№68 слайд
Три кита ооп
Содержание слайда: Три кита ооп

№69 слайд
Три кита ООП
Содержание слайда: Три кита ООП Объектно-ориентированное программирование основано на трех принципах: Инкапсуляции; Наследовании; Полиморфизме. и одном механизме: Позднее связывание Включение сюда механизма вопрос крайне спорный.

№70 слайд
Три кита ООП Инкапсуляция
Содержание слайда: Три кита ООП Инкапсуляция (encapsulation) - это механизм, который объединяет данные и код, манипулирующий этими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. В объектно-ориентированном программировании код и данные могут быть объединены вместе; в этом случае говорят, что создаётся так называемый "чёрный ящик". Когда коды и данные объединяются таким способом, создаётся объект (object).

№71 слайд
Три кита ООП
Содержание слайда: Три кита ООП

№72 слайд
Три кита ООП Наследование
Содержание слайда: Три кита ООП Наследование (inheritance) - это процесс, посредством которого один объект может приобретать свойства другого. Точнее, объект может наследовать основные свойства другого объекта и добавлять к ним черты, характерные только для него. Наследование бывает двух видов: одиночное - когда каждый класс имеет одного и только одного предка; множественное - когда каждый класс может иметь любое количество предков.

№73 слайд
Три кита ООП
Содержание слайда: Три кита ООП

№74 слайд
Три кита ООП Полиморфизм
Содержание слайда: Три кита ООП Полиморфизм (polymorphism) - это свойство, которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач. Целью полиморфизма, применительно к объектно-ориентированному программированию, является использование одного имени для задания общих для класса действий. В более общем смысле, концепцией полиморфизма является идея "один интерфейс, множество методов".

№75 слайд
Три кита ООП
Содержание слайда: Три кита ООП

№76 слайд
Три кита ООП Позднее
Содержание слайда: Три кита ООП Позднее связывание. При вызове того или иного метода класса сначала ищется метод у самого класса. Если метод найден, то он выполняется и поиск этого метода на этом завершается. Если же метод не найден, то обращаемся к родительскому классу и ищем вызванный метод у него. Если найден - поступаем как при нахождении метода в самом классе. А если нет - продолжаем дальнейший поиск вверх по иерархическому дереву. Вплоть до корня(верхнего класса) иерархии.

№77 слайд
Наследование
Содержание слайда: Наследование

№78 слайд
Наследование Понятие
Содержание слайда: Наследование Понятие наследования. Один класс может наследовать или расширять поля и методы другого класса с помощью ключевого слова extends. Класс, который выступает базой для расширения, называют суперклассом, класс, который непосредственно проводит расширение, - подклассом. Подкласс имеет доступ ко всем открытым полям и методам суперкласса, так, словно они описаны в подклассе: производный класс не имеет доступа к закрытым полям и методам класса. Также подкласс может добавлять методы и переопределять методы.

№79 слайд
Наследование
Содержание слайда: Наследование

№80 слайд
Наследование Переопределение
Содержание слайда: Наследование Переопределение методов. Переопределенным методом называют метод, описанный в производном классе, сигнатура этого метода совпадает с сигнатурой метода, описанного в суперклассе.

№81 слайд
Наследование. Example public
Содержание слайда: Наследование. Example 17 public class Book { private String title; private int yearPublished; private int price; public Book() {} public Book(String title, int yearPublished, int price) { this.title = title; this.yearPublished = yearPublished; this.price = price; } public String getTitle() { return title; } public int getYearPublished() { return yearPublished; } public int getPrice() { return price; } public void printReport() { System.out.println("Название: "+title+" год издания: "+yearPublished+" цена: "+price); } }

№82 слайд
Наследование. Example public
Содержание слайда: Наследование. Example 17 public class ProgrammerBook extends Book{ public ProgrammerBook(String title, int yearPublished, int price, String level) { super(title,yearPublished,price); this.level = level; } public String getLevel() { return level; } public void printReport() { System.out.println("Название: "+getTitle()+" год издания: "+getYearPublished()+" цена: "+getPrice()+" уровень: "+level); } private String level; } public class BookInspector { public static void main(String[] args) { Book mybook = new Book("Золушка",2000, 19000); ProgrammerBook myprogrbook = new ProgrammerBook("Java",2006,46000,"hight"); mybook. printReport(); myprogrbook. printReport(); } }

№83 слайд
Наследование. Example public
Содержание слайда: Наследование. Example 18 public class CourseHelper { public Course getCourse(){ System.out.println("Course"); return new Course(); } } public class BaseCourseHelper extends CourseHelper { public BaseCourse getCourse(){ System.out.println("BaseCourse"); return new BaseCourse(); } }

№84 слайд
Наследование. Example В
Содержание слайда: Наследование. Example 18 В данной ситуации при компиляции в подклассе BaseCourseHelper создаются два метода. При обращении к методу getCourse() версия метода определяется «ранним связыванием» без использования полиморфизма, но при выполнении вызывается метод-подставка. Обращение к полю производится по типу ссылки, возвращаемой методом getCourse(), то есть к полю класса Course.

№85 слайд
Наследование Вызов
Содержание слайда: Наследование Вызов конструкторов при наследовании. При создании объектов производного класса, конструктор производного класса вызывает соответствующий конструктор базового класса с помощью ключевого слова super(параметры). Вызов конструктора базового класса из конструктора производного должен быть произведен в первой строке конструктора производного класса. Если конструктор производного класса явно не вызывает конструктор базового, то происходит вызов конструктора по умолчанию базового класса, в этом случае в базовом классе должен быть определен конструктор по умолчанию. Если метод переопределен в производном классе, то одноименный метод базового класса можно вызвать из производного с помощью конструкции.

№86 слайд
Наследование. Example Следует
Содержание слайда: Наследование. Example 19 Следует помнить, что при вызове show() обращение производится к ближайшему суперклассу.

№87 слайд
Наследование. Example Ссылки
Содержание слайда: Наследование. Example 20 Ссылки на суперкласс и их свойства. Объектная переменная базового класса может ссылаться на объекты как базового, так и производного классов. Такая возможность называется полиморфизмов. Автоматический выбор нужного метода во время выполнения программы называется динамическим связыванием (dynamic binding).

№88 слайд
Наследование Когда вызывается
Содержание слайда: Наследование Когда вызывается метод, принадлежащий объекту, происходит следующее. Компилятор проверяет объявленный тип объекта и имя метода. Допустим, происходит вызов метода x.f(args), прочем неявный параметр объявлен как объект класса С. Заметим, что могут существовать несколько методов с именем f, имеющих разные типы параметров (например, метод f(int) и метод f(String)). Компилятор пронумерует все методы с именем f в классе С и все открытые методы с именем f в суперклассах класса С.

№89 слайд
Наследование Затем компилятор
Содержание слайда: Наследование Затем компилятор определяет типы параметров, указанных при вызове метода. Если среди всех методов с именем f есть только одни метод, типы параметров которого совпадают с указанными, происходит его вызов. Этот процесс называется разрешением перегрузки (overloading resolution). Например, при вызове x.f(“Hello”) компилятор выберет метод f(String), а не метод f(int). Ситуация может осложниться вследствие преобразования типов (int в double). Если компилятор не находит ни одного метода с подходящим набором параметров, или в результате преобразования типов возникает несколько методом, соответствующих данному вызову, выдается сообщение об ошибке

№90 слайд
Наследование Если метод
Содержание слайда: Наследование Если метод является закрытым (private), статическим (static), терминальным (final) или конструктором, компилятор точно знает, какой метод вызвать. Такой процесс называется статическим связыванием (static binding). В противном случае метод, подлежащий вызову, определяется по фактическому типу неявного параметра, и во время выполнения программы должно использоваться динамическое связывание. В нашем примере компилятор сгенерировал бы команду метода f(String) с помощью динамического связывания.

№91 слайд
Наследование Если при
Содержание слайда: Наследование Если при выполнении программы для вызова метода используется динамическое связывание, виртуальная машина должна вызвать версию метода, соответствующую фактическому типу объекта, на который ссылается переменная x. Допустим, что объект имеет фактический тип D, являющийся суперклассом класса С. Если в классе D определен метод f(string), то вызывается именно он. Если нет, то поиск метода f(String), подлежащего вызову, выполняется в суперклассе и т.д.

№92 слайд
Наследование. Example
Содержание слайда: Наследование. Example 21 Предотвращение переопределения методов. Чтобы предотвратить переопределение некоторых их необходимо объявить терминальными с помощью ключевого слова final. Если в классе Book объявить метод getPrice() терминальным, то в производном классе ProgrammerBook переопределить его будет нельзя.

№93 слайд
Наследование Классы,
Содержание слайда: Наследование Классы, объявленные как терминальными, нельзя расширить. Объявить терминальный класс можно следующим образом.

№94 слайд
Наследование Приведение типов
Содержание слайда: Наследование Приведение типов при наследовании. Как известно, в языке Java каждая объектная переменная имеет тип, описывающий разновидность объекта, на который ссылается переменная, и все, что он может делать. На основе описания классов компилятор проверяет, сужает или расширяет возможности класса программист, объявляющий переменную. Если переменной суперкласса присваивается объект подкласса, возможности класса сужаются, и компилятор без проблем позволяет программисту сделать это. Если, наоборот, объект суперкласса присваивается переменной подкласса, возможности класса расширяются, поэтому программист должен подтвердить это с помощью обозначения, предназначенного для приведения типов, указав в скобках имя подкласса (subclass).

№95 слайд
Наследование. Example public
Содержание слайда: Наследование. Example 22 public class BookInspector { public static void main(String[] args){ Book[] mybook = new Book[4]; mybook[0] = new Book("Золушка", 2000,19000); mybook[1] = new ProgrammerBook("Java",2006,46000,"hight"); mybook[2] = new Book("Дневной дозор",2002,25000); mybook[3] = new ProgrammerBook("C++",2009,32000,"medium"); Book book; book = mybook[0]; book.printReport(); book = mybook[1]; book.printReport(); ProgrammerBook prbook; // prbook = (ProgrammerBook)mybook[0]; // ОШИБКА prbook = (ProgrammerBook)mybook[1]; // ВСЕ ХОРОШО report(mybook); } static void report(Book[] book) { for(int i=0; i<book.length; i++) book[i].printReport(); } }

№96 слайд
Наследование При недопустимом
Содержание слайда: Наследование При недопустимом преобразовании типов при выполнении программы система обнаружит несоответствие и возбудит исключительную ситуацию. Если её не перехватить, то работа программы будет остановлена. Следовательно, перед приведением типов следует проверить его на корректность. Делается это с помощью оператора instanceof.

№97 слайд
Наследование. Example public
Содержание слайда: Наследование. Example 23 public class BookInspector { public static void main(String[] args) { Book[] mybook = new Book[4]; mybook[0] = new Book("Золушка", 2000,19000); mybook[1] = new ProgrammerBook("Java",2006,46000,"hight"); mybook[2] = new Book("Дневной дозор",2002,25000); mybook[3] = new ProgrammerBook("C++",2009,32000,"medium"); report(mybook); } static void report(Book[] book){ ProgrammerBook prbook; Book bk; for(int i=0; i<book.length; i++){ if(book[i] instanceof ProgrammerBook){ prbook = (ProgrammerBook)book[i]; System.out.println("Programmer level = " + prbook.getLevel()); } else { bk = (Book)book[i]; System.out.println("Book price = " + bk.getPrice()); } } } }

№98 слайд
Наследование Компилятор не
Содержание слайда: Наследование Компилятор не позволить выполнить некорректное приведение типов. Например, приведение типов

№99 слайд
Наследование Абстрактные
Содержание слайда: Наследование Абстрактные методы и классы. Часто при проектировании иерархии классов верхние классы иерархии становятся все более и более абстрактными, так что реализовывать некоторые методы в них не имеет никакого смысла. Однако удалить их из класса нельзя, так как при дальнейшем использовании базовых объектных ссылок на объекты производных классов необходим доступ к переопределенным методам, а он возможен только при наличии в них метода с такой же сигнатурой как в базовом классе. В таком случае метод следует объявлять абстрактным. В классе, где метод объявляется абстрактным, его реализация не требуется. Если в классе есть абстрактные методы, тои класс можно объявить абстрактным.

№100 слайд
Наследование. Example
Содержание слайда: Наследование. Example 24 Абстрактные классы объявляются с ключевым словом abstract и могут содержать объявления абстрактных методов, которые не реализованы в этих классах. Объекты таких классов создать нельзя, можно создать объекты подклассов, которые реализуют эти методы. Абстрактные методы помещаются в абстрактных классах или интерфейсах, тела таких методов отсутствуют и реализуются в подклассах.

№101 слайд
Наследование. Example public
Содержание слайда: Наследование. Example 24 public abstract class GraphicObject { public abstract void draw(); //абстрактный метод public void moveTo(int x, int y) { //движение центра фигуры } } class Circle extends GraphicObject { public void draw(){ //рисуем круг } } class Runner { public static void main(String[] args) { GraphicObject mng; // можно объявить ссылку //mng = new GraphicObject(); //нельзя создать объект! mng = new Circle(); mng.draw(); } }

№102 слайд
Наследование. Example public
Содержание слайда: Наследование. Example 25 public abstract class Book { private String title; private int yearPublished; private int price; public Book() {} public Book(String title, int yearPublished, int price){ this.title = title; this.yearPublished = yearPublished; this.price = price; } public abstract void printReport(); public String getTitle(){ return title; } public int getYearPublished(){ return yearPublished; } public int getPrice(){ return price; } }

№103 слайд
Наследование. Example public
Содержание слайда: Наследование. Example 25 public class ProgrammerBook extends Book{ public ProgrammerBook(String title, int year_published, int price, String level){ super(title,year_published,price); this.level = level; } public String getLevel(){ return level; } public void show(){ System.out.println("Название: "+getTitle()+" - год издания: "+getYearPublished()+" - цена: "+getPrice()+" уровень: "+level); } private String level; } public class ChildrenBook extends Book{ public ChildrenBook(String title, int year_published, int price, int yearFrom){ super(title,year_published,price); this.yearFrom = yearFrom; } public void printReport() { System.out.println("Название: "+getTitle()+" - год издания: "+getYearPublished()+ " - цена: "+getPrice()+" возраст: "+yearFrom); } private int yearFrom; }

№104 слайд
Наследование При расширении
Содержание слайда: Наследование При расширении абстрактного класса все его абстрактные методы необходимо определить или подкласс также объявить абстрактным. Нельзя создавать объекты абстрактных классов, однако можно объявлять объектные переменные.

№105 слайд
Наследование. Example
Содержание слайда: Наследование. Example 26 Статические методы при наследовании. Для статических методов в Java полиморфизм неприменим

№106 слайд
Наследование. Example
Содержание слайда: Наследование. Example 27 Наследование от стандартных классов. Кроме собственных Java позволяет расширять и стандартные классы.

№107 слайд
Интерфейсы
Содержание слайда: Интерфейсы

№108 слайд
Интерфейсы Интерфейсы в Java
Содержание слайда: Интерфейсы Интерфейсы в Java применяются для добавления к классам новых возможностей, которых нет и не может быть в базовых классах. Интерфейсы говорят о том, что класс может делать, но не говорят, как он должен это делать. Предположим, что существует интерфейс ПЛАТИТЬ_ЗАРПЛАТУ. Возможность “платить зарплату” должна быть у многих классов. Например, класс ДИРЕКТОР может реализовывать интерфейс ПЛАТИТЬ_ЗАРПЛАТУ, класс КАССИР также может иметь возможность ПЛАТИТЬ_ЗАРПЛАТУ. Однако, в интерфейсе не будет сказано, как классы будут эту возможность (платить долгожданную зарплату) осуществлять. Интерфейс только гарантирует, что класс выполняет какие-то функции, а как он их выполняет – дело неинтерфейсное. Так, диплом подтверждает, что человек может делать какую-то работу, однако то, как он её будет выполнять по диплому непонятно. Следовательно, диплом здесь выступает в роли интерфейса. Во многих источниках ещё можно прочитать, что интерфейсы являются заменой множественному наследованию. Только интерфейсы более удобны, более логичны и менее громоздки.

№109 слайд
Интерфейсы Определение
Содержание слайда: Интерфейсы Определение интерфейса. Синтаксис определения интерфейса следующий.

№110 слайд
Интерфейсы. Example
Содержание слайда: Интерфейсы. Example 28 Реализация интерфейса происходит в классе с помощью ключевого слова implements. Если реализуемых интерфейсов несколько, то они перечисляются через запятую. Интерфейс считается реализованным, когда в классе и/или в его суперклассе реализованы все методы интерфейса.

№111 слайд
Интерфейсы. Example public
Содержание слайда: Интерфейсы. Example 28 public class Circle implements Square{ private int r; public Circle(int r) { this.r = r;} public double square() { return r*r*Square.PI;} public void print() {System.out.println("Square circle: « +square());} } public class Test { public static void main(String[] args){ Box box = new Box(4); Rectangle rectangle = new Rectangle(2,3); Circle circle = new Circle(3); box.print(); rectangle.print(); circle.print(); System.out.println("Box: "+box.square()); System.out.println("Rectangle: "+rectangle.square()); System.out.println("Circle: "+circle.square()); } }

№112 слайд
Интерфейсы Свойства
Содержание слайда: Интерфейсы Свойства интерфейсов. C помощью оператора new нельзя создать экземпляр интерфейса. Можно объявлять интерфейсные ссылки. Интерфейсные ссылки должны ссылать на объекты классов, реализующих данный интерфейс. Через интерфейсную ссылку можно вызвать только методы определенные с интерфейсе. С помощью оператора instanseof можно проверять, реализует ли объект определенный интерфейс. Если класс не полностью реализует интерфейс, то он должен быть объявлен как abstract. Интерфейс может быть расширен при помощи наследования от другого интерфейса, синтаксис в этом случае аналогичен синтаксисом наследования классов .

№113 слайд
Интерфейсы. Example public
Содержание слайда: Интерфейсы. Example 29 public class Test { public static void main(String[] args) { Box box = new Box(4); //box = new Square(); // ERROR Square square; square = box; box.print(); System.out.println("Box: "+square.square()); // square.print() // ERROR if (box instanceof Square) { System.out.println("box implements square"); } } }

№114 слайд
Интерфейсы. Example Вложенные
Содержание слайда: Интерфейсы. Example 30 Вложенные интерфейсы. Интерфейсы можно вложить (объявить членом) другого класса или интерфейса. В этом случае значение доступа может принимать значения public, private, protected. Когда вложенный интерфейс использует вне области вложения, то он используется вместе с именем класса или интерфейса.

№115 слайд
Интерфейсы. Example
Содержание слайда: Интерфейсы. Example 31 Интерфейсы и обратные вызовы. Обратным вызовом (callback) называется набор инструкций, который выполняется всякий раз, когда происходит какое-либо событие, например, действие, выполняемое при нажатии кнопки. Рассмотрим пример Кея Хорстманна.

№116 слайд
Интерфейсы. Example
Содержание слайда: Интерфейсы. Example 31

№117 слайд
Интерфейсы Существуют
Содержание слайда: Интерфейсы Существуют ИСТОЧНИК события, СЛУШАТЕЛЬ события и непосредственно само СОБЫТИЕ. С точки зрения Java все эти существа – объекты каких-то классов. На источник не налагается никаких ограничений, главное, чтобы он мог генерировать хоть какое-нибудь событие. Самими событиями являются объекты классов, расширяющих класс Event или его потомков. А вот слушатель события обязательно должен быть объектом класса, реализующего интерфейс Listener или его потомка. В примере класс реализует интерфейс ActionListener, где содержится всего один метод public void actionPerformed(ActionEvent event). Объект-слушатель события должен зарегистрироваться в объекте источнике-событии. При наступлении самого события источник вызывает метод actionPerformed() зарегистрированного слушателя, передавая ему ссылку на объект-событие.

№118 слайд
Интерфейсы Клонирование
Содержание слайда: Интерфейсы Клонирование объектов. Интерфейс Cloneable. Рассмотрим ситуацию, когда в метод передается ссылка на объект и метод сам возвращает ссылку на объект.

№119 слайд
Интерфейсы. Example
Содержание слайда: Интерфейсы. Example 32

№120 слайд
Интерфейсы Результат
Содержание слайда: Интерфейсы Результат программы следующий: Year: 2008 mounth: 7 day: 3 Year: 2008 mounth: 7 day: 3 Year: 2008 mounth: 3 day: 3 Year: 2008 mounth: 3 day: 3 Результат не совсем тот. который ожидался. Через внешнюю ссылку date2 изменилось внутреннее состояние объекта mydate. В такой ситуации возвращаемый объект необходимо клонировать, т.е. использовать метод clone().

№121 слайд
Интерфейсы. Example Результат
Содержание слайда: Интерфейсы. Example 33 Результат выполнения программы: Year: 2008 mounth: 7 day: 3 Year: 2008 mounth: 7 day: 3 Year: 2008 mounth: 7 day: 3 Year: 2008 mounth: 3 day: 3

№122 слайд
Интерфейсы Метод clone
Содержание слайда: Интерфейсы Метод clone() существует практически во всех библиотечных классах. Однако, в классах, разрабатываемых самим программистом, метод clone() наследуется из класса Object, который умеет копировать лишь поля. Следовательно, если вызывать унаследованный метод clone() опять получиться ситуация, когда разные ссылки указывают на один и тот же объект (такое клонирование называют поверхностным). Часто объекты содержат подобъекты (ссылки на другие объекты), и, чтобы получить их копию, необходимо переопределять метод clone() (выполнять глубокое копирование).

№123 слайд
Интерфейсы Для того, чтобы
Содержание слайда: Интерфейсы Для того, чтобы переопределить метод clone() необходимо реализовать интерфейс Cloneable и описать метод clone() с модификатором public. Интерфейс Cloneable не содержит методов относится к помеченным (tagged) интерфейсам, а его реализация гарантирует, что метод clone() класса Object возвратит точную копию вызвавшего его объекта с воспроизведением значений всех его полей. В противном случае метод генерирует исключение CloneNotSupportedException.

№124 слайд
Интерфейсы Класс Object
Содержание слайда: Интерфейсы Класс Object содержит protected-метод clone(), осуществляющий побитовое копирование объекта производного класса. Сначала необходимо переопределить метод clone() как public для обеспечения возможности вызова из другого пакета. В переопределенном методе следует вызвать базовую версию метода super.clone(), которая и выполняет собственно клонирование. Чтобы окончательно сделать объект клонируемым, класс должен реализовать интерфейс Cloneable.

№125 слайд
Интерфейсы. Example
Содержание слайда: Интерфейсы. Example 34

№126 слайд
Интерфейсы. Example
Содержание слайда: Интерфейсы. Example 35

№127 слайд
Интерфейсы. Example
Содержание слайда: Интерфейсы. Example 35

№128 слайд
Интерфейсы. Example Сравнение
Содержание слайда: Интерфейсы. Example 36 Сравнение объектов. Интерфейс Comparable. Метод sort(…) класса Arrays позволяет упорядочивать массив, переданный ему в качестве параметра. Для элементарных типов правила определения больше/меньше известны.

№129 слайд
Интерфейсы Также этот метод
Содержание слайда: Интерфейсы Также этот метод упорядочивает и массив объектов при одном условии: объекты массива должны принадлежать классу, реализующему интерфейс Comparable. Класс, реализующий интерфейс Comparable должен иметь метод compareTo(). Естественно, вызов x.compareTo() должен действительно уметь сравнивать два объекта.

№130 слайд
Интерфейсы. Example import
Содержание слайда: Интерфейсы. Example 37 import java.util.Date; public class Book implements Comparable, Cloneable{ private String title; private int yearPublished; private int price; private Date date; public Book() {} public Book(String title, int yearPublished, int price, Date date){ this.title = title; this.yearPublished = yearPublished; this.price = price; this.date = date; // внимательно изучите эту строку // определите в ней потенциальную опасность } public String getTitle() { return title; } public int getYearPublished() { return yearPublished; } public int getPrice(){ return price;} public void printReport(){System.out.println("Название: "+title+ " год издания: "+year_published+" цена: "+price); }

№131 слайд
Интерфейсы. Example public
Содержание слайда: Интерфейсы. Example 37 public int compareTo(Object object) { Book book=null; if(object instanceof Book) book = (Book)object; else {/*возбуждаем исключение*/} if ( price < book.price ) return -1; else if ( price > book.price ) return 1; else return 0; } public Object clone() { Book book = new Book(); book.title = title; book.year_published = year_published; book.price = price; book.date = (Date)date.clone(); return book; } }

№132 слайд
Введение в Design Patterns
Содержание слайда: Введение в Design Patterns

№133 слайд
Введение в Design Patterns
Содержание слайда: Введение в Design Patterns Шаблон это идея, метод решения, общий подход к целому классу задач, постоянно встречающихся на практике систематизация приемов программирования и принципов организации классов Основные принципы объектно-ориентированного проектирования, применяемого при создании диаграммы классов и распределения обязанностей между ними, систематизированы в шаблонах GRASP (General Responsibility Assignment Software Patterns)

№134 слайд
Введение в Design Patterns
Содержание слайда: Введение в Design Patterns

№135 слайд
Введение в Design Patterns
Содержание слайда: Введение в Design Patterns

№136 слайд
Введение в Design Patterns.
Содержание слайда: Введение в Design Patterns. Example 38

№137 слайд
Введение в Design Patterns.
Содержание слайда: Введение в Design Patterns. Example 38

№138 слайд
Введение в Design Patterns.
Содержание слайда: Введение в Design Patterns. Example 39

№139 слайд
Введение в Design Patterns
Содержание слайда: Введение в Design Patterns

№140 слайд
Введение в Design Patterns.
Содержание слайда: Введение в Design Patterns. Example 40

№141 слайд
Введение в Design Patterns
Содержание слайда: Введение в Design Patterns

№142 слайд
Введение в Design Patterns.
Содержание слайда: Введение в Design Patterns. Example 41

№143 слайд
Введение в Design Patterns.
Содержание слайда: Введение в Design Patterns. Example 41

№144 слайд
Введение в Design Patterns
Содержание слайда: Введение в Design Patterns

№145 слайд
Введение в Design Patterns.
Содержание слайда: Введение в Design Patterns. Example 42

№146 слайд
Введение в Design Patterns.
Содержание слайда: Введение в Design Patterns. Example 42

№147 слайд
Введение в Design Patterns.
Содержание слайда: Введение в Design Patterns. Example 42

№148 слайд
Введение в Design Patterns
Содержание слайда: Введение в Design Patterns

№149 слайд
Введение в Design Patterns
Содержание слайда: Введение в Design Patterns Преимущества использования шаблонов: Нет необходимости решать каждую задачу с нуля Использование проверенных решений Можно заранее представить последствия выбора того или иного варианта Проектирование с учетом будущих изменений Компактный код, который легко можно будет использовать повторно

№150 слайд
Ihar Blinou, PhD Java.SE.
Содержание слайда: Ihar Blinou, PhD Java.SE.02 Object-oriented programming in Java

Скачать все slide презентации Java. SE. 02. Object-oriented programming in Java одним архивом: