Цели ООП уменьшение сложности разработки составных частей программной системы, тем самым – увеличение сложности создаваемых приложений; повышение надежности,

Презентация:



Advertisements
Похожие презентации
Введение в объектно- ориентированное программирование на JAVA Макаревич Л. Г.
Advertisements

Java: современные технологии разработки ПО Вашенков О.Е. ООО «РСС», разработчик ПО.
Платформа Java SE: введение Андрей Дмитриев
Компьютерные технологии в метеорологии (Java-технологии) Чукин В. В.
1 Java. Введение JDK, JRE, JVM, IDE Ерофеева Елена Анатольевна ассистент кафедры МПУ.
Вперёд ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЦЕЛИ: ЦЕЛИ: 1. Средство для задания действий, которые должны быть выполнены машиной.(Машинный язык) 1. Средство для задания.
JavaScript JavaScript – объектно-ориентированный скриптовый язык программирования, разрабатываемый компанией Sun Microsystems. Является диалектом языка.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
1. ЧТО ТАКОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ? НАБОР ПРОГРАММ В ПАМЯТИ КОМПЬЮТЕРА 2. ИЗ КАКИХ ЧАСТЕЙ СОСТОИТ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ? КРОССОВЫЕ ТЕСТОВЫЕ СИСТЕМНЫЕ.
Работа с программами на языке JAVA. JAVA объектно-ориентированный язык программирования, разрабатываемый компанией Sun Microsystems. Приложения Java обычно.
Тема 5. Основы современной технологии программирования Программирование в средах современных информационных систем. Интегрированные системы разработки.
БЭСТ Дизайнер проектов Введение Концепции Основные понятия.
Язык программирования С++. КомпилируемыйКомпилируемый статически типизированный язык программирования общего назначения.статически типизированныйязык.
Обзор операционных систем ВОУНБ им. М. Горького «Операционная система - это совокупность программ, обеспечивающих управление процессом обработки информации.
Процедуры и функции. Разработал учитель информатики МБОУ СОШ 50 г. Краснодара Ракута Елизавета Григорьевна « Учиться и, когда придет время, прикладывать.
Тема 1.3. Сервисное программное обеспечение. 1. Понятие операционного окружения Операцио́нное окруже́ние (англ. operating environment) среда, в которой.
Jav a ЯЗЫК ПРОГРАММИРОВАНИЯ Java ИСТОРИЯ СОЗДАНИЯ Изначально язык назывался Oak («Дуб»), разрабатывался Джеймсом Гослингом для программирования бытовых.
Архитектура операционной системы. Ядро и вспомогательные модули операционной системы При функциональной декомпозиции ОС модули разделяются на две группы:
ФИЛОСОФИЯ.NET Любому современному программисту, который желает идти в ногу с последними веяниями, каждые несколько лет приходится переучиваться.
Объектно-ориентированное программирование Карпов В.Э. Смолток. Лекция 4. Байт-код.
Транксрипт:

Цели ООП уменьшение сложности разработки составных частей программной системы, тем самым – увеличение сложности создаваемых приложений; повышение надежности, устойчивости и управляемости программного обеспечения; взаимная независимость, т.е. обеспечение возможности модификации некоторых компонентов программного обеспечения без изменения остальных его компонентов; обеспечение возможности повторного использования отдельных компонентов программного обеспечения.

Уменьшение сложности – Достигается путем разбиения всей совокупности данных программной системы на иерархию взаимодействующих объектов – Далее для каждого класса объектов определяется минимально необходимая функциональность – Классы объектов с более сложной функциональностью наследуют основную функциональность от своих базовых классов Священный для ООП принцип KISS: Keep It Simple, Stupid

Надежность, устойчивость и управляемость всей системы объектов обеспечивается за счёт: – чёткого разделения ответственности объектов (за каждое действие отвечает строго определённый метод одного объекта); – однозначного определения интерфейсов межобъектного взаимодействия; – и полной изолированности внутренней структуры объекта от внешней среды.

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

Java: платформа и ОО-язык программирования Java – это объектно-ориентированный язык программирования со строгой типизацией. В то же время Java позиционируется как независимая от архитектуры процессора и операционной системы платформа для создания и исполнения приложений широкого спектра от простых настольных до распределенных серверных.

Основные отличительные черты Java Платформно-независимый язык (WORA: write once, run anywhere – написано однажды, работает везде) Объектная ориентированность со строгой типизацией Безопасность (нет указателей, не надо освобождать память, Garbage Collector) Устойчивость (проверка кода и при компиляции и при выполнении) Многопоточность (встроена в язык) Распределенность (легкость использования TCP/IP) Динамичность (легкость добавления новых возможностей ) Интерпретируемость (байт-код, виртуальная JAVA- машина + JIT- (Just In Time) компиляция) Облегченное изучение (синтаксически похож на С++)

Краткий экскурс в историю возникновения Java 1990 – 1992проект фирмы Sun OAK (дуб) 1995Java Development Kit (JDK) JDK – – 1999Software Development Kit (SDK) Java2 – 4 (JDK 1.2 – 1.4) 2004SDK Java5 2006SDK Java – 2012SDK Java7 (Oracle)

Количественные характеристики роста ВерсияКоличество классов и интерфейсов Количество полей и методов

Семейства технологий Java SE Java Standard Edition, основное издание Java, содержит компиляторы, API, Java Runtime Environment; подходит для создания пользовательских приложений, в первую очередь для настольных систем. Java SE Java EE Java Enterprise Edition, представляет собой набор спецификаций для создания программного обеспечения уровня предприятия. Java EE Java ME Java Micro Edition, создана для использования в устройствах, ограниченных по вычислительной мощности, например в мобильных телефонах, КПК, встроенных системах; Java ME JavaFX технология, являющаяся следующим шагом в эволюции Java как Rich Client Platform; предназначена для создания графических веб-интерфейсов корпоративных приложений в бизнесе. JavaFX Java Card технология, предоставляющая безопасную среду для приложений, работающих на смарт-картах и других устройствах с очень ограниченным объемом памяти и возможностями обработки. Java Card

JDK 1.0 Основные продукты: Java language specification (JLS) – спецификация языка Java (описывающая лексику, типы данных, основные конструкции и т.д.); спецификация Java Virtual Machine (JVM) – для создателей виртуальных машин (сейчас известно больше 100 ВМ); Java Development Kit (JDK) – набор средств разработчика, (утилиты, стандартные библиотеки классов и примеры). 8 стандартных библиотек: java.lang - базовые классы, необходимые для работы любого приложения (название - сокращение от language); java.util - многие полезные вспомогательные классы; java.applet - классы для создания апплетов; java.awt, java.awt.peer - библиотека для создания графического интерфейса пользователя, называется Abstract Window Toolkit; java.awt.image - дополнительные классы для работы с изображениями; java.io - работа с потоками данных (streams) и с файлами; java.net - работа с сетью.

JDK 1.1 Java Beans – программные компоненты RMI – вызов удаленных методов (распределенные приложения) JDBC – связь с базами данных Сериализация – сохранение и восстановление объектов JNI- взаимодействие с кодами, написанными на других языках Reflection – определение методов, свойств объекта во время выполнения программы Защита – цифровые подписи, генерация ключей, список управления доступом Символьные потоки Измененная обработка событий Внутренние классы

SDK 1.2 – 1.4 (Java2 – Java4) Библиотека Swing для создания графического интерфейса пользователя. Коллекции. Поддержка файлов Policy и цифровых сертификатов пользователя. Java 2D. Поддержка технологии drag-and-drop. Полная поддержка Unicode, включая поддержку ввода на японском, китайском и корейском языках. Полная поддержка технологии CORBA. JIT-компилятор, улучшенная производительность. Усовершенствования инструментальных средств JDK, в том числе поддержка профилирования Java-программ.

Java5 Перечислимые типы. Ранее отсутствовавшие в Java типы, оформлены по аналогии с C++, но имеют ряд дополнительных возможностей.C++ Аннотации возможность добавления в текст программы метаданных, не влияющих на выполнение кода, но допускающих использование для получения различных сведений о коде и его исполнении. Одно из применений аннотаций упрощение создания тестовых модулей для Java-кода. Средства обобщённого программирования (англ. generics) механизм, аналогичный реализованному в языке Eiffel (позже также появились и в C#, принципиально отличаются от шаблонов C++), дающий возможность создавать классы и методы с полями и параметрами произвольного объектного типа.Eiffel Autoboxing/Unboxing автоматическое преобразование между скалярными типами Java и соответствующими обертками (например, между int и Integer). Разрешено создание методов с неопределённым числом параметров. Разрешён импорт статических полей и методов. В язык введён цикл по коллекции объектов (итератор, англ. foreach). Введено использование Javadoc-комментариев, которые используются для автоматического оформления документации по комментариям специального вида в исходном коде.

Java6 – Java7 Изменение синтаксиса языка Java, предназначенные для упрощения общих задач программирования, в том числе: использование переменных класса String в блоке switch; использование двоичных чисел (binary literals) с префиксом «0b»; поддержка подчеркиваний в длинных числовых литералах для улучшения читаемости (например: 23_400_000_000_000_008_407L); упрощение вызова методов с переменным числом аргументов; поддержка динамической типизации. Автоматическое управление (освобождение) ресурсами, отличными от памяти (открытые файлы, …). Поддержка эллиптической криптографии. Строгая проверка (верификация) class-файлов. Обновление классов-коллекций, реализация работы с ними на уровне языка. Обновленная реализация графического пользовательского интерфейса. Новые интерфейсы ввода-вывода (nio.2). …

Состав JDK Java7

Первый пример приложения на Java /**Здесь предполагается описание класса в целом Firstname Lastname */ public class HelloWorld { /** Здесь описывается метод main args аргументы командной строки */ public static void main( String[] args ) { System.out.println( "Hello, World!" ); }

Структура первой программы Программа содержит единственный общедоступный (public) класс HelloWorld (вне классов в Java не могут определяться ни данные, ни функции) Этот класс образует (входит в) одноименный пакет, создаваемый компилятором по умолчанию при отсутствии явного указания package; о пакетах - позже В классе имеется единственный общедоступный статический (static) метод main, не возвращающий никакого значения Метод main получает (но в этом классе не использует) массив строк – аргументы командной строки; тип данных String – единственный предопределенный класс Единственный оператор, составляющий тело метода main, представляет собой вызов метода println класса out пакета (пространства имен) System Методу println передается строка (строковый литерал) "Hello, World!, которая будет выведена в поток ввода-вывода stdout

Начальные элементы соглашений о написании кода на Java Имена классов начинаются с прописной буквы; если имя содержит несколько слов, то каждое слово начинается с прописной буквы (HelloWorld). Имена методов и переменных начинаются со строчной буквы; если имя содержит несколько слов, то каждое следующее слово начинается со строчной буквы (main, homePageAddress, …). Имена констант записываются полностью прописными буквами; если имя состоит из нескольких слов, то между ними ставится знак подчеркивания (NULL, HOME_PAGE_ADDRESS, EMPTY_STRING …). Отступы (indent), пробелы вокруг знаков операций, скобок, разделителей и позиции фигурных скобок являются важной частью соглашений о кодировании. Существенную роль играют комментарии. Некоторые комментарии специального вида используются для документирования программ. …

Жизненный цикл приложения в утилите Apache Maven (1) Фаза жизненного цикла Описание Проверка достоверности или валидация (validate) Гарантирует полноценность текущей конфигурации и содержания POM. Включает в себя проверку файлов дерева pom.xml. Инициализация (initialize) Возможность выполнить любую инициализацию до выполнения основных задач в цикле создания. Создание исходников (generate-sources) Возможность для генераторов кода создать исходный код, исполняемый или компилируемый в последующих фазах. Обработка исходников (process-sources) Предназначена для анализа, модификации и трансформации исходного кода. Здесь могут быть обработаны, как обычный код, так и сгенерированный. Создание ресурсов (generate-resources) Возможность создания ресурсов, не заявленных в исходном коде. Обычно сюда включают файлы метаданных и конфигурации. Обработка ресурсов (process-resources) Управляет обработкой ресурсов, незаявленных в исходном коде. В ходе выполнения этой фазы возможна модификация, трансформация и перераспределение ресурсов.

Жизненный цикл приложения в утилите Apache Maven (2) Компиляция (compile)Компилирует исходный код. Скомпилированные классы перемещают в дерево целевого каталога. Обработка классов (process-classes) Выполняет любые шаги по трансформации и модернизации файла класса. В ходе выполнения этой фазы часто работают средства выработки байт-кода и инструментальные средства. Создание тестовых исходников (generate- test-sources) Время для работы амулетов, генерирующих код тестовых модулей. Обработка тестовых исходников (process- test-sources) Выполняет необходимую обработку тестового кода перед компиляцией. В ходе этой фазы исходный код может быть изменен, преобразован или скопирован. Создание тестовых ресурсов (generate-test- resources) Позволяет создать ресурсы, относящиеся к тестированию (не входящие в исходный код). Обработка тестовых ресурсов (process-test- resources) Обеспечивает обработку, трансформацию и перераспределение ресурсов, относящихся к тестированию.

Жизненный цикл приложения в утилите Apache Maven (3) Компиляция теста (test-compile) Компилирует исходный код модульных тестов. Тестирование (test)Запуск скомпилированного теста и формирование результатов. Упаковка (package)Упаковывает исполняемый двоичный код в дистрибутивный архив, например JAR или WAR. Прединтеграционный тест (pre-integration- test) Подготовка к интеграционному тестированию. Интеграционное тестирование относится, в этом случае, к тестированию кода (контролируемой копии) в фактической среде развертывания. На этом шаге может произойти развертывание архива на сервере для последующего исполнения. Интеграционный тест (integration-test) Выполнение фактических интеграционных тестов.

Жизненный цикл приложения в утилите Apache Maven (4) Постинтеграционный тест (post-integration- test) Делает откат после интеграционного теста. Это может повлечь за собой сброс или повторную инициализацию тестирующей среды. Подтверждение (verify) Подтверждение правильности и целостности развертываемого архива. После этой фазы происходит установка архива. Установка (install)Добавляет архив в локальный каталог Maven. За счет этого к нему обеспечивается доступ всем другим модулям, связанным с данным. Развертывание (deploy) Добавляет архив в удаленные каталоги Maven. Это делает артефакт доступным для большой аудитории.

Чисто консольная технология компиляции и исполнения Предполагается, что JDK и JRE установлены, находятся в C:\Program Files\Java\jdk1.6.0 (и …\jre1.6.0) и что в переменной окружения path есть пути C:\Program Files\Java\jdk1.6.0\bin и C:\Program Files\Java\jdk1.6.0\lib Сохранить программу в текстовом файле с именем HelloWorld.java (имя файла должно совпадать с именем класса) Выполнить компиляцию программы в байт-код (будет построен файл HelloWorld.class) Вызвать виртуальную машину Java, исполнить программу

Сборка проектов с использованием Apache Ant (или Apache Maven ) Простые проекты можно собирать из командной строки. Если собирать большие проекты из командной строки, то последовательность команд для сборки будет очень длинной, поэтому её записывают в bat/sh скрипт. Но такие скрипты существенно зависят от платформы. Для того чтобы избавиться от этой зависимости, используют инструменты для сборки проектов: Apache Ant – платфомно независимая утилита, использующая xml-файлы в качестве описания последовательности действий по сборке. Apache Maven – надстройка над Ant, обеспечивающая декларативное, а не императивное описание проектов, и существенно использующая Интернет при сборке.

Консольная технология с использованием утилиты ant Утилита ant является свободным ПО и может быть загружена с сайта Предполагается, что утилита ant установлена, находится в C:\Program Files\ant и этот путь добавлен к переменной окружения path Предполагается, что JDK и JRE установлены, находятся в C:\Program Files\Java\jdk1.6.0 (и …\jre1.6.0 соответственно) и что в переменной path есть пути C:\Program Files\Java\jdk1.6.0\bin и C:\Program Files\Java\jdk1.6.0\lib

Последовательность действий: Создать главную папку проекта (например – …\myProject) Сохранить программу в текстовом файле с именем HelloWorld.java (имя класса, объявленного как public, должно совпадать с именем файла) в папке с именем (например) …\myProject\src В папке myProject сoздать два файла: runant.bat (показан на следующем слайде) build.xml (показан через один слайд) Выполнить runant.bat Выполнить скомпилированный класс Выполнить этот класс из архива jar

Файл запуска ant set JAVA_HOME=" C:\Program files\java \jdk1.6.0" set ANT_OPTS="-Dos.name=Windows_NT" "C:\Program

Файл проекта ant: build.xml

Пример запуска ant и выполнения результатов

Первый проект с использованием IDE Netbeans

Последовательность действий Запустить NetBeans В меню щелкнуть по: Файл/Создать проект Выбрать категорию проекта Java и тип проекта Приложение Java, щелкнуть по кнопке Далее Указать имя и расположение проекта, остальные поля пока не трогать, щелкнуть по кнопке Готово В сформированном тексте java-программы заменить строку // TODO … оператором System.out.println(Hello, World!); Запустить приложение: клавиша F6 или зеленый треугольник вправо в тулбаре (при первом запуске, или если текст программы был изменен – выполняется сборка проекта с использованием утилиты ant по умолчанию)