Object-oriented System Analysis
and Design
Лекц №7.
Классын диаграмм (Үргэлжлэл)
2
Usecase тодорхойлолтоос класс үүсгэх
Систем дэх классуудыг тодорхойлохдоо Usecase
тодорхойлолтонд дурдагдсан нэр үгнүүдийг
цуглуулна.
Usecase тодорхойлолт: Мөнгө авах
1 Overview
Энэхүү use case нь Мөнгө авах
үйлдлийг хэрхэн гүйцэтгэхийг дүрсэлнэ.
2 Eventflow
Энэхүү use case нь данс эзэмшигч
системд амжилттай нэвтрэн орсноор
идэвхижинэ.
2.1 Main flow
1. Тухайн данс эзэмшигчийн мэдээллийг
баазаас хайж тухайн данс эзэмшигчийн
дансан дахь мөнгөний хэмжээ болон
дансны дугаарыг дэлгэцэнд хэвлэдэг.
2. Данс эзэмшигч нь мөнгө авах дансаа
сонгож, авах мөнгөний хэмжээг оруулна.
Account
holder
Withdrawal Customer
DB
Log in Account Account
No.
Deposit
balance
Required
amount 口座番号
・・・
3
Удамшил ба бүрдмэл харьцаа
Бүрдмэл харьцаа:
“...бол ...тай”
Машин
Мотор Äóãóé Такси
Удамшил харьцаа:
“... бол ... юм”
Удамшил ба Бүрдмэл нь классуудын холбоосын нэг хэлбэр юм.
4
Холбоосын зэрэгүүд
минийМашин
: Машин
БаруунУрдДугуй: Дугуй
Зүүн УрдДугуй: Дугуй
БаруунХойдДугуй: Дугуй
ЗүүнХойдДугуй: Дугуй
Машин Дугуй
1 4
Миний машин 4 дугуйтай.
Класс
1
зөвхөн 1
Класс
0..1
0 эсвэл 1
Класс* 0 буюу олон
Класс
1..*
1 буюу олон
Класс
2..6
2-оос 6
Класс
1,5,10
1 эсвэл 5
эсвэл 10
5
Объект хандлагат зохиомж
Системийн зохиомж
Шинжилгээний загваруудыг програмчлалд хэрэгжүүлэхийн
тулд зохиомжийн шатанд шаардлагатай элементүүдийг
нэмж илүү дэлгэрэнгүй дүрслэх шаардлага тавигддаг.
Тухайлбал:
Шинжилгээний загварууд дээр зарим шаардлагатай
элементүүдийг нэмж дүрслэх
Классуудын хоорондын холбогч классыг дэлгэрэнгүй
дүрслэх
Классын диаграмд классын бүтцийг илүү дэлгэрэнгүй
дүрслэх
Sequence diagram-ыг задлах
6
Ойлголт сэргээх нь
• Тухайн системд яригдах гол өгөгдөл
(объектууд)-ийг ерөнхийд нь 3 хуваана:
– Entity classes : Бодит амьдралын объектууд ба
тэднийг дүрслэх өгөгдөл
– Boundary classes: Систем ба хэрэглэгч хоорондын
холбогч гүүр
– Control classes : Entity class –аар үүсгэсэн
ӨХТөрлөө удирдах зориулттай клиент класс юм.
7
Зохиомжийн загвар:
Юуг хэрхэн хийхийг тодорхойлдог
Үйл ажиллагааны бүтэц шинж
чанарыг дэлгэрэнгүй дүрсэлдэг.
Аль ч шатанд “Алхам алхамаар нэмэгдүүлэн хөгжүүлэх” зарчмыг баримтална
Объект хандлагат зохиомж (үргэлжлэл)
Шинжилгээний загвар:
Юу хийгдэхийг тодорхойлдог
Үйл ажиллагааг ерөнхийд нь
товч дүрсэлнэ.
8
Классын зохиомж гаргах шаардлага
Шинжилгээний класс: Үйл ажиллагаанд
шаардагдах өгөгдлүүдийг дүрсэлнэ
Зохиомжийн класс: Компьютержуулахад
Шаардагдах элементүүд нэмж дүрслэгдэнэ
Account Contractant
Savings
account
Time deposit
account
Концептуаль загвар Control Class
Boundary Class
Entity Class
9
Entity Class
Control Class
Boundary Class
Entity Class
Системийн үйл
ажиллагааны онцлогийг
судалсны үндсэн дээр
системд ашиглагдах нэр
үгнүүд дээр дүн шинжилгээ
хийх замаар системийн
шинжилгээний үе шатанд
Entity Class –ыг
тодорхойлдог.
Жишээ нь: Эзэмшигч,
үйлчлүүлэгч
10
Control Class
Control Class
Boundary Class
Entity Class
Бусад классуудаа удирддаг
Үйл ажиллагааг
хэрэгжүүлдэг
Usecase бүрт ганц л байдаг
Тухайлбал:
Захиалга Урирдах Класс
(OrderControl class) нь
өөртөө захиалгын
процедурыг агуулах бөгөөд
бусад классууд руу хэд
хэдэн мэдээ дамжуулалтыг
хийдэг.
11
Boundary Class
Системийг гадаад
элементүүдтэй холбогч гүүр
бөгөөд системийн оролт/
гаралтыг зохицуулна
Зөвхөн Actors нь boundary
class руу хандана
Энэ класс нь ерөнхийдөө
хэрэглэгчийн болон
системийн интерфэйс гэж 2
ангилагдана
Operator Other system
Тухайлбал
MainScreen class
LoginScreen class
Control Class
Entity Class
Boundary Class
12
Классын хэлбэрийг дүрслэх
<<boundary>> <<entity>><<control>>
<<>> хаалтыг ашиглан классын хэлбэрийг тодорхойлж болно.
MainScreen BankController Account
13
Холбоосын зохиомж гаргах
• Хамаарал (Navigability)
• Нөлөөлөл (Dependency)
• Бүрдмэл харьцааны хэлбэрүүд:
• Aggregation
• Composition
• ХолбогЧ классын зохиомж
14
Хамаарал
Class A Class B
Class A нь Class B-г мэддэг байх шаардлагатай.
Class A нь Class B рүү мэдээ дамжуулах
Хэрэв холбоос 2 чиглэлтэй бол сумгүй шугамаар холбоно.
15
BankController Account
BankController объект нь Account объект руу withdraw()
мэдээ дамжуулна. Үүний тулд BankController объект нь
мэдээг хүлээн авах объектыг мэддэг байх шаардлагатай
бөгөөд холбоос нь BankController объектоос Account
объект руу чиглэсэн байна.
withdraw()
Хамаарал (Жишээ)
16
Нөлөөлөл
Class A Class B
Class A-д Class B нөлөөлөх нь:
Class A нь үйлдэлээ гүйцэтгэхдээ Class B-н
тухайн нэг объектыг шаарддаг.
17
MyApplet java.awt.Graphics
MyApplet нь paint() үйлдэлийг гүйцэтгэхдээ
Graphics-н нэг объектыг аргумент байдлаар
ашигладаг.
(Graphics-н объектгүйгээр paint() нь үйлдэлээ
гүйцэтгэх боломжгүй)
Graphics класс нь MyApplet класд нөлөөлж байна.
paint (java.awt.Graphics g)
Нөлөөлөл (жишээ)
18
Receipt Transaction
Дээрх жишээний хувьд Receipt классын байгуулагч
дуудагдахын тулд Transaction классын нэг объектыг
аргумент болгон шаардаж байна.
(Transaction классын объектгүйгээр Receipt классын
байгуулалт хйигдэхгүй ).
Transaction класс нь Receipt классд нөлөөлж байна.
Receipt (Transaction transaction)
Нөлөөлөл (жишээ)
19
Бүрдмэл харьцааны хэлбэрүүд
(Aggregation & Composition)
Section Employee
1..* 0..*
Section Employee
1 0..*
Aggregation:
Албан хаагч нь хэд хэдэн
хэлтэсд харъяалагдах
боломжтой бол
Composition:
Албан хаагч нь зөвхөн нэг л
хэлтэсд харъяалагдах
боломжтой бол
20
ХолбогЧ классыг загварЧлах
Програмчлалын хэлнүүдэд холбогч классын асуудал тусгагдаагүй
байдаг тул зохиомжийн шатанд тодорхой асуудлыг шийдвэрлэх
хэрэгтэй
Class A Class B
Class C
ab
?
21
Class A Class B
Class C
Жишээ 1: Холбоосын зэрэглэл нь “нэг нь нэгтэй” эсвэл “нэг нь олонтой”
тохиолдолд холбогч классын атрибутыг үндсэн 2 класын аль нэгнийх нь
атрибутаар тодорхойлох
ab
Class B
1*
1*
Class A
ab
ХолбогЧ классыг загварЧлах
(жишээ)
22
Class A Class B
Class C
ab
* *
Class A Class B
Class C
ab
* *1 1
Жишээ : Холбоосын зэрэглэл нь “олон нь олонтой”
тохиолдолд холбогч классыг бие даасан классаар
тодорхойлох
ХолбогЧ классыг загварЧлах
(жишээ)
23
Классын зохиомж гаргах
Атрибут тодорхойлох
Үйлдэл тодорхойлох
24
Атрибут тодорхойлох
Class ABC
Хандалтын хэлбэрүүд
+ : public Бусад бүх классаас хандана
# : protected Зөвхөн удамшсан классаас хандана
- : private Зөвхөн өөрөө л хандана
Өгөгдлийн төрлүүд
Өгөгдлийн үндсэн төрлүүд
(String, int, Float гэх мэт)
Өгөгдлийн хийсвэр төрөл (Class type)
Анхны утга
Бичиглэлийн хэлбэр:
Хандалт Өгөгдлийн нэр : Өгөгдлийн төрөл= Анхны утга
25
Үйлдэл тодорхойлох
Class ABC
Хандалтын хэлбэрүүд
+:public Бусад бүх классаас хандана
#:protected Зөвхөн удамшсан классаас хандана
-:private Зөвхөн өөрөө л хандана
Параметр ба параметрийн төрлүүд
Өгөгдлийн үндсэн төрлүүд
(String, int, Float гэх мэт)
Өгөгдлийн хийсвэр төрөл (Class type)
Буцаах утга(void, boolean, string, int, float гэх мэт)
Бичиглэлийн хэлбэр:
Хандалт Үйлдлийн нэр (Параметр: параметрийн төрөл)= Буцаах
утга
26
Account
+ withdraw(transaction :Transaction): boolean
+ Account(accountNo :int): void
+ getBalance( ): int
- checkOverDraft(amount :int): boolean
- accountId: int
- balance: int
Basic operation
Administrative operation
Access operation
Link access operation
<<entity>>
Үйлдэл тодорхойлох
27
Удамшил ба бүрдмэл харьцаа
Бүрдмэл харьцаа:
“...бол ...тай”
Машин
Мотор Дугуй Такси
Удамшил харьцаа:
“... бол ... юм”
Удамшил ба Бүрдмэл нь классуудын холбоосын нэг хэлбэр юм.
28
29
30
31

Ood lesson7,8 class

  • 1.
    Object-oriented System Analysis andDesign Лекц №7. Классын диаграмм (Үргэлжлэл)
  • 2.
    2 Usecase тодорхойлолтоос классүүсгэх Систем дэх классуудыг тодорхойлохдоо Usecase тодорхойлолтонд дурдагдсан нэр үгнүүдийг цуглуулна. Usecase тодорхойлолт: Мөнгө авах 1 Overview Энэхүү use case нь Мөнгө авах үйлдлийг хэрхэн гүйцэтгэхийг дүрсэлнэ. 2 Eventflow Энэхүү use case нь данс эзэмшигч системд амжилттай нэвтрэн орсноор идэвхижинэ. 2.1 Main flow 1. Тухайн данс эзэмшигчийн мэдээллийг баазаас хайж тухайн данс эзэмшигчийн дансан дахь мөнгөний хэмжээ болон дансны дугаарыг дэлгэцэнд хэвлэдэг. 2. Данс эзэмшигч нь мөнгө авах дансаа сонгож, авах мөнгөний хэмжээг оруулна. Account holder Withdrawal Customer DB Log in Account Account No. Deposit balance Required amount 口座番号 ・・・
  • 3.
    3 Удамшил ба бүрдмэлхарьцаа Бүрдмэл харьцаа: “...бол ...тай” Машин Мотор Äóãóé Такси Удамшил харьцаа: “... бол ... юм” Удамшил ба Бүрдмэл нь классуудын холбоосын нэг хэлбэр юм.
  • 4.
    4 Холбоосын зэрэгүүд минийМашин : Машин БаруунУрдДугуй:Дугуй Зүүн УрдДугуй: Дугуй БаруунХойдДугуй: Дугуй ЗүүнХойдДугуй: Дугуй Машин Дугуй 1 4 Миний машин 4 дугуйтай. Класс 1 зөвхөн 1 Класс 0..1 0 эсвэл 1 Класс* 0 буюу олон Класс 1..* 1 буюу олон Класс 2..6 2-оос 6 Класс 1,5,10 1 эсвэл 5 эсвэл 10
  • 5.
    5 Объект хандлагат зохиомж Системийнзохиомж Шинжилгээний загваруудыг програмчлалд хэрэгжүүлэхийн тулд зохиомжийн шатанд шаардлагатай элементүүдийг нэмж илүү дэлгэрэнгүй дүрслэх шаардлага тавигддаг. Тухайлбал: Шинжилгээний загварууд дээр зарим шаардлагатай элементүүдийг нэмж дүрслэх Классуудын хоорондын холбогч классыг дэлгэрэнгүй дүрслэх Классын диаграмд классын бүтцийг илүү дэлгэрэнгүй дүрслэх Sequence diagram-ыг задлах
  • 6.
    6 Ойлголт сэргээх нь •Тухайн системд яригдах гол өгөгдөл (объектууд)-ийг ерөнхийд нь 3 хуваана: – Entity classes : Бодит амьдралын объектууд ба тэднийг дүрслэх өгөгдөл – Boundary classes: Систем ба хэрэглэгч хоорондын холбогч гүүр – Control classes : Entity class –аар үүсгэсэн ӨХТөрлөө удирдах зориулттай клиент класс юм.
  • 7.
    7 Зохиомжийн загвар: Юуг хэрхэнхийхийг тодорхойлдог Үйл ажиллагааны бүтэц шинж чанарыг дэлгэрэнгүй дүрсэлдэг. Аль ч шатанд “Алхам алхамаар нэмэгдүүлэн хөгжүүлэх” зарчмыг баримтална Объект хандлагат зохиомж (үргэлжлэл) Шинжилгээний загвар: Юу хийгдэхийг тодорхойлдог Үйл ажиллагааг ерөнхийд нь товч дүрсэлнэ.
  • 8.
    8 Классын зохиомж гаргахшаардлага Шинжилгээний класс: Үйл ажиллагаанд шаардагдах өгөгдлүүдийг дүрсэлнэ Зохиомжийн класс: Компьютержуулахад Шаардагдах элементүүд нэмж дүрслэгдэнэ Account Contractant Savings account Time deposit account Концептуаль загвар Control Class Boundary Class Entity Class
  • 9.
    9 Entity Class Control Class BoundaryClass Entity Class Системийн үйл ажиллагааны онцлогийг судалсны үндсэн дээр системд ашиглагдах нэр үгнүүд дээр дүн шинжилгээ хийх замаар системийн шинжилгээний үе шатанд Entity Class –ыг тодорхойлдог. Жишээ нь: Эзэмшигч, үйлчлүүлэгч
  • 10.
    10 Control Class Control Class BoundaryClass Entity Class Бусад классуудаа удирддаг Үйл ажиллагааг хэрэгжүүлдэг Usecase бүрт ганц л байдаг Тухайлбал: Захиалга Урирдах Класс (OrderControl class) нь өөртөө захиалгын процедурыг агуулах бөгөөд бусад классууд руу хэд хэдэн мэдээ дамжуулалтыг хийдэг.
  • 11.
    11 Boundary Class Системийг гадаад элементүүдтэйхолбогч гүүр бөгөөд системийн оролт/ гаралтыг зохицуулна Зөвхөн Actors нь boundary class руу хандана Энэ класс нь ерөнхийдөө хэрэглэгчийн болон системийн интерфэйс гэж 2 ангилагдана Operator Other system Тухайлбал MainScreen class LoginScreen class Control Class Entity Class Boundary Class
  • 12.
    12 Классын хэлбэрийг дүрслэх <<boundary>><<entity>><<control>> <<>> хаалтыг ашиглан классын хэлбэрийг тодорхойлж болно. MainScreen BankController Account
  • 13.
    13 Холбоосын зохиомж гаргах •Хамаарал (Navigability) • Нөлөөлөл (Dependency) • Бүрдмэл харьцааны хэлбэрүүд: • Aggregation • Composition • ХолбогЧ классын зохиомж
  • 14.
    14 Хамаарал Class A ClassB Class A нь Class B-г мэддэг байх шаардлагатай. Class A нь Class B рүү мэдээ дамжуулах Хэрэв холбоос 2 чиглэлтэй бол сумгүй шугамаар холбоно.
  • 15.
    15 BankController Account BankController объектнь Account объект руу withdraw() мэдээ дамжуулна. Үүний тулд BankController объект нь мэдээг хүлээн авах объектыг мэддэг байх шаардлагатай бөгөөд холбоос нь BankController объектоос Account объект руу чиглэсэн байна. withdraw() Хамаарал (Жишээ)
  • 16.
    16 Нөлөөлөл Class A ClassB Class A-д Class B нөлөөлөх нь: Class A нь үйлдэлээ гүйцэтгэхдээ Class B-н тухайн нэг объектыг шаарддаг.
  • 17.
    17 MyApplet java.awt.Graphics MyApplet ньpaint() үйлдэлийг гүйцэтгэхдээ Graphics-н нэг объектыг аргумент байдлаар ашигладаг. (Graphics-н объектгүйгээр paint() нь үйлдэлээ гүйцэтгэх боломжгүй) Graphics класс нь MyApplet класд нөлөөлж байна. paint (java.awt.Graphics g) Нөлөөлөл (жишээ)
  • 18.
    18 Receipt Transaction Дээрх жишээнийхувьд Receipt классын байгуулагч дуудагдахын тулд Transaction классын нэг объектыг аргумент болгон шаардаж байна. (Transaction классын объектгүйгээр Receipt классын байгуулалт хйигдэхгүй ). Transaction класс нь Receipt классд нөлөөлж байна. Receipt (Transaction transaction) Нөлөөлөл (жишээ)
  • 19.
    19 Бүрдмэл харьцааны хэлбэрүүд (Aggregation& Composition) Section Employee 1..* 0..* Section Employee 1 0..* Aggregation: Албан хаагч нь хэд хэдэн хэлтэсд харъяалагдах боломжтой бол Composition: Албан хаагч нь зөвхөн нэг л хэлтэсд харъяалагдах боломжтой бол
  • 20.
    20 ХолбогЧ классыг загварЧлах Програмчлалынхэлнүүдэд холбогч классын асуудал тусгагдаагүй байдаг тул зохиомжийн шатанд тодорхой асуудлыг шийдвэрлэх хэрэгтэй Class A Class B Class C ab ?
  • 21.
    21 Class A ClassB Class C Жишээ 1: Холбоосын зэрэглэл нь “нэг нь нэгтэй” эсвэл “нэг нь олонтой” тохиолдолд холбогч классын атрибутыг үндсэн 2 класын аль нэгнийх нь атрибутаар тодорхойлох ab Class B 1* 1* Class A ab ХолбогЧ классыг загварЧлах (жишээ)
  • 22.
    22 Class A ClassB Class C ab * * Class A Class B Class C ab * *1 1 Жишээ : Холбоосын зэрэглэл нь “олон нь олонтой” тохиолдолд холбогч классыг бие даасан классаар тодорхойлох ХолбогЧ классыг загварЧлах (жишээ)
  • 23.
    23 Классын зохиомж гаргах Атрибуттодорхойлох Үйлдэл тодорхойлох
  • 24.
    24 Атрибут тодорхойлох Class ABC Хандалтынхэлбэрүүд + : public Бусад бүх классаас хандана # : protected Зөвхөн удамшсан классаас хандана - : private Зөвхөн өөрөө л хандана Өгөгдлийн төрлүүд Өгөгдлийн үндсэн төрлүүд (String, int, Float гэх мэт) Өгөгдлийн хийсвэр төрөл (Class type) Анхны утга Бичиглэлийн хэлбэр: Хандалт Өгөгдлийн нэр : Өгөгдлийн төрөл= Анхны утга
  • 25.
    25 Үйлдэл тодорхойлох Class ABC Хандалтынхэлбэрүүд +:public Бусад бүх классаас хандана #:protected Зөвхөн удамшсан классаас хандана -:private Зөвхөн өөрөө л хандана Параметр ба параметрийн төрлүүд Өгөгдлийн үндсэн төрлүүд (String, int, Float гэх мэт) Өгөгдлийн хийсвэр төрөл (Class type) Буцаах утга(void, boolean, string, int, float гэх мэт) Бичиглэлийн хэлбэр: Хандалт Үйлдлийн нэр (Параметр: параметрийн төрөл)= Буцаах утга
  • 26.
    26 Account + withdraw(transaction :Transaction):boolean + Account(accountNo :int): void + getBalance( ): int - checkOverDraft(amount :int): boolean - accountId: int - balance: int Basic operation Administrative operation Access operation Link access operation <<entity>> Үйлдэл тодорхойлох
  • 27.
    27 Удамшил ба бүрдмэлхарьцаа Бүрдмэл харьцаа: “...бол ...тай” Машин Мотор Дугуй Такси Удамшил харьцаа: “... бол ... юм” Удамшил ба Бүрдмэл нь классуудын холбоосын нэг хэлбэр юм.
  • 28.
  • 29.
  • 30.
  • 31.