SlideShare una empresa de Scribd logo
1 de 73
Курс “Шаблони за софтуерен дизайн” Обектно-ориентиран дизайн и  UML http://patterns.dev.bg Светлин Наков Национална академия по разработка на софтуер academy.devbg.org
Обектно-ориентиран дизайн и  UML ,[object Object],[object Object],[object Object]
Въведение в обектно- ориентирания дизайн
Въведение в обектно-ориентирания дизайн ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Обектно-ориентиран дизайн ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Обектно-ориентиран дизайн ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Идентифициране на класовете и обектите ,[object Object],[object Object],[object Object],[object Object]
Идентифициране на класовете и обектите ,[object Object],The user must be allowed to specify each product by its primary characteristics, including its name and product number. If the bar code does not match the product, then an error should be generated to the message window and entered into the error log. The summary report of all transactions must be structured   as specified in section 7.A. ,[object Object]
Класове и обекти ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Идентифициране на класовете ,[object Object],[object Object],[object Object],[object Object]
Характеристики на класовете ,[object Object],[object Object],[object Object],[object Object],[object Object]
Отговорности на класовете ,[object Object],[object Object],[object Object],[object Object],[object Object]
Отговорности на класовете ,[object Object],[object Object],[object Object],[object Object],[object Object]
Cohesion  и  coupling ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Good and Bad Cohesion ,[object Object],[object Object]
Loose and Tight Coupling ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Въведение в  UML
Въведение в  UML ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Какво е моделиране? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Пример: карта на града
Защо да моделираме софтуера? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Системи, модели и изгледи ,[object Object],[object Object],[object Object],[object Object]
Системи, модели и изгледи ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Системи, модели и изгледи самолет статичен на полета аеродина-   ми чен модел отопли- телна система електрическо окабеляване
Какво е  UML? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
UML:  принципът  80/2 0 ,[object Object],[object Object]
UML : видове диаграми ,[object Object],[object Object],[object Object],[object Object],[object Object]
UML : видове диаграми ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
UML : видове диаграми ,[object Object],[object Object],[object Object]
UML: Use Case  диаграми ,[object Object],ReadTime ChangeBattery Actor Use case Package WatchUser WatchRepairPerson SetTime Watch
UML: Class  диаграми 1 2 push() release() Watch Class Association Multiplicity Attributes Operations ,[object Object],state PushButton ,[object Object],1 1 blinkIdx blinkSeconds() blinkMinutes() blinkHours() stopBlinking() referesh() LCDDisplay Battery load 1 2 1 Time now 1
UML: Sequence  диаграми Object Message Activation ,[object Object],Actor Lifeline :LCDDisplay blinkHours() blinkMinutes() refresh() commitNewTime() :Time incrementMinutes() stopBlinking() :Watch pressButton1() pressButton2() pressButtons1And2() pressButton1() :WatchUser
UML: Statechart  диаграми ,[object Object],State Initial state Final state Transition Event BlinkHours BlinkMinutes IncrementHrs IncrementMin. BlinkSeconds IncrementSec. StopBlinking [button1&2Pressed] [button1Pressed] [button2Pressed] [button2Pressed] [button2Pressed] [button1Pressed] [button1&2Pressed] [button1&2Pressed]
Други  UML  нотации ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
UML : основни нотации ,[object Object],[object Object],[object Object],[object Object],[object Object]
UML : основни нотации ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Use Case  диаграми ,[object Object],[object Object],[object Object],[object Object],[object Object],Passenger Purchase ticket View the timetable
Актьори ( Actors ) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Passenger GPS satellite
Use Case ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Purchase ticket View the timetable
Use Case  – пример ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Изпуснахме ли нещо? Случаите на проблем!
Релацията   <<extends>> ,[object Object],[object Object],Passenger PurchaseTicket TimeOut <<extends>> NoChange <<extends>> OutOfOrder <<extends>> Cancel <<extends>>
Релацията   <<includes>> ,[object Object],[object Object],Passenger PurchaseSingleTicket PurchaseMultiCard NoChange <<extends>> Cancel <<extends>> <<includes>> CollectMoney <<includes>>
Class  диаграми ,[object Object],[object Object],[object Object],[object Object],[object Object],Enumeration getZones() Price getPrice(Zone) * * TarifSchedule Trip zone:Zone Price: Price
Класове ,[object Object],[object Object],[object Object],[object Object],zone2price getZones() getPrice() TarifSchedule Table  zone2price Enumeration  getZones() Price  getPrice( Zone ) TarifSchedule Name Attributes Operations Signature ( return type)
Инстанции ,[object Object],[object Object],[object Object],zone2price = { {‘1’, .20}, {‘2’, .40}, {‘3’, .60}} tarif_1974:TarifSchedule
Актьори, класове и инстанции ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Асоциации ,[object Object],[object Object],[object Object],Price Zone Enumeration getZones() Price getPrice(Zone) * * TarifSchedule Trip
Асоциации  1- към -1  и  1- към - много Country name:   String City name:   String Has-capital Polygon draw() Point x: Integer y: Integer ,[object Object],* 1 1 ,[object Object],Consists-of
Асоциации много - към - много StockExchange Company tickerSymbol Lists   * * StockExchange Company Lists  1 * tickerSymbol SX_ID ,[object Object],[object Object]
От реалната ситуация към обектния модел ,[object Object],[object Object],[object Object],[object Object],StockExchange Company tickerSymbol Lists   * 1
От реалната ситуация към програмния код ,[object Object],[object Object],[object Object],[object Object],[object Object],StockExchange Company tickerSymbol Lists   * 1 public class StockExchange {   private ArrayList Company; ... } public class Company {   private string tickerSymbol; ... }
Агрегация ,[object Object],[object Object],[object Object],[object Object],население Влак Локомотив мощност 1 1..* Пътник име Държава Град име * име номер 1 Агрегат Компонент
Композиция ,[object Object],[object Object],Диалогов прозорец Бутон 2
Свързващи атрибути ( Qualifiers ) ,[object Object],Без свързващ атрибут 1 * Със свързващ атрибут Directory File filename Directory File 0…1 1 filename
Наследяване ,[object Object],[object Object],Button ZoneButton CancelButton
Практика: Идентификация на класовете Foo Alabala CustomerId Deposit() Withdraw() GetBalance() ,[object Object],[object Object],[object Object],[object Object],[object Object]
Практика: Правилно именуване Имената са важни!  Foo  ли е правилното име? Ами това  Alabala ? Foo Alabala CustomerId Deposit() Withdraw() GetBalance() Account Type CustomerId Deposit() Withdraw() GetBalance()
Практика: Обектно-ориентирано моделиране CustomerId 1)  Търсим нови обекти 2)  Намираме техните име, атрибути, методи Customer Name Bank Name Account Type Deposit() Withdraw() GetBalance()
Практика: Моделиране на банкова система CustomerId CustomerId 1)  Търсим нови обекти 2)  Намираме техните име, атрибути, методи 3)  Намираме асоциациите между обектите Has 4)  Задаваме имена на асоциациите 5)  Задаваме множественост на асоциациите * Account Type Deposit() Withdraw() GetBalance() Customer Name Bank Name
Практика: Итерираме CustomerId () CustomerId Has * * Account Amount Deposit() Withdraw() GetBalance() Bank Name Savings Account Withdraw() Checking Account Withdraw() Mortgage Account Withdraw() Customer Name CustomerId
Пакети ,[object Object],[object Object],DispatcherInterface Notification IncidentManagement
Sequence  диаграми ,[object Object],[object Object],[object Object],[object Object],[object Object],selectZone() pickupChange() pickUpTicket() insertCoins() Passenger TicketMachine
Sequence  диаграми ,[object Object],[object Object],[object Object],[object Object],selectZone() pickupChange() pickUpTicket() insertCoins() Passenger TicketMachine
Съобщения ,[object Object],[object Object],ZoneButton Dataflow selectZone() Passenger TarifSchedule Display lookupPrice(selection) displayPrice(price) price
Итерация и условия ,[object Object],[object Object],ChangeProcessor Iteration Condition * Passenger insertChange(coin) CoinIdentifier Display CoinDrop displayPrice(owedAmount) lookupCoin(coin) price [owedAmount<0]  returnChange(-owedAmount)
State Chart  диаграми ,[object Object],State Initial state Final state Transition Event BlinkHours BlinkMinutes IncrementHrs IncrementMin. BlinkSeconds IncrementSec. StopBlinking [button1&2Pressed] [button1Pressed] [button2Pressed] [button2Pressed] [button2Pressed] [button1Pressed] [button1&2Pressed] [button1&2Pressed]
Activity  диаграми ,[object Object],[object Object]
Activity  диаграми: моделиране на условия Condition
Activity  диаграми: моделиране на паралелизъм ,[object Object],[object Object],Synchronization Splitting
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Първо правим модела или пишем кода?
UML  – обобщение ,[object Object],[object Object],[object Object],[object Object],[object Object]
UML  – обобщение ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],Обектно-ориентиран дизайн и  UML http://patterns.dev.bg

Más contenido relacionado

Similar a Introduction To Object Oriented Design and UML

Nakov High Quality Code
Nakov High Quality CodeNakov High Quality Code
Nakov High Quality Code
Svetlin Nakov
 
Rykowodstwo po programirane_na_bazata_na_ezika_java
Rykowodstwo po programirane_na_bazata_na_ezika_javaRykowodstwo po programirane_na_bazata_na_ezika_java
Rykowodstwo po programirane_na_bazata_na_ezika_java
Sonia Lichkova
 
Svetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework OverviewSvetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework Overview
Svetlin Nakov
 
Тестове за ползваемост - Usability testing
Тестове за ползваемост - Usability testingТестове за ползваемост - Usability testing
Тестове за ползваемост - Usability testing
Kalin Vasilev
 

Similar a Introduction To Object Oriented Design and UML (15)

Nakov High Quality Code
Nakov High Quality CodeNakov High Quality Code
Nakov High Quality Code
 
Rykowodstwo po programirane_na_bazata_na_ezika_java
Rykowodstwo po programirane_na_bazata_na_ezika_javaRykowodstwo po programirane_na_bazata_na_ezika_java
Rykowodstwo po programirane_na_bazata_na_ezika_java
 
Училищен курс по програмиране на C# (2013/2014), занятие №7
Училищен курс по програмиране на C# (2013/2014), занятие №7Училищен курс по програмиране на C# (2013/2014), занятие №7
Училищен курс по програмиране на C# (2013/2014), занятие №7
 
18 operatori i funkcii
18 operatori i funkcii18 operatori i funkcii
18 operatori i funkcii
 
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
 
7. vb sabitijno programirane
7. vb sabitijno programirane7. vb sabitijno programirane
7. vb sabitijno programirane
 
Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8
 
Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12
 
Училищен курс по програмиране на C# (2013/2014), занятие №14
Училищен курс по програмиране на C# (2013/2014), занятие №14Училищен курс по програмиране на C# (2013/2014), занятие №14
Училищен курс по програмиране на C# (2013/2014), занятие №14
 
Soft eng.
Soft eng.Soft eng.
Soft eng.
 
Курс по програмиране за напреднали (2012) - 4. Desktop приложения. Windows Forms
Курс по програмиране за напреднали (2012) - 4. Desktop приложения. Windows FormsКурс по програмиране за напреднали (2012) - 4. Desktop приложения. Windows Forms
Курс по програмиране за напреднали (2012) - 4. Desktop приложения. Windows Forms
 
Svetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework OverviewSvetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework Overview
 
3D4AUTO_R4_Virtual Seminars- BULGARIAN
3D4AUTO_R4_Virtual Seminars- BULGARIAN3D4AUTO_R4_Virtual Seminars- BULGARIAN
3D4AUTO_R4_Virtual Seminars- BULGARIAN
 
Eclipse Overview@TUES
Eclipse Overview@TUESEclipse Overview@TUES
Eclipse Overview@TUES
 
Тестове за ползваемост - Usability testing
Тестове за ползваемост - Usability testingТестове за ползваемост - Usability testing
Тестове за ползваемост - Usability testing
 

Más de Svetlin Nakov

Дипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин НаковДипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин Наков
Svetlin Nakov
 
Свободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТСвободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТ
Svetlin Nakov
 
Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)
Svetlin Nakov
 

Más de Svetlin Nakov (20)

BG-IT-Edu: отворено учебно съдържание за ИТ учители
BG-IT-Edu: отворено учебно съдържание за ИТ учителиBG-IT-Edu: отворено учебно съдържание за ИТ учители
BG-IT-Edu: отворено учебно съдържание за ИТ учители
 
Programming World in 2024
Programming World in 2024Programming World in 2024
Programming World in 2024
 
AI Tools for Business and Startups
AI Tools for Business and StartupsAI Tools for Business and Startups
AI Tools for Business and Startups
 
AI Tools for Scientists - Nakov (Oct 2023)
AI Tools for Scientists - Nakov (Oct 2023)AI Tools for Scientists - Nakov (Oct 2023)
AI Tools for Scientists - Nakov (Oct 2023)
 
AI Tools for Entrepreneurs
AI Tools for EntrepreneursAI Tools for Entrepreneurs
AI Tools for Entrepreneurs
 
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
 
AI Tools for Business and Personal Life
AI Tools for Business and Personal LifeAI Tools for Business and Personal Life
AI Tools for Business and Personal Life
 
Дипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин НаковДипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин Наков
 
Дипломна работа: учебно съдържание по ООП
Дипломна работа: учебно съдържание по ООПДипломна работа: учебно съдържание по ООП
Дипломна работа: учебно съдържание по ООП
 
Свободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТСвободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТ
 
AI and the Professions of the Future
AI and the Professions of the FutureAI and the Professions of the Future
AI and the Professions of the Future
 
Programming Languages Trends for 2023
Programming Languages Trends for 2023Programming Languages Trends for 2023
Programming Languages Trends for 2023
 
IT Professions and How to Become a Developer
IT Professions and How to Become a DeveloperIT Professions and How to Become a Developer
IT Professions and How to Become a Developer
 
GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)
 
IT Professions and Their Future
IT Professions and Their FutureIT Professions and Their Future
IT Professions and Their Future
 
How to Become a QA Engineer and Start a Job
How to Become a QA Engineer and Start a JobHow to Become a QA Engineer and Start a Job
How to Become a QA Engineer and Start a Job
 
Призвание и цели: моята рецепта
Призвание и цели: моята рецептаПризвание и цели: моята рецепта
Призвание и цели: моята рецепта
 
What Mongolian IT Industry Can Learn from Bulgaria?
What Mongolian IT Industry Can Learn from Bulgaria?What Mongolian IT Industry Can Learn from Bulgaria?
What Mongolian IT Industry Can Learn from Bulgaria?
 
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
 
Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)
 

Introduction To Object Oriented Design and UML

  • 1. Курс “Шаблони за софтуерен дизайн” Обектно-ориентиран дизайн и UML http://patterns.dev.bg Светлин Наков Национална академия по разработка на софтуер academy.devbg.org
  • 2.
  • 3. Въведение в обектно- ориентирания дизайн
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 18.
  • 19.
  • 21.
  • 22.
  • 23.
  • 24. Системи, модели и изгледи самолет статичен на полета аеродина- ми чен модел отопли- телна система електрическо окабеляване
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57. Практика: Правилно именуване Имената са важни! Foo ли е правилното име? Ами това Alabala ? Foo Alabala CustomerId Deposit() Withdraw() GetBalance() Account Type CustomerId Deposit() Withdraw() GetBalance()
  • 58. Практика: Обектно-ориентирано моделиране CustomerId 1) Търсим нови обекти 2) Намираме техните име, атрибути, методи Customer Name Bank Name Account Type Deposit() Withdraw() GetBalance()
  • 59. Практика: Моделиране на банкова система CustomerId CustomerId 1) Търсим нови обекти 2) Намираме техните име, атрибути, методи 3) Намираме асоциациите между обектите Has 4) Задаваме имена на асоциациите 5) Задаваме множественост на асоциациите * Account Type Deposit() Withdraw() GetBalance() Customer Name Bank Name
  • 60. Практика: Итерираме CustomerId () CustomerId Has * * Account Amount Deposit() Withdraw() GetBalance() Bank Name Savings Account Withdraw() Checking Account Withdraw() Mortgage Account Withdraw() Customer Name CustomerId
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68. Activity диаграми: моделиране на условия Condition
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.