Содержание
- 2. Платформа Java. Основные версии и продукты Java
- 3. Платформа Java Java -платформа обладает следующими преимуществами: переносимость, или кроссплатформенность; объектная ориентированность, создана эффективная объектная модель;
- 4. Основные версии и продукты Java Впервые Java была объявлена 23 мая 1995 года. Основными продуктами, доступными
- 5. Стандартные библиотеки Java Первая версия содержала всего 8 стандартных библиотек: java.lang - базовые классы, необходимые для
- 6. Система именования версий Обозначение версии состоит из трех цифр. Первой пока всегда стоит 1. Это означает,
- 7. Java 1.1 Основные недостатки, обнаруженные в версии 1.0, были: низкая производительность, бедные возможности AWT, отсутствие работы
- 8. Java 2 Выход следующей версии Java 1.2 много раз откладывался, но в итоге она настолько превзошла
- 9. Java 7
- 10. Методология процедурно-ориентированного программирования
- 11. Методология процедурно-ориентированного программирования Исходным в данной методологии является понятие алгоритма. Алгоритм - это способ решения вычислительных
- 12. Методология структурного программирования Появление и интенсивное использование условных операторов и оператора безусловного перехода стало предметом острых
- 13. Методология и принципы объектно-ориентированного программирования
- 14. Методология объектно-ориентированного программирования Увеличение размеров программ приводило к необходимости привлечения большего числа программистов, что, в свою
- 15. Моделирование задачи в ООП
- 16. Достоинства ООП ООП обладает следующими преимуществами: уменьшение сложности программного обеспечения; повышение надежности программного обеспечения; обеспечение возможности
- 17. Понятие объекта, класса. Типы отношений между классами
- 18. Понятие объекта Будем называть объектом понятие, абстракцию или любой предмет с четко очерченными границами, имеющий смысл
- 19. Состояние Состояние (state) - совокупный результат поведения объекта: одно из стабильных условий, в которых объект может
- 20. Поведение Поведение (behavior) - действия и реакции объекта, выраженные в терминах передачи сообщений и изменения состояния
- 21. Уникальность Уникальность - это то, что отличает объект от других объектов. Например, у вас может быть
- 22. Классы Все монеты из предыдущего примера принадлежат одному и тому же классу объектов (именно с этим
- 23. Инкапсуляция Инкапсуляция (encapsulation) - это сокрытие реализации класса и отделение его внутреннего представления от внешнего (интерфейса).
- 24. Наследование Наследование (inheritance) - это отношение между классами, при котором класс использует структуру или поведение другого
- 25. Полиморфизм Слово "полиморфизм " означает "имеющий много форм". Полиморфизм (polymorphism) - положение теории типов, согласно которому
- 26. Процедурный полиморфизм В процедурном программировании тоже существует понятие полиморфизма, которое отличается от рассмотренного механизма в ООП.
- 27. Типы отношений между классами Возможны следующие связи между классами в рамках объектной модели (приводятся лишь наиболее
- 28. Достоинства и недостатки объектно-ориентированного программирования
- 29. Достоинства ООП Классы позволяют проводить конструирование из полезных компонентов, обладающих простыми инструментами, что позволяет абстрагироваться от
- 30. Достоинства ООП Полиморфизм оказывается полезным преимущественно в следующих ситуациях. Обработка разнородных структур данных. Программы могут работать,
- 31. Достоинства ООП Сокращается время на разработку, которое может быть отдано другим задачам. Компоненты многоразового использования обычно
- 33. Скачать презентацию
Платформа Java. Основные версии и продукты Java
Платформа Java. Основные версии и продукты Java
Платформа Java
Java -платформа обладает следующими преимуществами:
переносимость, или кроссплатформенность;
объектная
Платформа Java
Java -платформа обладает следующими преимуществами:
переносимость, или кроссплатформенность;
объектная
привычный синтаксис С/С++;
встроенная и прозрачная модель безопасности;
ориентация на Internet-задачи, сетевые распределенные приложения;
динамичность, легкость развития и добавления новых возможностей;
простота освоения.
Основные версии и продукты Java
Впервые Java была объявлена 23 мая
Основные версии и продукты Java
Впервые Java была объявлена 23 мая
Java language specification, JLS, спецификация языка Java (описывающая лексику, типы данных, основные конструкции и т.д.);
спецификация JVM (предназначена в первую очередь для создателей виртуальных машин, а потому практически не используется Java -программистами);
Java Development Kit, JDK - средство разработчика, состоящее в основном из утилит, стандартных библиотек классов и демонстрационных примеров. JDK не содержит никаких текстовых редакторов, а оперирует только уже существующими Java -файлами. Компилятор представлен утилитой javac ( java compiler). Виртуальная машина реализована программой java.
Стандартные библиотеки Java
Первая версия содержала всего 8 стандартных библиотек:
java.lang - базовые
Стандартные библиотеки Java
Первая версия содержала всего 8 стандартных библиотек:
java.lang - базовые
java.util - многие полезные вспомогательные классы;
java.applet - классы для создания апплетов ;
java.awt, java.awt.peer - библиотека для создания графического интерфейса пользователя ( GUI ), называется Abstract Window Toolkit, AWT;
java.awt.image - дополнительные классы для работы с изображениями;
java.io - работа с потоками данных (streams) и с файлами;
java.net - работа с сетью.
Система именования версий
Обозначение версии состоит из трех цифр.
Первой пока всегда
Система именования версий
Обозначение версии состоит из трех цифр.
Первой пока всегда
Вторая цифра изменялась от 0 до 7 (последняя на момент создания курса). В каждой версии происходило существенное расширение стандартных библиотек (212, 504, 1781, 2130 и 2738 - количество классов и интерфейсов с 1.0 по 1.4), а также добавлялись некоторые новые возможности в сам язык. Менялись и утилиты, входящие в JDK.
Наконец, третья цифра означает развитие одной версии. В языке или библиотеках ничего не меняется, лишь устраняются ошибки, производится оптимизация, могут меняться (добавляться) аргументы утилит. Так, последняя версия JDK 1.0 - 1.0.2.
Хотя с развитием версии 1.х ничего не удаляется, конечно, какие-то функции или классы устаревают. Они объявляются deprecated, и хотя они будут поддерживаться до объявления 2.0 (а про нее пока ничего не было слышно), пользоваться ими не рекомендуется.
Java 1.1
Основные недостатки, обнаруженные в версии 1.0, были: низкая производительность, бедные
Java 1.1
Основные недостатки, обнаруженные в версии 1.0, были: низкая производительность, бедные
С октября 1996 года Sun развивает новый продукт - Just-In-Time компилятор, JIT. В том же году были добавлены многие новые важные возможности: JavaBeans, JDBC (Java DataBase Connectivity), RMI (Remote Method Invocation), усовершенствованы поддержка национальных языков и система безопасности.
За первые три недели JDK 1.1 был скачан более 220 тыс. раз, через год - более 2 млн. раз. Сейчас версия 1.1 считается устаревшей и ее развитие остановилось на 1.1.8.
В апреле 1997 года объявляется, что компании Sun и Netscape планируют объединить технологии AWT и IFC для создания нового продукта Java Foundation Classes, JFC, в который должны войти: усовершенствованный оконный интерфейс Swing; реализация Drag-and-Drop; поддержка 2D-графики, более удобная работа с изображениями; Accessibility API для пользователей с ограниченными возможностями и другие функции.
Java 2
Выход следующей версии Java 1.2 много раз откладывался, но в
Java 2
Выход следующей версии Java 1.2 много раз откладывался, но в
Список появившихся возможностей очень широк, поэтому перечислим наиболее значимые из них: существенно переработанная модель безопасности, введены понятия политики (policy) и разрешения (permission); JFC стал стандартной частью JDK, причем библиотеки стали называться, например, javax.swing для Swing; полностью переработанная библиотека коллекций (collection framework) - классов для хранения набора объектов; Java Plug-in был включен в JDK; улучшения в производительности, глобализации, защита от "проблемы-2000". С февраля 1999 года исходный код самой JVM был открыт для бесплатного доступа всем желающим.
Самое же существенное изменение произошло 15 июня 1999 года, спустя полгода после выхода JDK 1.2. На конференции разработчиков JavaOne компания Sun объявила о разделении развития платформы Java 2 на три направления:
Java 2 Platform, Standard Edition ( J2SE );
Java 2 Platform, Enterprise Edition ( J2EE );
Java 2 Platform, Micro Edition ( J2ME ).
Java 7
Java 7
Методология процедурно-ориентированного программирования
Методология процедурно-ориентированного программирования
Методология процедурно-ориентированного программирования
Исходным в данной методологии является понятие алгоритма. Алгоритм
Методология процедурно-ориентированного программирования
Исходным в данной методологии является понятие алгоритма. Алгоритм
При увеличении объемов программ для упрощения их разработки появилась необходимость разбивать большие задачи на подзадачи. В языках программирования возникло и закрепилось новое понятие процедуры. Как и алгоритм, процедура представляет собой законченную последовательность действий или операций, направленных на решение отдельной задачи. Например, на языке Pascal описание процедуры выглядит следующим образом:
Procedure printGreeting(name: String)
Begin
Write("Hello, ");
WriteLn(name);
End;
Методология структурного программирования
Появление и интенсивное использование условных операторов и оператора безусловного
Методология структурного программирования
Появление и интенсивное использование условных операторов и оператора безусловного
Дальнейшее увеличение программных систем способствовало формированию новой точки зрения на процесс разработки программ и написания программных кодов, которая получила название методологии структурного программирования. Ее основой является процедурная декомпозиция предметной области решаемой задачи и организация отдельных модулей в виде совокупности процедур. В рамках этой методологии получило развитие нисходящее проектирование программ, или проектирование "сверху вниз". Пик популярности идей структурного программирования приходится на конец 70-х - начало 80-х годов.
Методология и принципы объектно-ориентированного программирования
Методология и принципы объектно-ориентированного программирования
Методология объектно-ориентированного программирования
Увеличение размеров программ приводило к необходимости привлечения большего
Методология объектно-ориентированного программирования
Увеличение размеров программ приводило к необходимости привлечения большего
Как показала практика, традиционные методы процедурного программирования не способны справиться ни с нарастающей сложностью программ и их разработки, ни с необходимостью повышения их надежности. Во второй половине 80-х годов возникла настоятельная потребность в новой методологии программирования, которая была бы способна решить весь этот комплекс проблем. Ею стало объектно-ориентированное программирование (ООП).
Объектно-ориентированный подход к проектированию основан на представлении предметной области задачи в виде множества моделей для независимой от языка разработки программной системы на основе ее прагматики.
Прагматика определяется целью разработки программной системы, например, обслуживание клиентов банка, управление работой аэропорта, обслуживание чемпионата мира по футболу и т.п. В формулировке цели участвуют предметы и понятия реального мира, имеющие отношение к создаваемой системе.
Моделирование задачи в ООП
Моделирование задачи в ООП
Достоинства ООП
ООП обладает следующими преимуществами:
уменьшение сложности программного обеспечения;
повышение надежности программного обеспечения;
обеспечение
Достоинства ООП
ООП обладает следующими преимуществами:
уменьшение сложности программного обеспечения;
повышение надежности программного обеспечения;
обеспечение
обеспечение возможности повторного использования отдельных компонентов программного обеспечения.
Систематическое применение объектно-ориентированного подхода позволяет разрабатывать хорошо структурированные, надежные в эксплуатации, достаточно просто модифицируемые программные системы. Этим объясняется интерес программистов к объектно-ориентированному подходу и объектно-ориентированным языкам программирования. ООП является одним из наиболее интенсивно развивающихся направлений теоретического и прикладного программирования.
Понятие объекта, класса.
Типы отношений между классами
Понятие объекта, класса.
Типы отношений между классами
Понятие объекта
Будем называть объектом понятие, абстракцию или любой предмет с четко
Понятие объекта
Будем называть объектом понятие, абстракцию или любой предмет с четко
понимание прикладной задачи (проблемы);
введение основы для реализации на компьютере.
Каждый объект имеет определенное время жизни. В процессе выполнения программы, или функционирования какой-либо реальной системы, могут создаваться новые объекты и уничтожаться уже существующие.
Гради Буч дает следующее определение объекта:
Объект - это мыслимая или реальная сущность, обладающая характерным поведением и отличительными характеристиками и являющаяся важной в предметной области.
Каждый объект имеет состояние, обладает четко определенным поведением и уникальной идентичностью.
Состояние
Состояние (state) - совокупный результат поведения объекта: одно из стабильных условий,
Состояние
Состояние (state) - совокупный результат поведения объекта: одно из стабильных условий,
Рассмотрим пример. Любой человек может находиться в некотором положении (состоянии): стоять, сидеть, лежать, и - в то же время совершать какие-либо действия.
Например, человек может прыгать, если он стоит, и не может - если он лежит, для этого ему потребуется сначала встать. Также в объектно-ориентированном программировании состояние объекта может определяться наличием или отсутствием связей между моделируемым объектом и другими объектами.
Поведение
Поведение (behavior) - действия и реакции объекта, выраженные в терминах передачи
Поведение
Поведение (behavior) - действия и реакции объекта, выраженные в терминах передачи
Результат выполнения действий зависит от состояния объекта на момент совершения действия.
В терминологии объектно-ориентированного подхода понятия "действие", "сообщение" и "метод" являются синонимами. Т.е. выражения "выполнить действие над объектом ", "вызвать метод объекта " и "послать сообщение объекту для выполнения какого-либо действия" эквивалентны. Последняя фраза появилась из следующей модели. Программу, построенную по технологии ООП, можно представить себе как виртуальное пространство, заполненное объектами, которые условно "живут" некоторой жизнью. Их активность проявляется в том, что они вызывают друг у друга методы, или посылают друг другу сообщения. Внешний интерфейс объекта, или набор его методов,- это описание того, какие сообщения он может принимать.
Уникальность
Уникальность - это то, что отличает объект от других объектов. Например,
Уникальность
Уникальность - это то, что отличает объект от других объектов. Например,
В машинном представлении под параметром уникальности объекта чаще всего понимается адрес размещения объекта в памяти.
Identity ( уникальность ) объекта состоит в том, что всегда можно определить, указывают две ссылки на один и тот же объект или на разные объекты. При этом два объекта могут во всем быть похожими, их образ в памяти может представляться одинаковыми последовательностями байтов, но, тем не менее, их Identity может быть различна.
Наиболее распространенной ошибкой является понимание уникальности как имени ссылки на объект. Это неверно, т.к. на один объект может указывать несколько ссылок, и ссылки могут менять свои значения (ссылаться на другие объекты).
Итак, уникальность (identity) - свойство объекта; то, что отличает его от других объектов (автор не согласен с переводом русского издания, поэтому здесь приводится авторский перевод).
Классы
Все монеты из предыдущего примера принадлежат одному и тому же классу
Классы
Все монеты из предыдущего примера принадлежат одному и тому же классу
Все объекты одного и того же класса описываются одинаковыми наборами атрибутов. Однако объединение объектов в классы определяется не наборами атрибутов, а семантикой. Так, например, объекты "конюшня" и "лошадь" могут иметь одинаковые атрибуты: цена и возраст. При этом они могут относиться к одному классу, если рассматриваются в задаче просто как товар, либо к разным классам, если в рамках поставленной задачи будут использоваться по-разному, т.е. над ними будут совершаться разные действия.
Объединение объектов в классы позволяет рассмотреть задачу в более общей постановке. Класс имеет имя (например, "лошадь"), которое относится ко всем объектам этого класса. Кроме того, в классе вводятся имена атрибутов, которые определены для объектов. В этом смысле описание класса аналогично описанию типа структуры или записи (record), широко применяющихся в процедурном программировании; при этом каждый объект имеет тот же смысл, что и экземпляр структуры (переменная или константа соответствующего типа).
Класс - это шаблон поведения объектов определенного типа с заданными параметрами, определяющими состояние. Все экземпляры одного класса (объекты, порожденные от одного класса) имеют один и тот же набор свойств и общее поведение, то есть одинаково реагируют на одинаковые сообщения.
Инкапсуляция
Инкапсуляция (encapsulation) - это сокрытие реализации класса и отделение его внутреннего
Инкапсуляция
Инкапсуляция (encapsulation) - это сокрытие реализации класса и отделение его внутреннего
Внутри объекта данные и методы могут обладать различной степенью открытости (или доступности). Они позволяют более тонко управлять свойством инкапсуляции.
Открытые члены класса составляют внешний интерфейс объекта. Это та функциональность, которая доступна другим классам. Закрытыми обычно объявляются все свойства класса, а также вспомогательные методы, которые являются деталями реализации и от которых не должны зависеть другие части системы.
Наследование
Наследование (inheritance) - это отношение между классами, при котором класс использует
Наследование
Наследование (inheritance) - это отношение между классами, при котором класс использует
Использование наследования способствует уменьшению количества кода, созданного для описания схожих сущностей, а также способствует написанию более эффективного и гибкого кода.
Некоторый класс также может наследовать свойства и поведение сразу нескольких классов. Наиболее популярным примером применения множественного наследования является проектирование системы учета товаров в зоомагазине.
Все животные в зоомагазине являются наследниками класса "Животное", а также наследниками класса "Товар". Т.е. все они имеют возраст, нуждаются в пище и воде и в то же время имеют цену и могут быть проданы.
Полиморфизм
Слово "полиморфизм " означает "имеющий много форм". Полиморфизм (polymorphism) -
Полиморфизм
Слово "полиморфизм " означает "имеющий много форм". Полиморфизм (polymorphism) -
Point[] p = new Point[1000];
Line[] l = new Line[1000];
Circle[] c = new Circle[1000];
Box[] b = new Box[1000];
...
// предположим, в этом месте происходит
// заполнение всех массивов соответствующими
// объектами
...
for(int i = 0; i < p.length;i++) {
//цикл с перебором всех ячеек массива.
//вызов метода draw() в случае,
// если ячейка не пустая.
if(p[i]!=null) p[i].draw();
}
for(int i = 0; i < l.length;i++) {
if(l[i]!=null) l[i].draw();
}
for(int i = 0; i < c.length;i++) {
if(c[i]!=null) c[i].draw();
}
for(int i = 0; i < b.length;i++) {
if(b[i]!=null) b[i].draw();
}
Point p[] = new Point[1000];
p[0] = new Circle();
p[1] = new Point();
p[2] = new Box();
p[3] = new Line();
...
for(int i = 0; i < p.length;i++) {
if(p[i]!=null) p[i].draw();
}
...
Без использования полиморфизма
С использованием полиморфизма
Процедурный полиморфизм
В процедурном программировании тоже существует понятие полиморфизма, которое отличается от
Процедурный полиморфизм
В процедурном программировании тоже существует понятие полиморфизма, которое отличается от
Примером использования перегрузки методов в языке Java может служить класс PrintWriter, который применяется, в частности, для вывода сообщений на консоль. Этот класс имеет множество методов println, которые различаются типами и/или количеством входных параметров. Вот лишь несколько из них:
void println()
// переход на новую строку
void println(boolean x)
// выводит значение булевской
// переменной (true или false)
void println(String x)
// выводит строку - значение
// текстового параметра.
Типы отношений между классами
Возможны следующие связи между классами в рамках объектной
Типы отношений между классами
Возможны следующие связи между классами в рамках объектной
агрегация (Aggregation) - отношение между классами типа "содержит" (contain) или "состоит из" называется агрегацией, или включением. ;
ассоциация (Association) - объекты одного класса ссылаются на один или более объектов другого класса, но ни в ту, ни в другую сторону отношение между объектами не носит характера "владения", или контейнеризации;
наследование (Inheritance) - отношение между классами, при котором класс использует структуру или поведение другого класса (одиночное наследование ), или других (множественное наследование ) классов;
метаклассы (Metaclass) - шаблон, описывающий свойства и поведение различных классов.
Достоинства и недостатки объектно-ориентированного программирования
Достоинства и недостатки объектно-ориентированного программирования
Достоинства ООП
Классы позволяют проводить конструирование из полезных компонентов, обладающих простыми
Достоинства ООП
Классы позволяют проводить конструирование из полезных компонентов, обладающих простыми
Данные и операции над ними образуют определенную сущность, и они не разносятся по всей программе, как нередко бывает в случае процедурного программирования, а описываются вместе. Локализация кода и данных улучшает наглядность и удобство сопровождения программного обеспечения.
Инкапсуляция позволяет привнести свойство модульности, что облегчает распараллеливание выполнения задачи между несколькими исполнителями и обновление версий отдельных компонентов.
ООП дает возможность создавать расширяемые системы. Это одно из основных достоинств ООП. Расширяемость означает, что существующую систему можно заставить работать с новыми компонентами, причем без внесения в нее каких-либо изменений. Компоненты могут быть добавлены на этапе исполнения программы.
Достоинства ООП
Полиморфизм оказывается полезным преимущественно в следующих ситуациях.
Обработка разнородных структур данных.
Достоинства ООП
Полиморфизм оказывается полезным преимущественно в следующих ситуациях.
Обработка разнородных структур данных.
Изменение поведения во время исполнения. На этапе исполнения один объект может быть заменен другим, что позволяет легко, без изменения кода, адаптировать алгоритм в зависимости от того, какой используется объект.
Реализация работы с наследниками. Алгоритмы можно обобщить настолько, что они уже смогут работать более чем с одним видом объектов.
Создание "каркаса" (framework). Независимые от приложения части предметной области могут быть реализованы в виде набора универсальных классов, или каркаса (framework), и в дальнейшем расширены за счет добавления частей, специфичных для конкретного приложения.
Достоинства ООП
Сокращается время на разработку, которое может быть отдано другим задачам.
Компоненты
Достоинства ООП
Сокращается время на разработку, которое может быть отдано другим задачам.
Компоненты
Когда некий компонент используется сразу несколькими клиентами, улучшения, вносимые в его код, одновременно оказывают положительное влияние и на множество работающих с ним программ.
Если программа опирается на стандартные компоненты, ее структура и пользовательский интерфейс становятся более унифицированными, что облегчает ее понимание и упрощает использование.