Объектно-ориентированное программирование в Java презентация

Содержание

План лекции Введение Принципы ООП Этапы разработки программ ООП в Java

Слайд 1 Объектно-ориентированное программирование в Java
Лекция 3


Слайд 2План лекции
Введение
Принципы ООП
Этапы разработки программ
ООП в Java


Слайд 3Введение
Объектно-ориентированное программирование (ООП) - это технология создания программного обеспечения, основанная на

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

Слайд 4Введение
Интуитивные определения основных понятий:
Объектом называется математическое представление сущности реального мира (или

предметной области), которое используется для моделирования.
Классом называется весьма общая сущность, которая
может быть определена как совокупность элементов.
Свойством (или атрибутом) называется
пропозициональная функция, определенная на
произвольном типе (данных).
Методом (или функцией) называется операция,
определенная над объектами некоторого класса.

Слайд 5Введение
Преимущества объектно-ориентированного подхода:

полное использование возможностей объектно-ориентированных языков программирования,
унификация разработки и

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

Слайд 6Введение
Основные работы в сфере моделирования ООП:
1924 – М.Шейнфинкель (Moses Shцnfinkel) разработал

теорию «простых» функций
1934 – А.Черч (Alonso Church) изобрел ламбда-исчисление и применил его в исследовании теории множеств
1971 – Д.Скотт (Dana S. Scott) предложил использовать полные и непрерывные решетки для формализации семантики (типизированного) ламбда-исчисления
1980-е – Д.Скотт (Dana S. Scott) и М.Фурман (Michael P. Fourman) исследовали аппарат определенных дескрипций как средство формализации определений
1990-е – В.Э.Вольфенгаген (Vyatcheslav E. Wolfengagen) предложил схему двухуровневой концептуализации для моделирования объектов предметных областей (и языков программирования); данная модель адекватна как для объектов данных (ОД), так и для объектов метаданных (ОМД)

Слайд 7Принципы ООП
абстрагирование
инкапсуляция
модульность
иерархичность
типизация
параллелизм
сохраняемость


Слайд 8Принципы ООП
Абстрагирование – принцип объектно-ориентированного программирования, который определяет правила выделения классов

и объектов и построения их объектных моделей.
Абстракция включает существенные для данной задачи характеристики некоторого объекта.
В объектно-ориентированном программировании все свойства абстракции, определяющие состояние и поведение анализируемого объекта, объединяются в единую программную единицу - класс.
Выделяют две части описания абстракции: интерфейс (доступные из­вне элементы абстракции - характеристики состояния и поведения) и реали­зация (недоступные извне элементы абстракции - внутренняя организация абстракции и механизмы осуществления ее поведения).

Слайд 9Принципы ООП
Инкапсуляция – принцип объектно-ориентированного программирования, который определяет объект как единое

целое и определяет интерфейс пользователя для использования объекта.
Инкапсуляция - объ­единение интерфейса и реализации в один класс, а также скрытие деталей реализации.
Модульность - принцип разработки программной системы, предпола­гающий ее реализацию в виде отдельных частей (модулей). Модули играют роль физических контейнеров, в которые помещаются описания классов и объектов.

Слайд 10Принципы ООП
Иерархичность предполагает использование иерархий (упорядочен­ных систем абстракций) при разработке программных

систем.
В ООП используют два вида иерархии:
«целое-часть»
«общее-частное»

«целое-часть»- некоторые абстракции включены в другую абст­ракцию как ее части. Этот вид иерархии используется в процессе разбиения системы на части на разных этапах проектирования


Слайд 11Принципы ООП
«общее-частное» - некоторая абстракция является частным случа­ем другой абстракции. Данный

вид иерархии используется при разработке структуры классов, когда сложные классы строятся на основе простых с по­мощью добавления к ним новых характеристик и изменения имеющихся. Этот механизм, являющийся в ООП одним из важнейших, называется насле­дованием.

Слайд 12Принципы ООП
Наследование - принцип объектно-ориентированного программирования, который реализует отношение обобщения между

классами.

Класс-потомок, наследующий характеристики другого класса, об­ладает теми же возможностями, что и класс-предок, от которого он порож­ден, при этом класс-предок остается без изменения, а классу-потомку можно добавлять новые элементы или изменять унаследованные. Благодаря этому потомок обладает большими возможностями, чем предок.
Все классы, ис­пользуемые в Java, имеют общего предка - класс java.lang.Object.


Слайд 13Принципы ООП
Типизация - ограничения, накладываемые на объект и препятствующее взаимозаменяемости объектов

различных типов или уменьшающее возмож­ность такой замены.



Слайд 14Принципы ООП
Тип может связываться с объектом во время компиляции (статическое или

раннее связывание) или во время выполнения программы (динамическое или позднее связывание). Динамическое связывание, а также наличие насле­дования позволяют реализовать важный механизм ООП - полиморфизм (од­но и то же имя может означать объекты разных типов, но, имея общего предка, все они имеют и общее подмножество операций, которые можно над ними выполнять).

Слайд 15Принципы ООП
Полиморфизм – принцип объектно-ориентированого программирования, который позволяет за одним именем

метода закреплять несколько различных алгоритмов и реализаций.

Параллелизм - возможность нескольким абстракциям одновременно находиться в активном состоянии, выполняя некоторые операции.
Реальный параллелизм возможен только на многопроцессорных (мно­гоядерных) системах, когда каждый процесс может выполняться отдельным процессором (ядром). На однопроцессорных (одноядерных) компьютерах параллелизм имитируется за счет механизма разделения времени между процессами (псевдопараллелизм).


Слайд 16Принципы ООП
Сохраняемость - способность объекта существовать во времени неза­висимо от породившего

его процесса и/или в пространстве, возможно пере­мещаясь из своего первоначального адресного пространства.

На уровне про­граммы по степени сохраняемости различают промежуточные результаты вычисления выражений, локальные переменные подпрограмм и глобальные объекты.
На уровне данных по степени сохраняемости выделяют данные, сохраняющиеся между сеансами выполнения программы, данные, сохраняе­мые при переходе на новую версию программы, а также данные, которые переживают программу.


Слайд 17Этапы разработки программы
анализ
проектирование
реализация
модификация


Слайд 18Этапы разработки программы
Цель первого этапа - максимально полное описание задачи. В

этот момент выполняют анализ предметной области, объектную декомпозицию и описывают абстракции. Результатом этапа является разработка диаграммы объектов, на которой показывают основные абстракции (объекты) предмет­ной области и взаимодействие между ними.

Слайд 19Этапы разработки программы
Проектирование – это построение формализованного описания за­дачи, готового для

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

Слайд 20Этапы разработки программы


Слайд 21Этапы разработки программы
Цель этапа реализации - получение программной системы, выполняющей заданные

функции.
Этап включает последовательную реали­зацию и подключение классов к проекту, создание работающего прототипа, а также постоянное тестирование и отладку.
Результатом этапа реализации является готовая программная система.

Цель этапа модификации - изменение существующей системы в соответствии с новыми требованиями.
Этот этап включает добавление новых элементов и модификацию существующих, при этом, как правило, меняется реализация, а не интерфейс.
Результатом модификации является измененная система.

Слайд 22ООП в Java
Объект — это мыслимая или реальная сущность, обладающая характерным

поведением и отличительными характеристиками и являющаяся важной в предметной области (Гради Буч)

Объектно-ориентированное программирование — парадигма программирования, в которой программа строится из взаимодействующих объектов


Слайд 23ООП в Java
Свойства объектов

Объект является экземпляром класса
Объект имеет внутреннее состояние


Объект может принимать сообщения (в большинстве языков сообщение = вызов метода)
Объект — это «умные данные»


Слайд 24ООП в Java
ООП в Java:

Поддержка ООП заложена в Java изначально (инкапсуляция,

наследование, полиморфизм)
В Java все является объектом, кроме примитивных типов
Исполняемый код может находиться только в классе
Стандартная библиотека предоставляет огромное количество классов, но можно свободно создавать свои

Слайд 25ООП в Java
Возможности ООП:

Инкапсуляция
Сокрытие деталей реализации за внешним интерфейсом
Наследование


Создание производных классов, наследующих свойства базового
Полиморфизм
Разная обработка сообщений в разных классах

Слайд 26ООП в Java
Объявление класса:

/* modifiers */ class Example {
/* class

content : fields and methods */ }


Слайд 27ООП в Java
Модификаторы можно разделить на две группы:
- модификаторы доступа,
-

модификаторы свойств.

Модификаторы доступа:
public - доступ для всех
protected - доступ в пределах пакета и дочерних классов
private - доступ в пределах класса по умолчанию (нет ключевого слова) доступ в пределах пакета


Слайд 28ООП в Java
Модификаторы свойств:
- final
- abstract

final class Example {...}


нельзя создать класс-наследник
final int getNumber() {...}
нельзя переопределить метод в дочернем классе

abstract class Example {...}
нельзя создать экземпляр класса
abstract int getNumber();
метод без реализации (класс должен быть абстрактным)

Слайд 29ООП в Java
Все составляющие класса называются его элементами или членами класса.



Обращение к отдельному элементу класса имеет синтаксис:

имя_объекта.имя_элемента.

Слайд 30ООП в Java
Вложенные классы:

Можно объявить класс внутри другого класса
Такие классы

имеют доступ к private-членам друг друга
Экземпляр вложенного класса связан с экземпляром внешнего класса
Если связь не нужна, вложенный класс объявляют с модификатором static

Слайд 31ООП в Java
Поля:

class Example {
/* modifiers */ int number ;


/* modifiers */ String text = " hello ";
}

Поля инициализируются значениями по умолчанию
Модификатор final — значение должно быть присвоено ровно один раз к моменту завершения инициализации экземпляра

Слайд 32ООП в Java
Методы:

class Example {
private int number ;
/* modifiers

*/ int getNumber () {
return number ;
}
}


Слайд 33ООП в Java
Имя метода в классе может быть неуникальным.

Существование в

классе методов с одинаковым именем называется перегрузкой, а сами одно­именные методы называются перегруженными.

Перегрузка методов полез­на, когда требуется решать однотипные задачи с разным набором парамет­ров.

Перегруженные методы, имея одинаковое имя, должны обязательно отличаться либо числом параметров, либо их типами.

Слайд 34ООП в Java
Например, один класс может содержать такие перегруженные методы, позволяющие

определять максимум:

//максимум двух целых чисел int max(int a, int b);

//максимум трех целых чисел int max(int a, int b, int с);

//максимум целого числа и длины строки int max(int a,
string b);

//максимум чисел в строковом представлении int max(string a, string b);

Слайд 35ООП в Java
Существует несколько типов специальных методов:

- конструкторы,
- деструкторы,
- методы-свойства,
- индексаторы,
-

метод Main().

Слайд 36ООП в Java
Конструктор - обязательный элемент любого класса, предназначенный для инициализации

объекта, он вызывается автоматически при создании объекта класса с помо­щью операции new.
Имя конструктора всегда совпадает с именем класса. Хотя конструктор и является методом, он не возвращает значения (даже void)
Если в классе явно не задан ни один конструктор, то к классу автома­тически добавляется конструктор по умолчанию - конструктор, вызываемый без параметров.
Класс может иметь несколько конструкторов с разными па­раметрами (это называется перегрузкой конструкторов).

Слайд 37ООП в Java
Конструкторы:

class Example {
private int number ;
/* modifiers

*/ Example (int number ) {
this . number = number ;
}
}


Слайд 38ООП в Java
Деструктор:

В Java нет деструкторов, сбор мусора автоматический
Есть метод

void finalize(), но пользоваться им не рекомендуется
При необходимости освободить ресурсы заводят обычный метод void close() или void dispose()

Слайд 39ООП в Java
Методы-свойства (Getters и Setters):

Для переменных класса модификатор доступа public нежелателен

т.к. он нарушает безопасность объекта.
Для защиты был придуман механизм доступа к переменным класса с помощью getи set (геттер и сеттер).
Get позволяет получить значения (читать значения)
Set - записать значения в переменную.
В коде они представляют собой обычные методы. Но имя метода всегда начинается с префикса get или set.

Слайд 40ООП в Java
Статические поля и методы:

class Example {
/* modifiers

*/ static final int DEFAULT_NUMBER = 333;
/* modifiers */ static int getDefaultNumber () {
return DEFAULT_NUMBER ;
}
}

Статические поля и методы относятся не к экземпляру класса, а ко всему классу

Слайд 41ООП в Java
Доступ к статическим членам:

int defaultNumber = Example . DEFAULT_NUMBER

;
// defaultNumber -> 333

defaultNumber = Example . getDefaultNumber ();
// defaultNumber -> 333

Example e = new Example (3);
// возможно, но не рекомендуется

defaultNumber = e. getDefaultNumber ();
// defaultNumber -> 333

Слайд 42ООП в Java
Доступ к статическим членам:

int defaultNumber = Example . DEFAULT_NUMBER

;
// defaultNumber -> 333

defaultNumber = Example . getDefaultNumber ();
// defaultNumber -> 333

Example e = new Example (3);
// возможно, но не рекомендуется

defaultNumber = e. getDefaultNumber ();
// defaultNumber -> 333

Слайд 43ООП в Java
Интерфейсы:

Интерфейс определяет возможные сообщения, но не их реализацию
interface

Interface1 {
int getNumber ();
}
Класс может реализовывать несколько интерфейсов
class Example implements Interface1 , Interface2 {
int getNumber () {
// implementation
}
// other methods
}

Слайд 44ООП в Java
Перечисления:

Класс с фиксированным количеством экземпляров
Может иметь поля и

методы

enum Direction {
LEFT ,
RIGHT ,
UP ,
DOWN
}

Слайд 45ООП в Java
Объявление класса-наследника:

class Derived extends Example {
/* derived class

content */
}

Java не поддерживает множественное наследование, но есть интерфейсы
Все классы наследуют java.lang.Object

Слайд 46ООП в Java
Конструктор класса-наследника:

class Derived extends Example {

Derived () {


this (10);
}

Derived (int number ) {
super ( number );
}
}

Слайд 47ООП в Java
Переопределение методов:

class Derived extends Example {
@Override
int getNumber

() {
int number = super . getNumber ();
return Math . max (10 , number );
}
}

Слайд 48ООП в Java
Пакеты (package)

Назначение:

Задание пространства имен, предотвращение коллизий имен классов
Логическая

группировка связанных классов
Сокрытие деталей реализации за счет модификаторов доступа

Слайд 49ООП в Java
Пакеты (package)

Задание пакета для класса:
package ru.lab.lab3;
Использование класса

из пакета:
- классы текущего пакета и пакета java.lang всегда видны
- классы других пакетов доступны по полному имени с пакетом
- можно использовать директиву import
Класс, принадлежащий пакету, должен лежать в одноименной директории:
ru/lab/lab3/

Слайд 50ООП в Java
Импорт

Импорт одного класса:
import ru.lab.lab3.ExampleClass;
Импорт всех классов пакета:


import ru.lab.lab3.*;
Импорт статических полей и методов:
import static java.lang.System.out;
import static java.util.Arrays.*;

Слайд 51ООП в Java
Импорт

Директивы import позволяют компилятору получить полные имена всех используемых

классов, полей и методов по их коротким именам

В class-файл попадают полные имена, подстановка содержимого не происходит

При запуске программы все используемые классы должны присутствовать в classpath

Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика