1 / 51

Информационни системи - теория и практика

Информационни системи - теория и практика. доц., д-р Владимир Димитров cht@fmi.uni-sofia.bg Задълбочено моделиране на класове. Изброими типове. Типът данни е описание на възможните стойности. Типове данни са числата, символните низове и изброимите типове.

Download Presentation

Информационни системи - теория и практика

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Информационни системи -теория и практика доц., д-р Владимир Димитров cht@fmi.uni-sofia.bg Задълбочено моделиране на класове

  2. Изброими типове Типът данни е описание на възможните стойности. Типове данни са числата, символните низове и изброимите типове. Изброимият тип (enumeration)е тип данни състоящ се от краен брой стойности. Не трябва да се използва обобщение за задаване стойности на изброим атрибут. Изброяването е списък от стойности, а обобщението има за задача да подрежда описанията на обектите. Обобщението трябва да се прилага когато поне един от подкласовете има атрибути, операции или асоциации неприложими към суперкласа.

  3. Не използвайте обобщение за моделиране на изброявания

  4. Кратност Кратността е ограничение върху броя на възможните стойности в набора. Кратност имат не само асоциациите, но и атрибутите. Кратността на атрибута определя броя възможни стойности във всеки екземпляр на атрибута. [1] – единствена стойност [0..1] – незадължителна ездинствена стойност [*] – произволен брой стойности Кратността определя задължителен ли е атрибута (при базите от данни - може ли да има атрибута празна стойност). Тя показва дали атрибута има единствена стойност или множество от стойности. Ако не е зададена кратност се предполага [1] – единствена задължителна стойност.

  5. Задаване кратност на атрибутите

  6. Обхват Обхватът(scope)определя за кого се отнася съставящата: към обекта или към класа. Ако обхвата на съставящата е класа, то името й се подчертава. Такава съставяща е статична. Обикновено, статичните съставящи първи представяме. Атрибут, чийто е класа, може да съхранява разширението на класа (множеството от всички обекти на класа). Това най-често се прилага при базите от данни. Най-добре е да се избягват други статични атрибути – най-добре е явно да се моделират. Използването на статични операции е напълно допустимо. Най-често това са операции, коит се прилагат за създаване на нови екземпляри на класа. Понякога се използват статични операции за получаване на сумарни данни. Трябва обаче да внимаваме със статичните операции в разпределените приложения.

  7. Обхват на атрибут

  8. Видимост Видимостта (visibility)характеризира способността на метод да се обръща към съставящата на друг клас. Може да има стойностите public, protected, private, package. Конкретната интерпретация на тези стойности зависи от езика за програмиране. Всеки метод може да се обръща към публична съставяща. Методите на клас собственик на съставящата и неговите потомци могат да се обръщат към защитените съставящи. (Защитените съставящи са достъпни и в рамките на пакета в Java.)Към укритите съставящи могат да се обръщат само методите на класа собственик. Към съставящите достъпни в рамките на пакета могат да се обръщат всички методи от този пакет.

  9. Видимост В UML видивостта се задава с префикс: + (public), # (protected), - (private) и ~ (package). Липсата на префикс не позволява да се правят каквито и да било изводи за видимостта. При избор на видимостта за дадена съставляваща трябва да се взима впредвид: • Разбираемост на модела. • Разширяемост • Контекст

  10. Крайща на асоциациите • Име на край • Кратност • Наредба • Мултимножества и поредици • Квалификатори • Агрегация • Изменяемост (changebleили readonly) • Възможност за навигация (отбелязва се със стрелка) • Видимост

  11. N-арни асоциации Диаграма на класовете Диаграма на обектите

  12. N-арни асоциации Проследяването на N-арна асоциация от един край към друг е невъзможно, поради което имената на крайщата не са псевдоатрибути на учевстващите в асоциацията класове. В езиците за програмиране няма средства за описание на N-арни асоциации и за това ги моделираме, което изменя смисъла на модела.

  13. N-арна асоциация с клас

  14. Моделиране на N-арната асоциация

  15. Агрегация Агрегацията (aggregation) е вид бинарна асоциация, описваща обекти състоящи се от части. Съставящите са части от агпегацията. Агрегатът от семантична гледна точка е разширен обакт обработван от много опарции като единно цяло, въпреки че се състои от няколко обекта. Агрегацията е транзитивна и асиметрична.

  16. Агрегация

  17. Композиция Композицията (composition) е вид агрегация с две допърнителни ограничения. Съставящата част може да пренадлижи на не повече от един агрегат. Съставящата част съществува докато съществува агрегата.

  18. Композиция

  19. Разпространяване на операции Разпространяването на операции (propagation или triggering)е автоматичното приложение на операции към множество от обекти, предизвикано от приложението на операцията към някакъв начален обект. Това не е част от UML.

  20. Разпространяване на операции по агрегации и композиции

  21. Абстрактни класове Абстрактетен (abstract) е този клас, който няма екземпляри.Конкретният клас може да има екземпляри. Конкретният клас може да има за деца абстрактни класове. Под името на абстрактния клас или след негоможе да се пише ключовата дума {abstract}. Името на абстрактния клас се пише с курсив. Операциите в абстрактните класове задават само сигнатурата, но не и реализацията. Всеки конкретен подклас трябва да зададе метод реализиращ дадената операция. Най-добре е да се избягват конкретни суперкласове.

  22. Конкретни класове

  23. Абстрактен клас и абстрактна операция

  24. Превръщане на конкретния суперклас в абстрактен

  25. Множествено наследяване Множественото наследяване позволява един клас да има няколко суперкласа и да наследява съставящите от всичките си предци. При множественото наследяване се увеличават възможностите за повторна употреба на код. Недостатък е усложняването на концепциите и реализацията. Когато има припокриване на класове при множествено наследяване трябва да се използва ограничение върху наследяването.

  26. Множествено наследяване от несъвместими класове

  27. Множествено наследяване от припокриващи се класове

  28. Множествена класификация Екзечплярът на класа е екземпляр и на всички предци на класа. Проблемът е когато един екземпляр се отнася към два припокриващи се класа. Това се допуска в UML, но езиците за програмиране лошо го поддържат и това налага моделиране чрез композиция.

  29. Множествената класификация не се поддържа от повечето езици за програмиране

  30. Делегиране с използване композиция на частите Суперклас с няколко независими обобщения може да се преформулира като композиция, в която обобщението се заменя от съставящите части. В този случай наследяването на операциите не е автоматично. Съсгавният обект трябва да прихване операцията и да я препрати към съставящите.

  31. Делегиране

  32. Наследяване на най-важните класове с делегиране на останалите В този вариант се запазват индивидуалността и наследяването за най-важните обобщения. Другите обобщения се свеждат до композиция, а операциите им се делегират.

  33. Наследяване и делегиране

  34. Вложено обобщение Първо системата се факторизира по първото обобщение, а след това по второто и т. н. При това се получават всички възможни варианти. Това води до съхраняване на наследяването, но се увеличават класовете (и кода), което не е в духа на обектно-ориентираното програмиране.

  35. Замяна на множественото наследяване с вложено обобщение

  36. Принципи • Суперкласове с еднаква важност. Ако подкласът има няколко суперкласа и всички те са с еднаква важност най-добре е да се използва делегирането и да се съхрани симетрията на модела. • Доминиращ суперклас. Ако един от суперкласовете е най-важен, а останалите по-малко важни, трябва да се запази наследяването от този клас. • Няколко подкласа. Ако броя комбинации е неголям, можем да се възползваме от вложеното обобщение.

  37. Принципи • Наредба на наборите обобщения. Ако сме използвали вложеното обобщение, първо трябва да обобщаваме по най-важния критерии, а после по останалите. • Големи обеми код. Трябва да се избягват вложените обобщения, ако за тяхната реализация ще се наложи да дублиране на големи обеми код. • Индивидуалност. Само с вложените обобщения се запазва индивидуалността.

  38. Метаданни Метаданните (metadata)са данни за данните. Определението на клас са метаданни. Моделите също са метаданни защото описват моделираните обекти, а не са самите обекти. Класовете могат да бъдат разглеждани като обекти, но те са метаобекти, а не реални обекти. Обектите на описателите на класовете имат съставящи, които от своя страна се характеризират от собствени класове, които се наричат метакласове. Ако се разглеждот всички същности като обекти, то реализацията е по-еднообразна, а функционалните възможности за решаване на сложни проблеми нарастват. В различните езици за програмиране достъпа до метаданните е различен.

  39. Метаданни и данни

  40. Въплъщение Въплъщението (reification)е превръщането на обекта в нещо друго. Въплъщението е полезно в метаприложенията, защото позволява да се измести нивото на абстракция. Понякога то е полезно за превръщане на атрибути, методи, ограничения и управляваща информация в обекти, за да могат да бъдат описвани и манипулирани като данни.

  41. Въплъщение Въплъщение: атрибутът става клас

  42. Ограничение Ограничение (constraint)е логическо условие налагано върху елементите на модела: обекти, класове, атрибути, връзки, асоциации и набори обобщения. Ограниченията определят стойностите, които могат да приемат елемените. Ограниченията се записват на естествен или формален език.

  43. Ограничения върху обекти {приоритета никога не се увеличава}

  44. Ограничения върху набори обобщения Моделът на класовете съдържа множество ограничения в своята структура. В UML се използват следните ключови думи при наборите обобщения: • disjoint (несъвместими). Подкласовете взаимно се изключват. Даден обект принадлежи на точно един от тях. • overlapping (пропокриващи се). Подкласовете могат да имат общи обекти. Обектът може да принадлежи едновременно на няколко подкласа. • complete (пълно). В обобщението са включени всички възможни подкласове. • incomplete (непълно). Някои подкласове са пропуснати.

  45. Ограничения върху връзките Стректерни ограничения: • Кратност • Квалификатор • Клас на асоциацията

  46. Отношение на подмножество е ограничението върху асоциацията

  47. Производни данни Праизводен елемент (derived element)е функция от един или няколко елемента, които от своя страна също могат да бъдат производни. Производният елемент е излишен понеже се определя изцяло от другите елементи. Дървото на извод завършва в базови елементи. Производни могат да бъдат класове, асоциации и атрибути. Заявки без аргументи могат да се разглеждат като производни атрибути.

  48. Производен атрибут

  49. Производен обект и производна асоциация

  50. Пакети Пакетът е група елементи (класове, асоциации, обобщения и вложени пакети), обединени от обща тема. Пакетите разбиват модела на части, с което подобряват разбирането и поддръжката му. Препоръки: • Точно определяйте обхвата на всеки пакет. • Всеки клас определяйте само в един пакет. • Правете пакетите удобни за съвместна употреба.

More Related