Генеративті үлгі - зауыт паттерні
Автор: murat.use • Декабрь 13, 2023 • Реферат • 1,971 Слов (8 Страниц) • 89 Просмотры
Қазақстан Республикасының Білім және ғылым министрлігі
Әл-Фараби атындағы Қазақ ұлттық университеті
Ақпараттық технологиялар факультеті
Компьютерлік ғылымдар кафедрасы
[pic 1]
“ Обьектіге бағытталған талдау және жобалау” пәні бойынша
СӨЖ
Орындаған: Үсен Мұрат
Тексерген: Кенжебек Ержан
Алматы 2023
1-Тапсырма
Генеративті үлгі - зауыт паттерні
Әртүрлі көлік түрлерінің объектілерін (автокөлік, велосипед, ұшақ) жасау үшін зауыттық әдісті қолданып көлікті басқару жүйесін жасау.
Сипаттама: move() әдісімен көлік интерфейсін жасаңыз. Әрі қарай, Көлік интерфейсін жүзеге асыратын Автокөлік, Велосипед және Ұшақ сыныптарын енгізіңіз. Жасағыңыз келетін көлік түріне байланысты осы сыныптардың даналарын жасау үшін зауыттық әдісті пайдаланыңыз.
Car, Bicycle, Airplane (Классы):
#include <iostream>
#include <stdexcept>
using namespace std;
/* Бұл код таза виртуалды функциясы бар Көлік құралының негізгі интерфейсін анықтайды, move(). C++ тіліндегі виртуалды функциялар абстрактілі класстарды жасауға мүмкіндік береді.*/
// Базовый интерфейс Vehicle
class Vehicle {
public:
virtual void move() = 0;
};
// Класс Car реализующий интерфейс Vehicle
class Car : public Vehicle {
public:
void move() override {
cout << "Car is moving" << endl;
}
};
// Класс Bicycle реализующий интерфейс Vehicle
class Bicycle : public Vehicle {
public:
void move() override {
cout << "Bicycle is moving" << endl;
}
};
// Класс Airplane реализующий интерфейс Vehicle
class Airplane : public Vehicle {
public:
void move() override {
cout << "Airplane is flying" << endl;
}
};
/* Мұнда үш класс анықталған (Car, Bicycle, Airplane), олар Vehicle базалық класын мұраға алады және оның move() виртуалды функциясын жүзеге асырады. Бұл сыныптардың әрқайсысы тасымалдаудың әртүрлі түрлерін көрсетеді.*/
// Фабричный класс VehicleFactory
class VehicleFactory {
public:
Vehicle* createVehicle(const string& vehicleType) {
if (vehicleType == "car") {
return new Car();
} else if (vehicleType == "bicycle") {
return new Bicycle();
} else if (vehicleType == "airplane") {
return new Airplane();
} else {
throw invalid_argument("Invalid vehicle type");
}
}
};
/*Бұл класс Vehicle түріндегі нысандарды жасауға арналған зауытты білдіреді. createVehicle әдісі көлік түрін көрсететін көлік түрі жол аргументін алады және сол түрдегі жаңа нысанды қайтарады.*/
int main() {
VehicleFactory factory;
Vehicle* car = factory.createVehicle("car");
Vehicle* bicycle = factory.createVehicle("bicycle");
Vehicle* airplane = factory.createVehicle("airplane");
car->move();
bicycle->move();
airplane->move();
delete car;
delete bicycle;
delete airplane;
return 0;
}
/*main() функцияда зауыттың көмегімен әртүрлі көлік түрлерінің объектілері жасалады. Содан кейін move() әдісі әрбір жасалған нысанда шақырылады және пайдаланылғаннан кейін нысандар жою операторы арқылы жойылады.*/
Дизайн үлгілерінің құжаттамасы:
Зауыттық әдіс:
Мақсаты: Жоғарғы сыныптардың даналарын жасау үшін интерфейсті қамтамасыз етеді, бірақ ішкі сыныптарға жасалған даналардың түрін өзгертуге мүмкіндік береді.
Жобаны қолдану: VehicleFactoryImpl көліктердің әртүрлі түрлерін жасау үшін ыңғайлы интерфейспен клиент кодын қамтамасыз ететін VehicleFactory іске асырады.
Жоба болашақта жаңа көлік түрлерін оңай қосу мүмкіндігі бар көлік құралдарын басқарудың икемді жүйесін ұсынады. Зауыттық әдіс белгілі бір көлік сыныптарын білу үшін клиент кодының қажеттілігін болдырмайды, бұл жүйені оңай кеңейтуге және техникалық қызмет көрсетуге мүмкіндік береді.
...