Содержание
- 2. 2011 © EPAM Systems, RD Dep. Причины возникновение ООП Классы и объекты Три кита ООП Наследование
- 3. ПРИЧИНЫ ВОЗНИКНОВЕНИЯ ООП 2011 © EPAM Systems, RD Dep.
- 4. Причины возникновения ООП Классификация языков (одна из ...) По одной из классификаций языки программирования делятся на:
- 5. Причины возникновения ООП Декларативная и директивная парадигмы Поговорим о различии между первыми двумя парадигмами. Главное заключается
- 6. Причины возникновения ООП 2011 © EPAM Systems, RD Dep. Развитие языков и парадигм программирования
- 7. Причины возникновения ООП 2011 © EPAM Systems, RD Dep. Причины возникновения и задачи ООП
- 8. Причины возникновения ООП Объектно-ориентированное программирование - это методология программирования, основанная на представлении программы в виде совокупности
- 9. КЛАССЫ И ОБЪЕКТЫ 2011 © EPAM Systems, RD Dep.
- 10. Классы и объекты Классом называется описание совокупности объектов с общими атрибутами, методами, отношениями и семантикой. Классы
- 11. Классы и объекты Объект. Понятие "объект" не имеет в ООП канонического определения Объект- это осязаемая сущность,
- 12. Классы и объекты Класс / Экземпляр Класса Объект совокупность (разнотипных) данных (полей объекта), физически находящихся в
- 13. Классы и объекты Каждый класс может иметь подклассы - классы, обладающие всеми или частью его свойств,
- 14. Классы и объекты Рассмотрим основные этапы разработки класса. Прежде всего, необходимо привести описание разрабатываемого класса. При
- 15. Классы и объекты Варианты графического изображения класса на диаграмме классов Примеры графического изображения конкретных классов 2011
- 16. Классы и объекты Переменные класса и константы Данные – члены класса, которые называются полями или переменными
- 17. Классы и объекты Область видимости public private friendly (по умолчанию) protected 2011 © EPAM Systems, RD
- 18. Классы и объекты. Example 1 2011 © EPAM Systems, RD Dep. package _java._se._02.classandobject; import java.util.Calendar; import
- 19. Классы и объекты Конструкторы Конструктор – это метод, который автоматически вызывается при создании объекта класса и
- 20. Классы и объекты. Example 2 Пример использования super и this 2011 © EPAM Systems, RD Dep.
- 21. Классы и объекты. Example 3 Конструкторы. Пример перегрузки 2011 © EPAM Systems, RD Dep. package _java._se._02.classandobject;
- 22. Классы и объекты Объекты создаются динамически с помощью операции new, а уничтожаются автоматически. Когда никаких ссылок
- 23. Классы и объекты В Java пересмотрена концепция динамического распределения памяти: отсутствуют способы освобождения динамически выделенной памяти.
- 24. Классы и объекты. Example 4 2011 © EPAM Systems, RD Dep. package _java._se._02.classandobject; public class FinalizeDemo
- 25. Классы и объекты. Example 4 Результат выполнения: 2011 © EPAM Systems, RD Dep. сlass Student {
- 26. Классы и объекты Методы классов, передача параметров в методы Ссылки в методы передаются по значению. Выделяется
- 27. Классы и объекты. Example 5 Результат: 2011 © EPAM Systems, RD Dep. package _java._se._02.classandobject; import java.util.Date;
- 28. Классы и объекты Следовательно, при передаче в метод аргумента-ссылки можно изменить состояние объекта и оно сохранится
- 29. Классы и объекты. Example 6 Результат: 2011 © EPAM Systems, RD Dep. package _java._se._02.classandobject; public class
- 30. Классы и объекты Таким образом, при попытке в методе изменить через переданную ссылку константный объект приведет
- 31. Классы и объекты. Example 7 Результат: 2011 © EPAM Systems, RD Dep. package _java._se._02.classandobject; public class
- 32. Классы и объекты Если необходимо вернуть в вызывающий метод ссылку на новый константный объект, созданный в
- 33. Классы и объекты. Example 8 Результат: 2011 © EPAM Systems, RD Dep. package _java._se._02.classandobject; public class
- 34. Классы и объекты. Example 9 Явные и неявные параметры метода. Явные параметры метода определяются списком параметров.
- 35. Классы и объекты Статические методы и поля Поля данных, объявленные в классе как static, являются общими
- 36. Классы и объекты Для работы со статическими атрибутами используются статические методы, объявленные со спецификатором static. являются
- 37. Классы и объекты. Example 10 2011 © EPAM Systems, RD Dep. package _java._se._02.classandobject; public class Mark
- 38. Классы и объекты Статические поля используются довольно редко, а вод поля static final наоборот часто. Очень
- 39. Классы и объекты Статические методы не работают с объектами, поэтому их использовать следует в двух случаях:
- 40. Классы и объекты Модификатор final. Модификатор final используется для определения констант в качестве члена класса, локальной
- 41. Классы и объекты. Example 11 2011 © EPAM Systems, RD Dep. package _java._se._02.classandobject; public class Rector
- 42. Классы и объекты. Example 11 2011 © EPAM Systems, RD Dep. public boolean checkRights(final int num)
- 43. Классы и объекты Модификатор native Приложение на языке Java может вызывать методы, написанные на языке С++.
- 44. Классы и объекты Модификатор synchronized . При использовании нескольких потоков управления в одном приложении необходимо синхронизировать
- 45. Классы и объекты Блоки инициализации При описании класса могут быть использованы логические блоки. Логическим блоком называется
- 46. Классы и объекты При создании объекта блоки инициализации класса вызываются последовательно, в порядке размещения, вместе с
- 47. Классы и объекты. Example 12 2011 © EPAM Systems, RD Dep. package _java._se._02.classandobject; public class Department
- 48. Классы и объекты. Example 12 2011 © EPAM Systems, RD Dep. public static void main(String[] args)
- 49. Классы и объекты Инициализация полей класса. Общий порядок инициализации следующий При загрузке классов в память статические
- 50. Классы и объекты Если значение поля не задано в конструкторе явно, ему автоматически присваивается значение по
- 51. Классы и объекты Перегрузка методов. Метод называется перегруженным, если существует несколько его версий с одним и
- 52. Классы и объекты Перегрузка методов. Если в последнем случае списки параметров совпадают, то имеет место другой
- 53. Классы и объекты. Example 13 2011 © EPAM Systems, RD Dep. package _java._se._02.classandobject; public class NumberInfo
- 54. Классы и объекты. Example 13 Результат: 2011 © EPAM Systems, RD Dep. public static void main(String[]
- 55. Классы и объекты При непосредственной передаче объекта в метод выбор производится в зависимости от типа ссылки
- 56. Классы и объекты При перегрузке всегда следует придерживаться следующих правил: не использовать сложных вариантов перегрузки; не
- 57. Классы и объекты Класс java.lang.Object - родительский для всех классов Содержит следующие методы: protected Object clone()
- 58. Классы и объекты Переопределение метода equals() - метод equals() при сравнении двух объектов возвращает истину, если
- 59. Классы и объекты Переопределение метода hashCode() - метод int hashCode() возвращает хэш-код объекта, вычисление которого управляется
- 60. Классы и объекты Метод hashCode() переопределен, как правило, в каждом классе и возвращает число, являющееся уникальным
- 61. Классы и объекты Переопределение метода toString() - метод toString() следует переопределять таким образом, чтобы кроме стандартной
- 62. Классы и объекты. Example 14 2011 © EPAM Systems, RD Dep. package _java._se._02.classandobject; public class Student
- 63. Классы и объекты. Example 14 2011 © EPAM Systems, RD Dep. public boolean equals(Object obj) {
- 64. Классы и объекты Методы с переменным числом параметров !!! Возможность передачи в метод нефиксированного числа параметров
- 65. Классы и объекты. Example 15 Результат: 2011 © EPAM Systems, RD Dep. package _java._se._02.classandobject; public class
- 66. Классы и объекты. Example 16 2011 © EPAM Systems, RD Dep. package _java._se._02.classandobject; public class DemoOverload
- 67. Классы и объекты. Example 16 Результат: 2011 © EPAM Systems, RD Dep. public static void main(String[]
- 68. ТРИ КИТА ООП 2011 © EPAM Systems, RD Dep.
- 69. Три кита ООП Объектно-ориентированное программирование основано на трех принципах: Инкапсуляции; Наследовании; Полиморфизме. и одном механизме: Позднее
- 70. Три кита ООП Инкапсуляция (encapsulation) - это механизм, который объединяет данные и код, манипулирующий этими данными,
- 71. Три кита ООП 2011 © EPAM Systems, RD Dep. Инкапсуляция
- 72. Три кита ООП Наследование (inheritance) - это процесс, посредством которого один объект может приобретать свойства другого.
- 73. Три кита ООП 2011 © EPAM Systems, RD Dep. Наследование
- 74. Три кита ООП Полиморфизм (polymorphism) - это свойство, которое позволяет одно и то же имя использовать
- 75. Три кита ООП 2011 © EPAM Systems, RD Dep. Полиморфизм
- 76. Три кита ООП Позднее связывание. При вызове того или иного метода класса сначала ищется метод у
- 77. НАСЛЕДОВАНИЕ 2011 © EPAM Systems, RD Dep.
- 78. Наследование Понятие наследования. Один класс может наследовать или расширять поля и методы другого класса с помощью
- 79. Наследование 2011 © EPAM Systems, RD Dep. Иерархии классов
- 80. Наследование Переопределение методов. Переопределенным методом называют метод, описанный в производном классе, сигнатура этого метода совпадает с
- 81. Наследование. Example 17 public class Book { private String title; private int yearPublished; private int price;
- 82. Наследование. Example 17 public class ProgrammerBook extends Book{ public ProgrammerBook(String title, int yearPublished, int price, String
- 83. Наследование. Example 18 public class CourseHelper { public Course getCourse(){ System.out.println("Course"); return new Course(); } }
- 84. Наследование. Example 18 В данной ситуации при компиляции в подклассе BaseCourseHelper создаются два метода. При обращении
- 85. Наследование Вызов конструкторов при наследовании. При создании объектов производного класса, конструктор производного класса вызывает соответствующий конструктор
- 86. Наследование. Example 19 Следует помнить, что при вызове show() обращение производится к ближайшему суперклассу. 2011 ©
- 87. Наследование. Example 20 Ссылки на суперкласс и их свойства. Объектная переменная базового класса может ссылаться на
- 88. Наследование Когда вызывается метод, принадлежащий объекту, происходит следующее. Компилятор проверяет объявленный тип объекта и имя метода.
- 89. Наследование Затем компилятор определяет типы параметров, указанных при вызове метода. Если среди всех методов с именем
- 90. Наследование Если метод является закрытым (private), статическим (static), терминальным (final) или конструктором, компилятор точно знает, какой
- 91. Наследование Если при выполнении программы для вызова метода используется динамическое связывание, виртуальная машина должна вызвать версию
- 92. Наследование. Example 21 Предотвращение переопределения методов. Чтобы предотвратить переопределение некоторых их необходимо объявить терминальными с помощью
- 93. Наследование Классы, объявленные как терминальными, нельзя расширить. Объявить терминальный класс можно следующим образом. 2011 © EPAM
- 94. Наследование Приведение типов при наследовании. Как известно, в языке Java каждая объектная переменная имеет тип, описывающий
- 95. Наследование. Example 22 public class BookInspector { public static void main(String[] args){ Book[] mybook = new
- 96. Наследование При недопустимом преобразовании типов при выполнении программы система обнаружит несоответствие и возбудит исключительную ситуацию. Если
- 97. Наследование. Example 23 public class BookInspector { public static void main(String[] args) { Book[] mybook =
- 98. Наследование Компилятор не позволить выполнить некорректное приведение типов. Например, приведение типов 2011 © EPAM Systems, RD
- 99. Наследование Абстрактные методы и классы. Часто при проектировании иерархии классов верхние классы иерархии становятся все более
- 100. Наследование. Example 24 Абстрактные классы объявляются с ключевым словом abstract и могут содержать объявления абстрактных методов,
- 101. Наследование. Example 24 public abstract class GraphicObject { public abstract void draw(); //абстрактный метод public void
- 102. Наследование. Example 25 public abstract class Book { private String title; private int yearPublished; private int
- 103. Наследование. Example 25 public class ProgrammerBook extends Book{ public ProgrammerBook(String title, int year_published, int price, String
- 104. Наследование При расширении абстрактного класса все его абстрактные методы необходимо определить или подкласс также объявить абстрактным.
- 105. Наследование. Example 26 Статические методы при наследовании. Для статических методов в Java полиморфизм неприменим 2011 ©
- 106. Наследование. Example 27 Наследование от стандартных классов. Кроме собственных Java позволяет расширять и стандартные классы. 2011
- 107. ИНТЕРФЕЙСЫ 2011 © EPAM Systems, RD Dep.
- 108. Интерфейсы Интерфейсы в Java применяются для добавления к классам новых возможностей, которых нет и не может
- 109. Интерфейсы Определение интерфейса. Синтаксис определения интерфейса следующий. 2011 © EPAM Systems, RD Dep. доступ interface имя_интерфейса
- 110. Интерфейсы. Example 28 Реализация интерфейса происходит в классе с помощью ключевого слова implements. Если реализуемых интерфейсов
- 111. Интерфейсы. Example 28 public class Circle implements Square{ private int r; public Circle(int r) { this.r
- 112. Интерфейсы Свойства интерфейсов. C помощью оператора new нельзя создать экземпляр интерфейса. Можно объявлять интерфейсные ссылки. Интерфейсные
- 113. Интерфейсы. Example 29 public class Test { public static void main(String[] args) { Box box =
- 114. Интерфейсы. Example 30 Вложенные интерфейсы. Интерфейсы можно вложить (объявить членом) другого класса или интерфейса. В этом
- 115. Интерфейсы. Example 31 Интерфейсы и обратные вызовы. Обратным вызовом (callback) называется набор инструкций, который выполняется всякий
- 116. Интерфейсы. Example 31 2011 © EPAM Systems, RD Dep. class TimePrinter implements ActionListener { public void
- 117. Интерфейсы Существуют ИСТОЧНИК события, СЛУШАТЕЛЬ события и непосредственно само СОБЫТИЕ. С точки зрения Java все эти
- 118. Интерфейсы Клонирование объектов. Интерфейс Cloneable. Рассмотрим ситуацию, когда в метод передается ссылка на объект и метод
- 119. Интерфейсы. Example 32 2011 © EPAM Systems, RD Dep. import java.util.Date; public class MyDate { private
- 120. Интерфейсы Результат программы следующий: Year: 2008 mounth: 7 day: 3 Year: 2008 mounth: 7 day: 3
- 121. Интерфейсы. Example 33 Результат выполнения программы: Year: 2008 mounth: 7 day: 3 Year: 2008 mounth: 7
- 122. Интерфейсы Метод clone() существует практически во всех библиотечных классах. Однако, в классах, разрабатываемых самим программистом, метод
- 123. Интерфейсы Для того, чтобы переопределить метод clone() необходимо реализовать интерфейс Cloneable и описать метод clone() с
- 124. Интерфейсы Класс Object содержит protected-метод clone(), осуществляющий побитовое копирование объекта производного класса. Сначала необходимо переопределить метод
- 125. Интерфейсы. Example 34 2011 © EPAM Systems, RD Dep. package _java._se._02.inheritance; public class Student implements Cloneable
- 126. Интерфейсы. Example 35 2011 © EPAM Systems, RD Dep. package _java._se._02.inheritance; import java.util.ArrayList; public class StudentDeepClone
- 127. Интерфейсы. Example 35 2011 © EPAM Systems, RD Dep. public Object clone() { try { StudentDeepClone
- 128. Интерфейсы. Example 36 Сравнение объектов. Интерфейс Comparable. Метод sort(…) класса Arrays позволяет упорядочивать массив, переданный ему
- 129. Интерфейсы Также этот метод упорядочивает и массив объектов при одном условии: объекты массива должны принадлежать классу,
- 130. Интерфейсы. Example 37 import java.util.Date; public class Book implements Comparable, Cloneable{ private String title; private int
- 131. Интерфейсы. Example 37 public int compareTo(Object object) { Book book=null; if(object instanceof Book) book = (Book)object;
- 132. ВВЕДЕНИЕ В DESIGN PATTERNS 2011 © EPAM Systems, RD Dep.
- 133. Введение в Design Patterns Шаблон это идея, метод решения, общий подход к целому классу задач, постоянно
- 134. Введение в Design Patterns GRASP. CREATOR Наиболее частой проблемой ОО-дизайна является проблема “Кто должен создавать объект
- 135. Введение в Design Patterns Пусть есть стол. Самый обычный стол состоит из столешницы и четырех ножек.
- 136. Введение в Design Patterns. Example 38 Есть два пути запрограммировать такое решение. Сначала попробует не использовать
- 137. Введение в Design Patterns. Example 38 package _java._se._01.pattern.creator.nocreator; public class Desk { private int width; private
- 138. Введение в Design Patterns. Example 39 Так как столешница и ножка стола – оба параллелепипеды, то
- 139. Введение в Design Patterns Да, объект создается, однако значительная часть логики создания объекта остается за его
- 140. Введение в Design Patterns. Example 40 package _java._se._01.pattern.creator.withcreator; import _java._se._01.pattern.creator.nocreator.Desk; import _java._se._01.pattern.creator.nocreator.Leg; public class Table {
- 141. Введение в Design Patterns GRASP. LOW COUPLING. Пусть нам надо напечатать следующую таблицу параметров. В таблице
- 142. Введение в Design Patterns. Example 41 Рассмотрим решение такой задачи без применения шаблона LowCoupling package _java._se._02.pattern.lowcoupling.nolowcoupling;
- 143. Введение в Design Patterns. Example 41 class Table{} class CircleTable extends Table{ private double radius; public
- 144. Введение в Design Patterns Classes coupling
- 145. Введение в Design Patterns. Example 42 package _java._se._02.pattern.lowcoupling.withlowcoupling; public class CircleTable extends Table { private int
- 146. Введение в Design Patterns. Example 42 package _java._se._02.pattern.lowcoupling.withlowcoupling; public class SquareTable { private int side; public
- 147. Введение в Design Patterns. Example 42 package _java._se._02.pattern.lowcoupling.withlowcoupling; public class Lister { private Table[] tables; public
- 148. Введение в Design Patterns Low coupling illustration
- 149. Введение в Design Patterns Преимущества использования шаблонов: Нет необходимости решать каждую задачу с нуля Использование проверенных
- 151. Скачать презентацию