О БЪЕКТЫ И МОДЕЛИРОВАНИЕ ОБЪЕКТОВ Основы объектных технологий 1.

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



Advertisements
Похожие презентации
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Advertisements

8. Моделирование логической структуры системы Диаграмма классов Диаграмма классов служит для моделирования классов и отношений между ними.
Методология объектно- ориентированного программирования.
Кафедра ОСУ, Java 2004 Слайд 1 Наследование Наследование позволяет использовать существующий класс для определения новых классов, т.е. способствует.
Проектирование архитектуры ИСО 1. UML 2 Структура определения языка 4.
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
1 Классы в Java Ключевое слово class означает: Я говорю тебе, как выглядит новый тип объекта. Класс является базовым элементом объектно-ориентированного.
Объектно-ориентированный анализ и дизайн Copyright © Мухортов В. В., Няньчук-Татарский Н. А., Copyright © ООО «Интекс»,
Диаграммы UML Диаграмма классов (Class Diagram). Основные вопросы Что такое диаграмма классов Компоненты диаграммы классов и их назначение Пример диаграммы.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Java, каф. ОСУ АВТФ1 Методология ООП В формулировке цели выполнения некоторого проекта (например, разработка ИС) участвуют предметы (объекты)
Объектно-ориентированное программирование С++. Лекция 6 Карпов В.Э.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
ОБЪЕКТНО- ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (ООП) 1.
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
Кафедра ОСУ, Java 2007 Слайд 1 Методология ООП В формулировке цели участвуют предметы (объекты) и понятия реального мира, имеющие отношение.
Объектно-ориентированное программирование Объектно-ориентированное программирование (ООП) - основная методология программирования. Она является продуктом.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Классы в С#. Перечисления С# Перечисление задает конечное множество возможных значений, которые могут получать объекты класса перечисление. [атрибуты][модификаторы]
Транксрипт:

О БЪЕКТЫ И МОДЕЛИРОВАНИЕ ОБЪЕКТОВ Основы объектных технологий 1

О СНОВЫ ОБЪЕКТНОЙ ТЕХНОЛОГИИ Instance object – Экземпляры объектов Class - Классы Variables, methods and Constructors – Переменные, методы и конструкторы Association- Ассоциации Aggregation and composition –Агрегации и Композиции Generalization and Inheritance - Обобщение и Наследование Abstract class – Абстрактные классы Interface - Интерфейсы 2

О СНОВЫ МОДЕЛИРОВАНИЯ ОБЪЕКТОВ Use case modeling – Моделирование прецедентов Activity modeling – Моделирование видов деятельности Class modeling – Моделирование классов Interaction modeling – Моделирование взаимодействия Statechart modeling – Моделирования состояний Implementation models - Модели реализации 3

О СНОВЫ ОБЪЕКТНЫХ ТЕХНОЛОГИЙ Объект имеет State – Состояние – значения атрибутов Behavior – Поведение – Машина едет Identity – Идентичность – отличия объектов (чашки из одного сервиза не идентичны) Объекты и реальные системы Целесообразно конструировать искусственные системы с помощью моделирования структуры и поведения естественных систем 4

Объекты реальной жизни 5

О БЪЕКТ ЭКЗЕМПЛЯР Class абстракция (общее описание сущности) для набора объектов Класс объектов, но лучше избегать термина «класс объектов» поскольку класс может быть экземпляром объекта – объект объекта класс звучит несколько странно Объект экземпляр (Instance object) экземпляр класса объект, экземпляр, но не экземпляр объекта - сбивает с толку Объект класс (Class object) экземпляр класса (все в объектно- ориентированной системе есть объект) 6

Н ОТАЦИЯ ОБЪЕКТА Типы атрибутов задаются в классе В объекте отсутствует раздел для операций, т.к. не целесообразно хранить операции в каждом объекте (накладно) и они хранятся в классе 7

К ООПЕРАЦИЯ ОБЪЕКТОВ 8

К АК ОБЪЕКТЫ РАСПОЗНАЮТ ДРУГ ДРУГА Каждому объекту при создании присваивается идентификатор объекта (OID) – дескриптор (handle)- уникальный номер на весь период существования Постоянные объекты (persistent) – продолжают существовать после окончания приложения (на диске) – при перемещении с диска в память внешний OID преобразуется во временный OID Временные объекты (transient) 9

OID ДЛЯ РЕАЛИЗАЦИИ АССОЦИАЦИИ 10

В РЕМЕННАЯ СВЯЗЬ Как объект узнает OID другого объекта, если у него нет постоянной связи? Предыдущий доступ к объекту запомнен в некоторой переменной программы Выполняется поиск в базе данных Отображение ( map ) объекта, которое связывает объекты с другими объектами посредством логического идентификатора (primary keys) или аналогичным средством Создается новый объект, в который «втягивается» содержимое записи В объектно-ориентированных базах данных обмен выполняется на уровне объектов 11

О БЪЕКТНО - РЕЛЯЦИОННОЕ ОТОБРАЖЕНИЕ 12

П ЕРЕДАЧА ПАРАМЕТРОВ Сообщение, отправляется объектом Teacher, чтобы определить имя объекта Course crs_ref.getCourseName(out crs_name) in, out, и in/out arguments Большинство ОО-языков не делают такого явного различия между параметрами (входными и выходными) В Java: – аргументы примитивных типов данных передается по значению действует как input arguments изменение значения аргумента не возможно, поскольку операция выполняется с копией аргумента –передача по значению для непримитивных типов данных возвращает в операции полученную ссылку на аргумент, а не его значение ссылка может быть использована для доступа или возможно модификации значений внутри переданного объекта сказанное выше устраняет необходимость для явных входных и выходных аргументов (in/out arguments) – возвращаемый тип операции заменяет необходимость явного определения выходного аргумента ( out Arguments) операция может возвращать только одно значение или не возвращать вообще (void) Однако, она может возвращать неприметивный тип (т.е. объект любой сложности 13

К ЛАСС, АТРИБУТЫ Класс-дескриптор множества объектов, обладающий одинаковым набором атрибутов и операций 14 Атрибут представляет пару тип-значение Класс определяет типы атрибутов Тип может быть элементарным или классом

Т ИП АТРИБУТА, ОБОЗНАЧАЮЩИЙ КЛАСС В UML моделях анализа атрибуты, типы которых обозначают классы не приводятся - вместо них ассоциация 15 В составе объекта атрибут класс содержит идентификатор объекта (OID), указывающий на объект другого класса

В ИДИМОСТЬ АТРИБУТОВ Объекты взаимодействуют с помощью отправки друг другу сообщений Операция обслуживает запрос с помощью доступа к значениям атрибутов внутри объекта Чтобы выполнить операцию, она должна быть видимой внешним объектам. Большинство атрибутов закрыто, а большинство операций открыто. Говорят, что операция инкапсулирует атрибуты 16

+ - для открытой видимости - - для закрытой видимости 17

С ОВМЕСТНАЯ РАБОТА ОБЪЕКТОВ ОО - программа выполняется, реагируя на события (кл., мышь…) Объекты сотрудничают с помощью вызова операций других объектов 18

О ПЕРАЦИИ, ВИДИМОСТЬ, ОБЛАСТЬ ДЕЙСТВИЯ, ОБЪЕКТ КЛАСС method – процедура, которая реализует операцию message name = method name Сигнатура (signature) = список формальных аргументов метода видимость области действия Область действия экземпляра когда операция вызывается на объекте экземпляра object (findEmpAge()) Область действия класса когда операция вызывается на объекте класса (findAverageAge()) Объект класс во многих языках программирования не создаются экземпляры объекта класс они лишь обеспечивают синтаксис для ссылки на имя класса, для того чтобы получить доступ к атрибутам области действия класса или вызвать операцию static attribute/operation Пример следующий слайд 19

П РИМЕР public class Student { private String studentId; // доступно через операции Student private String studentName; //accessible via Students operations private static int numberOfStudents; //доступно только методам static, например averageStudentAge() public static int maxCoursesPerSemester; //доступно через метод Student:: maxCoursesPerSemester public static double averageStudentAge() { //код реализации здесь // вызывается ссылкой на имя класса – Student::averageStudentAge() // также вызывается ссылкой на объект класса – std.averageStudentAge() } 20

П ЕРЕМЕННАЯ, МЕТОД, КОНСТРУКТОР Переменная(Variable )– имя для пространства памяти Элемент данных ( data member) – переменная, объявленная в классе – переменная экземпляра ( instance variable) (область действия экземпляра) – переменная класса( class variable) (область действия класса) локальная переменная( local variable) – переменная, объявленная в теле метода Method – реализация операции метод = name + signature + return type перегружаемые методы – совпадает имя, различные сигнатуры Конструктор(Constructor) специальный метод для создания экземпляра объекта класса имя конструктора = имя класса конструктор не имеет возвращаемого типа класс должен иметь по крайней мере один конструктор вызывается ключевым словом new Student std22 = new Student(); //default constructor 21

А ССОЦИАЦИЯ Ассоциация – один из видов отношений между классами - устанавливает связь между объектами данных. Обычно сообщение отправляются по ассоциативной связи. Обобщение, агрегация, зависимость – другие виды связей 22

С ТЕПЕНЬ ( ПОРЯДОК ) АССОЦИАЦИИ Бинарные Унарные Тетрарные 23

М НОЖЕСТВЕННОСТЬ ( КРАТНОСТЬ ) n n n 24

А ССОЦИАТИВНАЯ СВЯЗЬ И ОБЪЕМ АССОЦИАЦИИ Ассоциативная связь – экземпляр ассоциации. Это кортеж (одна, набор или список) ссылок на объекты. Представляет ролевое имя Может быть коллекцией ссылок Объем (Extent) - набор экземпляров ассоциации 25

А ССОЦИАТИВНЫЙ КЛАСС Ассоциация может обладать своими атрибутами и/или операциями, представляет собой класс и может быть ассоциирована с другими классами модели обычным способом 26

Агрегация (Aggregation) – Отношение вида часть- целое между классами Свойства: Транзитивность Ассиметричность Зависимость по Существованию Композиция (Composition) – агрегация с зависимостью по существованию Реализуется скрытой ссылкой или внутренними классами след. слайд 27

Р ЕАЛИЗАЦИЯ АГРЕГАЦИИ СКРЫТОЙ ССЫЛКОЙ Не различается в ассоциациях Посредством переменной с private видимостью Однако, в Java, классы не могут иметь вид subset classes иметь private подмножество классов должно иметь public или package видимость 28 public class Book { private String title; private Chapter theChapter[]; private TableOfContents theTableOfContents; public Book() { //default constructor } public boolean search(String what) { return true; }

Р ЕАЛИЗАЦИЯ КОМПОЗИЦИИ ВНУТРЕННИМИ КЛАССАМИ 29 public class Book { private String title; private Chapter[] ch; private TableOfContents toc; public Book(...) {... toc = new TableOfContents(); ch = new Chapter[numberChapters]; for (int i=0; i

О БОБЩЕНИЕ (G ENERALIZATION ) 30 public class Person { private String fullName; private Date dateOfBirth; public Person() {...} public int age(){ return getYear() - getYear(dateOfBirth); } } public class Employee extends Person { private Date dateHired; private int salary; private int leaveEntitlement; private int leaveTaken; public Employee() {...} public int remainingLeave(){ return leaveEntitlement - leaveTaken; } } n Подклассс наследует структуру и поведение своего суреркласса n Там где используется суперкласс может использоваться и класс n Способствует лучшей локализации изменений

П ОЛИМОРФИЗМ (P OLYMORPHISM ) 31 Одинаковые сигнатуры (имена операций, количество и тип аргументов) public class Manager extends Employee { private Date dateAppointed; private int leaveSupplement; public Manager() {...} public int remainingLeave() { int mrl; mrl = super.remainingLeave() + leaveSupplement; return mrl; } n Иногда необходимо заместить операции в подклассе (overriden) Говорят, что операция remainingLeave() полиморфна.

Н АСЛЕДОВАНИЕ (I NHERITANCE ) Без наследования полиморфизм находит ограниченное применение. Полиморфное поведение зависит от наследования Наследование открывает возможности для определения подкласса методом последовательного наращивания с использованием и последующим описанием суперкласса. 32

М НОЖЕСТВЕННОЕ НАСЛЕДОВАНИЕ (M ULTIPLE INHERITANCE ) 33 Подкласс может наследовать более чем один суперкласс Конфликты наследования должны разрешаться программистом

М НОЖЕСТВЕННАЯ КЛАССИФИКАЦИЯ M ULTIPLE CLASSIFICATION 34 Мн. Наследование Класс может иметь несколько суперклассов, но единственный класс должен быть определен для каждого объекта Мн. Классификация Объект является одновременно экземпляром двух и более классов Проблема возрастает, если Person определен в нескольких ортогональных иерархиях Проблема возрастает, если Person определен в нескольких ортогональных иерархиях Person может быть Employee или Student, Male или Female, Child or Adult, и т.п. Person может быть Employee или Student, Male или Female, Child or Adult, и т.п. n Без мн. классификации n Необходимо определять классы для каждой допустимой комбинации между ортогональными иерархиями ChildFemaleStudent и т.д. ChildFemaleStudent и т.д.

Д ИНАМИЧЕСКАЯ КЛАССИФИКАЦИЯ Объект не может принадлежать многим классам, но он может получать и терять ссылки на классы в течение их жизненного цикла Объект Person может быть только employee в один день и manager (и employee) в другой день В большинстве современных сред объектно - ориентирванного программирования объект не может изменять свой класс после того как он был создан 35

А БСТРАКТНЫЙ (A BSTRACT ) КЛАСС 36 Родительский (Parent) класс, экземпляр которого не может быть создан непосредственно, поскольку у него имеется по крайней мере одна абстрактная операция ( abstract operation). Только подклассы родительского абстрактного класса могут быть материализованы. Абстрактный класс в UML выделяется курсивом. public abstract class VideoMedium { public abstract Double rentalCharge(); } public class VideoDisk extends VideoMedium { public VideoDisk() {...} public Double rentalCharge() { return null; }

И НТЕРФЕЙС (I NTERFACE ) Определение типа семантики с атрибутами (только константы) и операций без фактического объявления (реализации) операций Классы, которые реализуют интерфейс, обеспечивают объявления Разрешается множественное наследование Определяет ссылочный тип ( reference type), который отделяет объекты от изменений реализации в поставляемых объектах Реализация интерфейса может изменяться, что не воздействует на объект клиента Чистый abstract class interface В случае интерфейса любой класс системы может реализовывать его Класс может реализовывать любое количество интерфейсов 37

Р ЕАЛИЗАЦИЯ МНОЖЕСТВЕННОГО НАСЛЕДОВАНИЯ НЕ РАЗРЕШАЕТСЯ В J AVA 38

Р ЕАЛИЗАЦИЯ ИНТЕРФЕЙСА J AVA 39 public interface VideoMedium { Double rentalCharge(); } public class VideoPlayer extends VideoEquipment implements VideoMedium { public VideoPlayer() {...} public Double rentalCharge() { return null; }

И СПОЛЬЗОВАНИЕ ИНТЕРФЕЙСА ДЛЯ УСТРАНЕНИЯ ЗАВИСИМОСТИ ПОСТАВЩИКА 40 public class ChargeCalculator { VideoMedium theVideo; public Double getRentalCharge() { return theVideo.rentalCharge(); }

В ЫВОДЫ Каждый объект имеет состояние, поведение и идентичность Существуют экземпляры объектов ( instance objects) и объеты-классы ( class objects) Класс (Class) определяет атрибуты и операции Существует три вида связи ( relationships) – ассоциации, агрегации и обобщения Обобщения обеспечивают основу для пполиморфизма и наследования Коммерческие среды программирования поддерживают множественное наследование непосредственно (C++, C#) или посредством интерфейсов (Java) Множественная и динамическая классификация не поддерживаются Абстрактные классы и интерфейсы являются важными составляющими модели системы 41