20.05.2015 GoIT провели встречу, посвященную основным принципам ООП от GoIT и помогли участникам:
> Сформулировать понимание ООП и как это работает;
> Узнать, на каких китах стоит ООП и пройти короткий экскурс в историю;
> Разобраться с нюансами применения OOП в программировании на Java;
> Постигнуть абстракцию и узнать много классных шуток на тему ООП
> Получить ответы на свои вопросы от спикеров-практиков.
Просто и понятно помогли осмыслить инкапсуляцию, наследование, полиморфизм и много других сложных ООПешных словечек, наши докладчики:
Александр Подрубайло — Senior Java developer at IntroPro,
аспирант, преподаватель КПИ ФИВТ. Вне IT-шки увлекается пилотированием самолетов и фотографией.
Тарас Слепец — Agile Software Engineer Ciklum, 3 года в разработке и сопровождении распределённых промышленных систем для сервисов мобильной связи. Активный участник/докладчик украинского сообщества Java (JUG.UA).
А ещё Тарас — музыкант, лыжник и турист.
Теперь участники события наверняка знают что значат эти 3 волшебных буквы, без которых не обходится ни один Job Description джависта!
28. Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением (реальным
или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
30. Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением (реальным
или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
31. Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением (реальным
или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
32. Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением
(реальным или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
33. Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением
(реальным или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
34. Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением
(реальным или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
35. Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением
(реальным или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
36. Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением
(реальным или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
37. Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением
(реальным или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
38. Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением
(реальным или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
42. Поведение
Характеризует то, как объект воздействует или
подвергается воздействию других объектов с точки
зрения изменения состояния этих объектов и передачи
сообщений.
47. Метод
Операции, выполняемые над данным объектом или
выполняемые данным объектом, называются методами
(методической частью объекта) и входят составной
частью в определение объекта.
48. Основные виды операций
• Модификатор (set-метод)
• Селектор (get-метод)
• Итератор
• Конструктор
• Деструктор
49. Понятие класса
Объект, свойства которого не имеют конкретных значений,
фактически является классом, т.е. класс – это множество
объектов, связанных общностью структуры и поведения.
56. Описание объекта
Математический анализ: Лекция
тема = Понятие многомерного
интеграла. Поверхностный
интеграл
интересность = АГОНЬ
продолжительность= 90 хвилин
Имя объекта
Поля
68. GoIT
Мы помогаем каждому достичь
образовательных и карьерных целей в
IT.
Наша цель - создать бренд Украины как
сильной IT страны!
69. Учебную программу пишут лидеры ИТ
сферы
Александр Майданюк — Head of QA Branch
Head of Quality Assurance Solution at Ciklum
Александр Баглай — Head of Java Branch
Работал в GlobalLogic, общий опыт в IT — 8 лет
Павел Медведев — Head of GoStart
Freelance Consultant, имеет степень Abode ACE
Сергей Пузанков — Head of Frontend Branch
Team Lead в Яндекс, общий опыт в IT — 13 лет
75. Серьезный отбор
3 ключевых составляющих, необходимых для старта карьеры в
ІТ:
Знание английского на уровне Intermediate
Технические навыки на уровне продвинутого
пользователя/администратора
Мощнейшая внутренняя мотивация
76. Ваше трудоустройство — Цель №1
• Составим идеальное CV
• Даем рекомендации, учим продавать себя
• Тестовое собеседование
• Сareer Service
79. Разработка программы
Виктор Журбенко
QA Consultant @ Infopulse
• Опыт работы в автоматизации
• на Java 7+ лет
• ISTQB Certified Tester, Advanced Level,
Technical Test Analyst
• Опыт преподавания AQA (Java) больше 2х
лет
Абстракция переменных; абстракция регистров и сегментов памяти; прерывания
Абстракция части кода как самостоятельного элемента
Абстракция – это упрощенное описание системы, при котором одни свойства и детали выделяются, а другие опускаются.
Хорошей является такая абстракция, при которой подчеркиваются существенные для рассмотрения и использования детали и опускаются те, которые на данный момент несущественны или отвлекают внимание.
Разумеется, различие между существенными и несущественными характеристиками зависит от решаемой проблемы, т.е. от контекста использования абстракции.
«Абстракция через параметризацию позволяет, используя параметры, представить фактически неограниченный набор различных вычислений одной программой, которая есть абстракция всех этих наборов.»
В абстракции через параметризацию мы абстрагируемся от конкретных используемых данных. Эта абстракция определяется в терминах формальных параметров. Фактически данные связываются с этими параметрами в момент использования такой абстракции. Значения конкретных используемых данных являются несущественными, важно лишь их количество и типы.
Таким образом, всякий раз вызывая подпрограмму с параметрами, мы фактически пользуемся абстракцией через параметризацию.
В абстракции через спецификацию мы фокусируем внимание на особенностях, от которых зависит пользователь, и абстрагируемся от подробностей реализации этих особенностей. Существенным является «поведение» - «то, что делается», а несущественным– то, «как» это делается. Например, в процедуре sort существенным является
факт сортировки массива, а не сам алгоритм сортировки.
Это достигается путем задания для каждой процедуры спецификации, описывающей эффект ее работы, после чего смысл обращения к данной процедуре становится ясным через анализ этой спецификации, а не самого тела процедуры.
Спецификация описывает соглашение между разработчиками и пользователями. Разработчик берется написать модуль, а пользователь соглашается не полагаться на знания о том, как именно этот модуль реализован, т.е. не предполагать ничего такого, что не было бы указано в спецификации. Такое соглашение позволяет разделить анализ реализации от собственно использования программы.
Наиболее известный в программировании тип абстракции - процедурная абстракция. Всякий, кто применял для выполнения функции подпрограмму, которая может быть
использована в других программах, реализовывал тем самым процедурную абстракцию. Процедуры объединяют в себе методы абстракции через параметризацию и спецификацию, позволяя абстрагировать отдельную операцию или событие.
2 свойства:
Локальность
Модифицируемость
Абстракция данных. Какие новые типы данных необходимы, зависит от области применения программы? Синонимом понятия «абстракция данных» является понятие «класс».
Абстракция данных- наиболее важный метод в проектировании программ. … Выбор правильных структур данных играет решающую роль для создания эффективной программы.
Итератор ответственен за получение элемента, а модуль, содержащий цикл, определяет то действие, которое будет над ним выполняться. Итератор может выполняться в различных модулях, которые выполняют разные действия над элементами, и он может быть реализован различными способами, не оказывая влияния на эти модули.
Таким образом, итератор фактически является абстракцией доступа к элементам набора (коллекции).
Преобладающая в настоящее время точка зрения заключается в том, что объекты обладают внутренней структурой и связаны с другими объектами посредством различных отношений. Это хорошо согласуется с нашими непосредственными наблюдениями.
Расчленяя эти объекты на их составные части, мы видим, что казавшиеся единичными объекты имеют сложную структуру, распадающуюся на ряд отношений, существующих между этими более простыми компонентами. Продолжая расчленение, мы, в конце концов, приходим к простейшим объектам, которые уже в данной теории не обладают внутренней структурой и существуют в виде атомарных объектов, связанных отношениями с другими объектами.
Данная модель(концепция) мира получила в программировании название объектно-ориентированного программирования.
К числу свойств объекта относятся присущие ему или приобретаемые характеристики, черты, качества или способности, делающие данный объект самим собой.
Совокупность свойств объекта называется его структурой.
Все свойства объекта характеризуются парой тип-значение. Тип свойства может быть либо встроенным(элементарным) типом, т.е. непосредственно поддерживаться исполняющей средой, либо быть классом.
Таким образом, как правило, объект имеет постоянные характеристики, но может менять свое состояние.
(!) Объекты не существуют изолированно, а подвергаются воздействию или сами воздействуют на другие объекты.
Вы еще ниче не успели рассказать, а за вас все решиили
Это такие свойства объекта, которые имеют уникальное значение, т.е. значение, которое отличает объект от всех других подобных объектов. Например, все люди отличаются
друг от друга рисунком линий на ладони, отпечатками пальцев или сетчаткой глаза.
Слово «операция» предполагает наличие пассивных объектов, т.е. объектов, которые могут изменять свое состояние только под воздействием других объектов, или, другими словами, объектов, над которыми производятся действия. Активный объект в общем случае наоборот– автономен, т.е. он может реализовать свое поведение без воздействия со стороны других объектов, другими словами, он меняется под воздействием внутренних причин. Одну и ту же ситуацию можно описать как в терминах пассивных объектов, так и в терминах активных объектов.
Когда один объект вызывает(активизирует) операцию другого объекта, то об этом еще говорят, что один объект передает сообщение другому объекту.
забить_и_пойти_на_пиво() – к классу на самом деле не относиться
верхнее отделение, содержащее имя объекта и имя класса, разделенные двоеточием; если имя объекта отсутствует, то представлен анонимный объект; имя класса можно опускать в том случае, когда оно очевидно(например, если объект класса Customer имеет имя myCustomer);
в нотации UML объект легко отличить от класса– имя объекта всегда подчеркнуто;
нижнее отделение, содержащее имена свойств и их текущие значения.
Неформально, инкапсуляция (encapsulation) - это механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то и другое от внешнего вмешательства или неправильного использования. Когда методы и данные объединяются таким способом, создается объект.
Чтобы пользоваться холодильником, утюгом или, скажем, кондиционером– совсем необязательно знать их внутреннее устройство и принципы работы.
Прежде всего, нас интересует– что делает объект, а не то– как он это делает.
Инкапсуляция реализует принцип сокрытия информации следующим образом:
• отсутствует прямой доступ к свойствам объекта, они доступны только через методы
• объект контролирует доступ к своим данным
• «опубликованный» функциональный интерфейс объекта позволяет другим объектам использовать его поведение
Интерфейсная часть описания класса по способу доступа к ней может быть разделена на четыре составные части:
• Общедоступная или общая (public) – операции, доступные всем остальным классам
• Защищенная (protected) – доступ к таким операциям разрешен только самому классу и его подклассам
• Обособленная или закрытая (private) – операции, недоступные ни одному другому классу
• Пакетная (package) – операции доступны только классам данного пакета.
Наследование– такое отношение между классами, когда один класс повторяет структуру и поведение другого (простое наследование) или других(множественное наследование) классов.
Класс, структура и поведение которого наследуются, называется суперклассом. Производный от суперкласса класс называется его подклассом.
Это означает, что наследование устанавливает между классами иерархическое отношение.
Как правило, подкласс не только наследует структуру и поведение своего суперкласса, но и достраивает или переопределяет их.
Слово полиморфизм- греческого происхождения и означает "имеющий много форм". Полиморфизм- это свойство, которое позволяет одно и тоже имя(действие) использовать для решения нескольких технически разных задач.
Например, «забить мяч» в футболе можно ногой, головой и некоторыми другими частями тела.
Применительно к объектно-ориентированному программированию, целью полиморфизма, является использование одного имени для задания общих для класса действий. На практике это означает способность объектов выбирать внутреннюю процедуру(метод) исходя из типа данных, принятых в сообщении.
Таким образом, полиморфизм позволяет обойтись без операторов выбора, поскольку объекты сами знают свой тип.
Вы еще ниче не успели рассказать, а за вас все решиили