Lektsia_1.ppt
- Количество слайдов: 20
Прикладное программирование Афанасьева Лиана Александровна
Основы Java — объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems в 1995 год (в последующем, приобретённой компанией Oracle).
Взаимосвязь между Java и языками С и С++ l l От С язык Java унаследовал синтаксис, а от С++ - объектную модель.
Основные характеристики Java Простота Java обладает лаконичными, тесно связанными друг с другом и легко усваиваемыми языковыми средствами l Безопасность Java предоставляет безопасные средства для создания интернет-приложений l Переносимость Программы на Java могут выполняться в любой среде, для которой имеется исполняюща система Java l
Безопасность l Защита от атак реализуется путем создания специальной среды для выполнения аплета, не позволяющей ему обращаться к ресурсам компьютера. При отсутствии такой среды аплет выполняться не может (далее будет показано, как решается подобная задача). Возможность загружать аплет с уверенностью в том, что он не нанесет вреда системе, относится к числу наиболее привлекательных особенностей Java.
Переносимость l l l Переносимость является важным свойством сетевых программ. Например, один и тот же аплет должен работать на машинах с разнотипными процессорами, в разных операционных системах и с различными браузерами. Один и тот же код должен работать на всех машинах. Таким образом, необходима поддержка процесса генерации переносимого исполняемого кода. Как станет ясно в дальнейшем, те же самые средства, которые обеспечивают безопасность, помогают добиться переносимости программ.
Основные характеристики Java Объектно-ориентираванный характер В Jаva воплощена современная философия объектноориентированного программирования l Архитектурная независимость Язык Jаva не привязан к конкретному типу вычислительной машины или архитектуре операционной системы l Интерпретируемость Java предоставляет байт-код, обеспечивающий независимость от платформы l Высокая производительность Байт-код Jаvа максимально оптимизируется для повышения производительности l
Волшебный байт-код Java l Добиться безопасности и переносимости программ по сети позволяет генерируемый компилятором Java код, не являющийся исполняемым. Такой код называется байткодом. Его оптимизированный набор команд, предназначенных для выполнения в исполняющей системе Java, называемой виртуальной машиной Java (Java Virtual Machine -JVМ). Виртуальная машина Java, по существу, представляет собой интерпретатор байт-кода.
l l ВОПРОС. Если задачи переносимости и безопасности оказались столь актуальными, то зачем для их решения нужно было создавать новый язык программирования вроде Java. Не проще ли было адаптировать для этой цели уже существующий язык, например С++? Иными словами, можно ли создать компилятор С++, который генерировал бы байт-код? ОТВЕТ. Создание компилятора С++, который вместо исполняемого кода генерировал бы байт-код, вполне возможно, но язык С++ обладает рядом свойств, препятствующих его использованию для разработки интернет-приложений. Самым важным из них является поддержка указателей. Указатель содержит адрес некоторого объекта, находящегося в памяти. С помощью указателей можно обращаться к ресурсам за пределами программы, что создает бреши в системе безопасности. В Java указатели не поддерживаются, а следовательно, и не возникает никаких осложнений, связанных с безопасностью.
Объектно-ориентированное программирование - это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования. В данном определении можно выделить три части: l 1) ООП использует в качестве базовых элементов объекты, а не алгоритмы; l 2) каждый объект является экземпляром какоголибо определенного класса; l 3) классы организованы иерархически. l
Решаемые вопросы l l уменьшение сложности программного обеспечения повышение надёжности программного обеспечения обеспечение возможности модификации отдельных компонентов программного обеспечения без изменения остальных его компонентов. обеспечение возможности программного обеспечения повторного использования отдельных компонентов
Классы ● Класс это - чертёж для создания объектов ● Формально класс - шаблон поведения объектов определённого типа с определёнными параметрами, определяющими состояние. Все экземпляры одного класса (объекты, порождённые от одного класса): ● Имеют один и тот же набор свойств ● Общее поведение, одинаково реагируют на одинаковые сообщения
Объекты l Объект — некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеет заданные значения свойств (атрибутов) и операций над ними (методов)
Например, в качестве объекта возьмем робота, в этом случае, в классе Robot, представляющем этот объект, будут описаны его характеристики и поведение, то есть атрибуты и методы. Класс Robot может состоять из таких атрибутов как: l ID l имя l тип l цвет l вес l скорость передвижения l … Также класс Robot будет содержать методы, отвечающие за его поведение. К примеру, на начальном этапе робот умеет: l Спрашивать имя l Приветствовать по имени l Выполнять какую-либо работу
Абстракция Важно помнить, что описывая поведение какого-либо объекта, нужно выбрать подходящий для решения конкретной задачи уровень абстракции. Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов и, таким образом, четко определяет его концептуальные границы с точки зрения наблюдателя. Таким образом, мы должны абстрагироваться от некоторых конкретных деталей объекта. Но также важно, чтобы абстракция не была слишком обобщенной и позволила правильно моделировать поведение объекта. Иерархия - это упорядочение абстракций, расположение их по уровням.
Принципы ООП Во всех объектно-ориентированных языках программирования, в том числе и в Java, поддерживаются три основных принципа ООП: l инкапсуляция, l полиморфизм, l наследование.
Инкапсуляция l Инкапсуляция это механизм, объединяющий атрибуты и методы (которые составляют объект) и охраняющий их от внешнего вмешательства. Инкапсуляция — защитная оболочка, позволяющая обращаться к атрибутам и методам класса только внутри этого класса или при помощи специально спроектированного интерфейса.
Инкапсуляция Атрибуты или методы класса могут быть открытыми (public) или закрытыми (private). Закрытые атрибуты и методы могут быть доступны только внутри класса, в котором они находятся, они не доступны той части программного кода, которая находится вне этого класса. Открытые атрибуты и методы доступны, в том числе, и коду программы вне класса. Таким образом, открытые методы используются для предоставления контролируемого интерфейса к закрытым элементам класса.
Наследование (inheritance) - это отношение между классами, при котором класс использует структуру или поведение другого (одиночное наследование) или других (множественное наследование) классов. Наследование помогает избежать дублирования кода в случае, если нам нужно создать объект на основе уже существующего. В этом случае говорится, что новый объект (дочерний) унаследовал свойства уже существующего (родительского). Если атрибуты или поведение существующего объекта нужно частично изменить, то их можно просто переопределить.
Полиморфизм — возможность объектов с одинаковой спецификацией иметь различную реализацию. «Один интерфейс, множество реализаций» . Если мы имеем объекты, которые принадлежат одной и той же ветви иерархии (были унаследованы), то для них можно использовать единый интерфейс, который будет для каждого объекта производить однотипное действие, но результат для каждого объекта будет различным (зависящим от этого конкретного объекта).