Uploaded by Korya Tch

классы и объекты в языке с++ лр 27

advertisement
Министерство образования Республики Беларусь
Учреждение образования
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Факультет информационных технологий и управления
Кафедра экономической информатики
ОТЧЕТ
по лабораторной работе
«Классы
и объекты в языке С++»
Студент гр. 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;
}
Вывод
В ходе лабораторной работы я изучила структуру класса, атрибуты
доступа к компонентам класса; рассмотрела принцип работы конструкторов (с
параметрами, без параметров, с параметрами по умолчанию, конструктора
копирования), деструкторов при работе с объектом, статические и
константные данные и методы класса.
Download