Лабораторна робота №2 патерн програмування "одинак"



Download 344,35 Kb.
bet1/4
Sana13.01.2023
Hajmi344,35 Kb.
#899246
TuriЛабораторна робота
  1   2   3   4
Bog'liq
Звіт





ЛАБОРАТОРНА РОБОТА №2
ПАТЕРН ПРОГРАМУВАННЯ "ОДИНАК"
Мета: вивчення патерну програмування «одинак» та його доцільного використання. Порівняння однакового програмного коду з використанням патерну «одинак» та без нього.
Хід роботи:
Завдання. Створити клас Saver, в якому буде реалізоване збереження усіх потрібних робочих матриць з попередньої лабораторної роботи, а також їх читання за визначеним номером. Клас має бути реалізований з дотриманням патерну програмування «Одинак». Методи класу:

  • відкрити або створити вказаний файл для запису\читання матриць;

  • записати матрицю в першу знайдену достатню за розміром вільну частину файлу

  • прочитати матрицю з заданим номером з файлу в пам'ять;

  • замінити записану матрицю у файлі на іншу, якщо розмір нової матриці більший, записати її в кінець файлу;

  • видалити матрицю;

  • видалити з файлу пусті місця (дефрагментація;

  • записати матрицю;

  • очистити файл матриць;

  • та інші методи за бажанням.

Використовуючи клас "Матриця" з попередньої лабораторної роботи:

  • згенерувати 5 матриць розміром 20на 20;

  • записати їх у файл;

  • порахувати їх визначники для кожної;




  • отримані значення визначників записати також в файл до матриць;

  • Перемножити усі п'ять матриць, записуючи в файл результати множення з накопиченям (Матриця1 *Матриця 2 (запис) *Матриця3 (запис).......);

  • Обрахувати обернену матрицю матриці, яка є добутком усіх пяти матриць.

  • Замінити у файлі усі пять початкових матриць на нові розміром 10 на 10;

  • Порахувати добунок пяти нових матриць;

  • матрицю-добуток записти в файл;

  • Дефрагментувати файл;

  • Вивести кількість матриць у файлі (данні з класу Saver).

Одинак ​​(Singleton, Сінглтон) - породжує патерн, який гарантує, що для певного класу буде створений тільки один об'єкт, а також надасть до цього об'єкта точку доступу. Якщо об'єкт не потрібен, то не буде створено. У цьому відмінність Сінглтона від глобальних змінних
Клас Saver був реалізований з дотриманням патерну «Одинак» (який має лише один екземпляр класу, та надає глобальну точку доступу до нього).
Також в заданому класі було створено n-кількість методів.
Нижче метод OpenFile() перевіряє чи існує заданий файл (якщо існує, то закриває його), далі операційна система відкриває файл (якщо той існує), або створює новий.

Бінарна серіалізація і десеріалізація.
Дуже важливий етап цієї лабораторної роботи, тому що завдяки цьому я працював з бінарним файлом.
Серіалізація - це переведення даних у послідовність байтів, а десеріалізація - навпаки. Для бінарної серіалізації і десеріалізації я використовував BinaryFormatter.CS
Трішки нижче наведений код методу, який серіалізує заданий список у файл. В методі ми спочаку відкриваємо потік, в якому будемо зберігати дані, а далі створюємо об’єкт BinaryFormatter і успішно серіалізуємо список.

Якщо вже я розпочав розписувати серіалізацію, то потрібно не забути і про десеріалізацію. Фрагмент коду в моїй програмі:

Принцип роботи аналогічний з розписування трішки вище, але при десеріалізації ми повинні перетворити об’єкт до типу Matrix-(List)bf.Deserialize(sw).
За допомогою методу WriteMatrix ми додаємо обрану матрицю до списку і серіалізуємо (зберігаємо) список у файл.

Далі прочитуємо матрицю з заданим номером з файлу в пам'ять.

Метод Replace замінює записану матрицю у файлі на іншу, якщо розмір нової матриці більший, а якщо ні, то записує її в кінець файлу.



Метод очищення файлу матриць:

Метод DeleteMatrix видаляє матрицю за її номером. Десеріалізований файл ми присвоюємо списку, і видаляємо зі списку матрицю з вказаним номером, а далі серіалізуємо оновлений список у файл.

Результат виконання програми:





Рисунок 1. Виведення матриць №0-1.



Рисунок 2. Виведення матриць №2-3.



Рисунок 3. Виведення матриці №4.



Рисунок 4. Обрахування визначників матриці.



Рисунок 5. Добуток матриць.



Рисунок 5.1. Добуток матриць.



Рисунок 6. Обернена матриця.



Рисунок 7. Заміна матриць.



Рисунок 7.1. Заміна матриць.



Рисунок 8. Добуток пяти матриць.



Рисунок 9. Кількість матриць у файлі.
Висновки: в ході виконання лабораторної роботи був вивчений патерн програмування «одинак» та отримані навички в його доцільному використанні. На мою думку, порівняняно однаковий програмний код з використанням патерну «одинак» та без нього.

Download 344,35 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish