Programmalıq támiynat qurılması hám evolyuciyası / 11-ameliy_PTQE
.pdf
11-ámeliy jumıs. Programmalıq támiynattı konstrukciyalawda modellestiriwdiń ornı.
Jumıstıń maqseti: UML (Unified Modeling Language) diagrammaların ámeliyatta qollanıw. Klass diagramması, Use Case hám Sequence diagrammaların sızıw hám olardı C++ kodına aylandırıw (Forward Engineering). Modeldiń kod sapasına hám arxitekturasına tásirin úyreniw.
Teoriyalıq bólim:
UML: Kodtıń vizuallıq tili.
Klass Diagramması: Statikalıq struktura (Klasslar, Atributlar, Metodlar).
Use Case: Paydalanıwshı ne isley aladı?
Sequence: Obyektler qalay baylanısadı?
ÁMELIY BÓLIM:
UML diagrammaların sızıp, kodqa aylandıramız.
1-mısal: Klass Diagramması -> C++
Model:
[Student]
-name : string
-id : int
+getName() : string
+study() : void
Kod:
class Student { private:
string name; int id;
public:
string getName() { return name; }
void study() { cout << "Oqıp atırman"; }
};
2-mısal: Qatnasıqlar (Association)
Model: [Mugallim] -> (oqıtadı) -> [Student]
Kod:
class Student; // Forward declaration
class Mugallim { vector<Student*> students;
public:
void teach() { /* ... */ }
};
3-mısal: Sequence Diagram (Login)
Model: User -> (login) -> System -> (check) -> Database
Kod (Logika):
void login(string u, string p) {
//1. System: Userden aladı
//2. System: Bazaǵa soraw jiberedi
if (db.checkUser(u, p)) { cout << "OK";
}
}
4-mısal: State Machine (Jaǵdaylar)
Model: [Order] -> (Created) -> (Paid) -> (Shipped)
Kod:
enum State { CREATED, PAID, SHIPPED }; class Order {
State state = CREATED; public:
void pay() {
if (state == CREATED) state = PAID;
}
void ship() {
if (state == PAID) state = SHIPPED;
}
};
5-mısal: Reverse Engineering (Kodtan model)
Kod:
class Car { Engine* e; }; Model:
[Car] <>-- [Engine] (Agregaciya/Kompoziciya).
ÁMELIY TAPSÍRMALAR
1-tapsırma: Online Dúkan (Klass Diagramması).
Tómendegi klasslar ushın diagramma sızıń (qaǵazda):
`User`, `Product`, `Order`, `Cart`.
Olar arasındaǵı baylanıslardı (1:*, *:*) kórsetiń.
2-tapsırma: Bankomat (Use Case).
Bankomat sistemasınıń 3 tiykarǵı paydalanıw jaǵdayın (Actor: Klient) jazıń hám sızıń.
(Mısalı: Aqsha sheshiw, Balans kóriw).
3-tapsırma: Kodqa aylandırıw.
Berilgen Diagramma:
[Animal] <|-- [Dog] (Inheritance) [Animal] : +eat()
[Dog] : +bark()
Bunı C++ klasslarına aylandırıń.
4-tapsırma: Sequence (Xabar almasıw).
`User` -> `Browser` -> `Server` -> `Database`.
"Izlew" (Search) procesiniń izbe-izligin jazıń (1. User jazadı, 2. Browser jiberedi...).
5-mısal: Jaǵdaylar (Svetofor).
Svetofor ushın State Machine diagrammasın sızıń. (Qızıl -> Sarı -> Jasıl -> Sarı -> Qızıl).
Hám kodta `switch-case` arqalı realizaciya etiń.
