Министерство образования Республики Беларусь Учреждение образования БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ Факультет информационных технологий и управления Кафедра экономической информатики ОТЧЕТ по лабораторной работе «Классы и объекты в языке С++» Студент гр. 124404 Проверила К.Е. ЧЕЧЕБА Ю. Ю. ПЕТРОВИЧ Минск 2022 Цель работы: изучить структуру класса, атрибуты доступа к компонентам класса; рассмотреть принцип работы конструкторов (с параметрами, без параметров, с параметрами по умолчанию, конструктора копирования), деструкторов при работе с объектом, статические и константные данные и методы класса. 27. Создать класс Blog (блог). В классе должны быть следующие поля: название блога, дата создания, автор, тематическая направленность. Включить в состав класса необходимый минимум методов, обеспечивающий полноценное функционирование объектов указанного класса: конструкторы по умолчанию, с параметрами, копирования, деструктор. В класс добавить необходимый набор полей и методов (минимум два поля и два метода) на свое усмотрение. Создать массив блогов, заполнить его данными. Создать функции поиска в массиве всех блогов конкретной тематической направленности и конкретного автора. Данные поиска считываются с клавиатуры. Предусмотреть метод для записи полученных данных в файл. Листинг #include "stdafx.h" #include <string> #include <iostream> #include <fstream> using namespace std; class Blog { private: string name, author, theme; int date; public: Blog() { } Blog(string blogger_name, int blogger_date, string blogger_author, string blogger_theme) { name = blogger_name; date = blogger_date; author = blogger_author; theme = blogger_theme; get(); cout << endl; } Blog(const Blog& blogger) { name = blogger.name; date = blogger.date; author = blogger.author; theme = blogger.theme; } void message() { cout << "Class is working!" << endl; } void set(string blogger_name, int blogger_date, string blogger_author, string blogger_theme) { name = blogger_name; date = blogger_date; author = blogger_author; theme = blogger_theme; } void get() { cout << "Name of this blog is - " << name << ", date of creation is - " << date << ", Author is - " << author << ", Theme is - " << theme << endl; } string get(int a) { return "Name of this blog is - " + name + ", date of creation is - " + to_string(date) + ", Author is - " + author + ", Theme is - " + theme; } string get_author() { return author; } string get_theme() { return theme; } ~Blog() { } }; void authorsearch(string buff, Blog *Bloggers) { cout << "Enter name of author: "; cin >> buff; cout << endl; for (int i = 0; i < 3; i++) { if (Bloggers[i].get_author().compare(buff) == 0) { Bloggers[i].get(); } } } void themesearch(string buff, Blog *Bloggers) { cout << "Enter name of theme: "; cin >> buff; cout << endl; for (int i = 0; i < 3; i++) { if (Bloggers[i].get_theme().compare(buff) == 0) { Bloggers[i].get(); } } } int main(int argc, const char * argv[]) { int choice; string buff; Blog Bloggers[3]; Bloggers[0].set("MarcRebillet", 2015, "Marc", "Music"); Bloggers[1].set("Cooker", 2011, "Robert", "Cooking"); Bloggers[2].set("EeOneGuy", 2009, "Ivan", "Games"); ofstream out; // поток для записи out.open("D:\\bloggers.txt"); // окрываем файл для записи if (out.is_open()) { for (int i = 0; i < 3; i++) { out << Bloggers[i].get(1) << endl; } } cout << "What you want to find?" << endl; cout << "1. Author" << endl; cout << "2. Theme" << endl; cin >> choice; if (choice == 1) { authorsearch(buff, Bloggers); } if (choice == 2) { themesearch(buff, Bloggers); } return 0; } Вывод В ходе лабораторной работы я изучила структуру класса, атрибуты доступа к компонентам класса; рассмотрела принцип работы конструкторов (с параметрами, без параметров, с параметрами по умолчанию, конструктора копирования), деструкторов при работе с объектом, статические и константные данные и методы класса.