SlideShare a Scribd company logo
1 of 18
Принципы объектного подхода
Основные понятия
Основные понятия
Объект Это сущность, способная сохранять свое состояние (информацию) и обеспечивающая набор операций для проверки и изменения этого состояния Состояние объекта характеризуется текущим значением его атрибутов
Объект
Инкапсуляция  Это определение классов — пользовательских типов данных, объединяющих своё содержимое в единый тип и реализующих некоторые операции или методы над ним Классы обычно являются основой модульности, инкапсуляции и абстракции данных в языках ООП
Наследование  Способ определения нового типа, наследуя элементы (свойства и методы) существующего и модифицируя или расширяя их
Наследование
Полиформизм Позволяет единообразно ссылаться на объекты различных классов (обычно внутри некоторой иерархии) Это делает классы ещё более удобными и делает программы, основанные на них, легче для расширения и поддержки
Полиформизм
Класс Это некое множество объектов, имеющих общую структуру и общее поведение class Date {  private:  intdd;  intmm;  intyy;  public:  void Init (int d, int m, int y);  intDay ();  intMonth ();  intYear ();  };
Структура класса Для поддержки принципа инкапсуляции, существуют четыре основных уровня доступа к членам класса Разные языки могут поддерживать разное из этих уровней
Структура класса Открытый (public) доступ — члены с этим уровнем доступа видимы всем клиентам класса Защищенный (protected) доступ — члены этого уровня видимы самому классу, его подклассам, и абстракциям, находящимся с ним в одном пакете Пакетный доступ — члены этого уровня доступны только самому классу и абстракциям Закрытый (private) доступ — члены этого уровня видимы только изнутри самого класса
Абстракция Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов и, таким образом, четко определяет его концептуальные границы с точки зрения наблюдателя
Абстрактные классы Классы, которые не могут иметь экземпляров Это означает, что в них присутствуют функции-члены, которые объявлены, но не определены Эти функции определяются в наследниках, которые уточняют данную абстракцию
Абстрактные классы class shape {public:      virtual void rotate(int) = 0;        virtual void draw() = 0; };
Интерфейс Это абстрактный класс, который содержит только объявления методов и статические константные поля Интерфейс определяет чистую абстракцию поведения
Класс-утилита Это класс, в котором присутствуют только статические члены Такие классы используются для группировки наиболее часто используемых общих алгоритмов, работающих с другими абстракциями или примитивными данными

More Related Content

What's hot

Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.Unguryan Vitaliy
 
Msu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And ObjectsMsu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And Objectsolegol
 
03 ООП и UML
03 ООП и UML03 ООП и UML
03 ООП и UMLphearnot
 
Msu.Center.Lectures.J03 Oop And Uml
Msu.Center.Lectures.J03 Oop And UmlMsu.Center.Lectures.J03 Oop And Uml
Msu.Center.Lectures.J03 Oop And Umlolegol
 
Шаблоны разработки ПО. Часть 2. ООП и UML
Шаблоны разработки ПО. Часть 2. ООП и UMLШаблоны разработки ПО. Часть 2. ООП и UML
Шаблоны разработки ПО. Часть 2. ООП и UMLSergey Nemchinsky
 
Java. Наследование.
Java. Наследование.Java. Наследование.
Java. Наследование.Unguryan Vitaliy
 
Java. Lecture 03. OOP and UML
Java. Lecture 03. OOP and UMLJava. Lecture 03. OOP and UML
Java. Lecture 03. OOP and UMLcolriot
 
Шаблоны разработки ПО. Рефакторинг
Шаблоны разработки ПО. РефакторингШаблоны разработки ПО. Рефакторинг
Шаблоны разработки ПО. РефакторингSergey Nemchinsky
 
Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Anton Moiseenko
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Sergey Nemchinsky
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
структура языка UML
структура языка UMLструктура языка UML
структура языка UMLОтшельник
 
Class diagram
Class diagramClass diagram
Class diagramaepetelin
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVCUnguryan Vitaliy
 
Модуль 10 Интерфейсы
Модуль 10 ИнтерфейсыМодуль 10 Интерфейсы
Модуль 10 ИнтерфейсыYevgeniy Gertsen
 
Шаблоны разработки ПО. Шаблоны GRASP
Шаблоны разработки ПО. Шаблоны GRASPШаблоны разработки ПО. Шаблоны GRASP
Шаблоны разработки ПО. Шаблоны GRASPSergey Nemchinsky
 

What's hot (18)

Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.
 
Msu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And ObjectsMsu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And Objects
 
03 ООП и UML
03 ООП и UML03 ООП и UML
03 ООП и UML
 
Msu.Center.Lectures.J03 Oop And Uml
Msu.Center.Lectures.J03 Oop And UmlMsu.Center.Lectures.J03 Oop And Uml
Msu.Center.Lectures.J03 Oop And Uml
 
Шаблоны разработки ПО. Часть 2. ООП и UML
Шаблоны разработки ПО. Часть 2. ООП и UMLШаблоны разработки ПО. Часть 2. ООП и UML
Шаблоны разработки ПО. Часть 2. ООП и UML
 
Java. Наследование.
Java. Наследование.Java. Наследование.
Java. Наследование.
 
Java. Lecture 03. OOP and UML
Java. Lecture 03. OOP and UMLJava. Lecture 03. OOP and UML
Java. Lecture 03. OOP and UML
 
Принципы SOLID
Принципы SOLIDПринципы SOLID
Принципы SOLID
 
Шаблоны разработки ПО. Рефакторинг
Шаблоны разработки ПО. РефакторингШаблоны разработки ПО. Рефакторинг
Шаблоны разработки ПО. Рефакторинг
 
Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.Java Core. Lecture# 2. Classes & objects.
Java Core. Lecture# 2. Classes & objects.
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
структура языка UML
структура языка UMLструктура языка UML
структура языка UML
 
Class diagram
Class diagramClass diagram
Class diagram
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVC
 
Модуль 10 Интерфейсы
Модуль 10 ИнтерфейсыМодуль 10 Интерфейсы
Модуль 10 Интерфейсы
 
л 2 10
л 2 10л 2 10
л 2 10
 
Шаблоны разработки ПО. Шаблоны GRASP
Шаблоны разработки ПО. Шаблоны GRASPШаблоны разработки ПО. Шаблоны GRASP
Шаблоны разработки ПО. Шаблоны GRASP
 

Similar to принципы объектного подхода

C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5Technopark
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.Igor Shkulipa
 
классы. отношения между классами. объекты. отношения между объектами (15)
классы. отношения между классами. объекты. отношения между объектами (15)классы. отношения между классами. объекты. отношения между объектами (15)
классы. отношения между классами. объекты. отношения между объектами (15)romachka_pole
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.Unguryan Vitaliy
 
C++ осень 2013 лекция 3
C++ осень 2013 лекция 3C++ осень 2013 лекция 3
C++ осень 2013 лекция 3Technopark
 
Рефлексия в java
Рефлексия в javaРефлексия в java
Рефлексия в javaUnguryan Vitaliy
 
C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.Igor Shkulipa
 
лекция 8
лекция 8лекция 8
лекция 8cezium
 
Sistema distancionnogo obuchenija_moodle
Sistema distancionnogo obuchenija_moodleSistema distancionnogo obuchenija_moodle
Sistema distancionnogo obuchenija_moodleCDO3
 
Sistema distancionnogo obuchenija_moodle
Sistema distancionnogo obuchenija_moodleSistema distancionnogo obuchenija_moodle
Sistema distancionnogo obuchenija_moodleCDO3
 
система дистанционного обучения Moodle
система дистанционного обучения Moodleсистема дистанционного обучения Moodle
система дистанционного обучения MoodleCDO3
 
Moodle с точки зрения пользователя и программиста
Moodle с точки зрения пользователя и программистаMoodle с точки зрения пользователя и программиста
Moodle с точки зрения пользователя и программистаIgor Sazonov
 
Презентация Игоря Сазонова на IT Global Meetup #5
Презентация Игоря Сазонова на IT Global Meetup #5Презентация Игоря Сазонова на IT Global Meetup #5
Презентация Игоря Сазонова на IT Global Meetup #5Lilia Smirnova
 
Тема 3. Модели и закономерности систем
Тема 3. Модели и закономерности системТема 3. Модели и закономерности систем
Тема 3. Модели и закономерности системСергей Солнечный
 
основы ооп
основы оопосновы ооп
основы оопDmitry Savin
 
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.Igor Shkulipa
 

Similar to принципы объектного подхода (20)

C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.
 
классы. отношения между классами. объекты. отношения между объектами (15)
классы. отношения между классами. объекты. отношения между объектами (15)классы. отношения между классами. объекты. отношения между объектами (15)
классы. отношения между классами. объекты. отношения между объектами (15)
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.
 
C++ осень 2013 лекция 3
C++ осень 2013 лекция 3C++ осень 2013 лекция 3
C++ осень 2013 лекция 3
 
Рефлексия в java
Рефлексия в javaРефлексия в java
Рефлексия в java
 
C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.
 
Step 3.2
Step 3.2Step 3.2
Step 3.2
 
Наследование и полиморфизм
Наследование и полиморфизмНаследование и полиморфизм
Наследование и полиморфизм
 
лекция 8
лекция 8лекция 8
лекция 8
 
Sistema distancionnogo obuchenija_moodle
Sistema distancionnogo obuchenija_moodleSistema distancionnogo obuchenija_moodle
Sistema distancionnogo obuchenija_moodle
 
Sistema distancionnogo obuchenija_moodle
Sistema distancionnogo obuchenija_moodleSistema distancionnogo obuchenija_moodle
Sistema distancionnogo obuchenija_moodle
 
система дистанционного обучения Moodle
система дистанционного обучения Moodleсистема дистанционного обучения Moodle
система дистанционного обучения Moodle
 
Классы и объекты С#
Классы и объекты С#Классы и объекты С#
Классы и объекты С#
 
Moodle с точки зрения пользователя и программиста
Moodle с точки зрения пользователя и программистаMoodle с точки зрения пользователя и программиста
Moodle с точки зрения пользователя и программиста
 
Презентация Игоря Сазонова на IT Global Meetup #5
Презентация Игоря Сазонова на IT Global Meetup #5Презентация Игоря Сазонова на IT Global Meetup #5
Презентация Игоря Сазонова на IT Global Meetup #5
 
Тема 3. Модели и закономерности систем
Тема 3. Модели и закономерности системТема 3. Модели и закономерности систем
Тема 3. Модели и закономерности систем
 
основы ооп
основы оопосновы ооп
основы ооп
 
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.
 
п2 04 05
п2 04 05п2 04 05
п2 04 05
 

принципы объектного подхода

  • 4. Объект Это сущность, способная сохранять свое состояние (информацию) и обеспечивающая набор операций для проверки и изменения этого состояния Состояние объекта характеризуется текущим значением его атрибутов
  • 6. Инкапсуляция  Это определение классов — пользовательских типов данных, объединяющих своё содержимое в единый тип и реализующих некоторые операции или методы над ним Классы обычно являются основой модульности, инкапсуляции и абстракции данных в языках ООП
  • 7. Наследование  Способ определения нового типа, наследуя элементы (свойства и методы) существующего и модифицируя или расширяя их
  • 9. Полиформизм Позволяет единообразно ссылаться на объекты различных классов (обычно внутри некоторой иерархии) Это делает классы ещё более удобными и делает программы, основанные на них, легче для расширения и поддержки
  • 11. Класс Это некое множество объектов, имеющих общую структуру и общее поведение class Date { private: intdd; intmm; intyy; public: void Init (int d, int m, int y); intDay (); intMonth (); intYear (); };
  • 12. Структура класса Для поддержки принципа инкапсуляции, существуют четыре основных уровня доступа к членам класса Разные языки могут поддерживать разное из этих уровней
  • 13. Структура класса Открытый (public) доступ — члены с этим уровнем доступа видимы всем клиентам класса Защищенный (protected) доступ — члены этого уровня видимы самому классу, его подклассам, и абстракциям, находящимся с ним в одном пакете Пакетный доступ — члены этого уровня доступны только самому классу и абстракциям Закрытый (private) доступ — члены этого уровня видимы только изнутри самого класса
  • 14. Абстракция Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов и, таким образом, четко определяет его концептуальные границы с точки зрения наблюдателя
  • 15. Абстрактные классы Классы, которые не могут иметь экземпляров Это означает, что в них присутствуют функции-члены, которые объявлены, но не определены Эти функции определяются в наследниках, которые уточняют данную абстракцию
  • 16. Абстрактные классы class shape {public:      virtual void rotate(int) = 0;       virtual void draw() = 0; };
  • 17. Интерфейс Это абстрактный класс, который содержит только объявления методов и статические константные поля Интерфейс определяет чистую абстракцию поведения
  • 18. Класс-утилита Это класс, в котором присутствуют только статические члены Такие классы используются для группировки наиболее часто используемых общих алгоритмов, работающих с другими абстракциями или примитивными данными