- •1. Краткие теоретические сведения
- •1.1. Объектно-ориентированный подход-Бузюков
- •1.2. Этапы разработки ооп систем
- •1.3. Декомпозиция
- •1.5. Концепции ооп
- •1.6. Синтаксис объявления класса
- •1.7. Методы класса
- •1.8. Объявление объектов
- •1.9. Конструктор
- •1.10. Деструктор
- •1.11. Инкапсуляция
- •1.12. Полиморфизм
- •1.13. Указатель this
- •1.14. Статические члены класса
- •1.15. Дружественные функции и классы
- •1.16. Вложенные классы
- •1.17. Элементы класса
- •1.17.1. Данные-элементы
- •1.17.2. Элементы-функции
- •1.17.3. Доступ к данным-элементам
- •1.17.4. Вызов функций-элементов
- •1.17.5. Указатели на компоненты-функции.
- •2. Задание
- •2.4.1.2. Пример для варианта 30
- •2.4.1.2.1. Разработка алгоритма решения.
- •2.4.1.2.2. Описание структуры класса.
- •2.4.1.2.2.1. Описание полей класса.
- •2.4.1.2.2.2. Функции-аксессоры.
- •2.4.1.3. Программа
- •2.4.1.4. Тестирование
- •2.4.2. Задание 2. Простейшие классы и объекты
- •2.4.2.1. Условие задания
- •2.4.2.2. Пример
- •2.4.2.3. Программа
- •2.4.2.4. Тестирование
- •2.4.3. Задание 3. Простейший класс. Объединение данных и методов
- •2.4.3.1. Условие задания
- •2.4.3.2. Пример
- •2.4.3.3. Программы
- •2.4.3.3.1. Первый принцип инкапсуляции: объединение данных и методов
- •2.4.3.3.2. Второй принцип инкапсуляции: защита от внешнего вмешательства
- •2.4.3.3.3. Независимость интерфейса от реализации
- •2.4.3.3.4. Конструктор, деструктор
- •2.4.3.3.5. Определение методов вне класса
- •2.4.3.3.6. Конcтантные поля, методы и объекты
- •2.4.3.4. Тестирование
- •2.4.4. Задание 4. Пользовательский класс
- •2.4.4.1. Условие задания
- •2.4.4.2. Методические указания.
- •1. Пример определения класса.
- •2. Пример реализации конструктора с выдачей сообщения.
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Объектно-ориентированный подход-Бузюков 2
2.4.1.3. Программа
Полный текст программы приведен ниже.
//Лабораторная работа № 20
//Классы. Функции доступа.
//Вариант № 30
//Выполнила студ. Петрова А.А.
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include <iomanip.h>
#define N 3
const int LNAME=10;
class church {
char name[LNAME]; // Название
char school; // Школа
unsigned int count; // Количество монахов
float square; // Площадь земли
public:
void set(char *a,char b,unsigned int c, float d);
void get(char *a, char &b, unsigned int &c, float &d);
void show(void);
};
void church::set(char *a,char b,unsigned int c,float d)
{
strcpy(name,a);
//name=a;
school=b;
count=c;
square=d;
}
void church::get( char * a, char &b, unsigned int &c, float &d)
{
delete[]a;
a=new char [strlen(name)+1];
strcpy(a,name);
b=school;
c=count;
d=square;
}
void church::show(void) {
cout<<name<<" ";
cout<<school<<" ";
cout<<count<<" ";
cout<<square<<" ";
}
int main(void)
{
char *n;
char t;
unsigned int s;
float h;
short i;
church obj[N];
cout<<"Работа функции SET!\n";
for (i=0; i<N; i++)
{
cout<<"Название, Школа, Количество монахов, Площадь земли:\n ";
cin>>n;
cin>>t;
cin>>s;
cin>>h;
obj[i].set(n,t,s,h);
}
cout<<"Работа функции SHOW!\n";
cout<<"Название, Школа, Количество монахов, Площадь земли: \n";
for (i=0; i<N; i++)
{
obj[i].show();
cout<<"\n";
}
cout<<"Работа функции GET и SHOW!\n";
cout<<"Название, Школа, Количество монахов, Площадь земли: \n";
for(i=0; i<N; i++)
{
obj[i].get(n,t,s,h);
obj[i].show();
cout<<"\n";
}
cout << "\nНажмите любую клавишу..." ;
getch();
delete[] n;
return 0;
}
2.4.1.4. Тестирование
2.4.2. Задание 2. Простейшие классы и объекты
Разработать классы для описанных ниже объектов. Включить в класс методы set (…), get (…), show (…). Определить другие методы.
2.4.2.1. Условие задания
Таблица 20.4
№ |
Задание |
1 |
Student: Фамилия, Имя, Отчество, Дата рождения, Адрес, Телефон, Факультет, Курс. Создать массив объектов. Вывести: а) список студентов заданного факультета; б) списки студентов для каждого факультета и курса; в) список студентов, родившихся после заданного года. |
2 |
Abiturient: Фамилия, Имя, Отчество, Адрес, Баллы ЕЭЕ. Создать массив объектов. Вывести: а) список абитуриентов, имеющих балл ЕГЭ выше среднего; б) список абитуриентов, сумма баллов ЕГЭ у которых не меньше заданной; в) выбрать N абитуриентов, имеющих самую высокую сумму баллов, и список абитуриентов, имеющих полупроходной балл (ниже среднего). |
3 |
Aeroflot: Пункт назначения, Номер рейса, Тип самолета, Время вылета, Дни недели. Создать массив объектов. Вывести: а) список рейсов для заданного пункта назначения; б) список рейсов для заданного дня недели; в) список рейсов для заданного дня недели, время вылета для ко- торых больше заданного. |
4 |
Book: Автор, Название, Издательство, Год, Количество страниц. Создать массив объектов. Вывести: а) список книг заданного автора; б) список книг, выпущенных заданным издательством; в) список книг, выпущенных после заданного года. |
5 |
Worker: Фамилия и инициалы, Должность, Год поступления на работу, Зарплата. Создать массив объектов. Вывести: а) список работников, стаж работы которых на данном предпри- ятии превышает заданное число лет; б) список работников, зарплата которых больше заданной; в) список работников, занимающих заданную должность. |
6 |
Train: Пункт назначения, Номер поезда, Время отправления, Число общих мест, Купейных, Плацкартных. Создать массив объек- тов. Вывести: а) список поездов, следующих до заданного пункта назначения; б) список поездов, следующих до заданного пункта назначения и отправляющихся после заданного часа; в) список поездов, отправляющихся до заданного пункта назначе- ния и имеющих общие места. |
7 |
Product: Наименование, Производитель, Цена, Срок хранения, Количество. Создать массив объектов. Вывести: а) список товаров для заданного наименования; б) список товаров для заданного наименования, цена которых не превышает указанной; в) список товаров, срок хранения которых больше заданного. |
8 |
Patient: Фамилия, Имя, Отчество, Адрес, Номер медицинской карты, Диагноз. Создать массив объектов. Вывести: а) список пациентов, имеющих данный диагноз; б) список пациентов, номер медицинской карты которых находится в заданном интервале. |
9 |
Bus: Фамилия и инициалы водителя, Номер автобуса, Номер маршрута, Марка, Год начала эксплуатации, Пробег. Создать массив объектов. Вывести: а) список автобусов для заданного номера маршрута; б) список автобусов, которые эксплуатируются больше 10 лет; в) список автобусов, пробег у которых больше 10 000 км. |
10 |
Customer: Фамилия, Имя, Отчество, Адрес, Телефон, Номер кредитной карточки, Номер банковского счета. Создать массив объек- тов. Вывести: а) список покупателей в алфавитном порядке; б) список покупателей, номер кредитной карточки которых нахо- дится в заданном интервале. |
11 |
File: Имя файла, Размер, Дата создания, Количество обраще- ний. Создать массив объектов. Вывести: а) список файлов, упорядоченный в алфавитном порядке; б) список файлов, размер которых превышает заданный; в) список файлов, число обращений к которым превышает задан- ное. |
12 |
Word: Слово, Номера страниц, на которых слово встречается (от 1 до 10), Число страниц. Создать массив объектов. Вывести: а) слова, которые встречаются более чем на N страницах; б) слова в алфавитном порядке; в) для заданного слова номера страниц, на которых оно встреча- ется. |
13 |
House: Адрес, Этаж, Количество комнат, Площадь. Создать массив объектов. Вывести: а) список квартир, имеющих заданное число комнат; б) список квартир, имеющих заданное число комнат и расположен- ных на этаже, который находится в определенном промежутке; в) список квартир, имеющих площадь, превосходящую заданную. |
14 |
Phone: Фамилия, Имя, Отчество, Адрес, Номер, Время внутри- городских разговоров, Время междугородних разговоров. Создать массив объектов. Вывести: а) сведения об абонентах, время внутригородских разговоров кото- рых превышает заданное; б) сведения об абонентах, воспользовавшихся междугородней свя- зью; в) сведения об абонентах, выведенные в алфавитном порядке. |
15 |
Person: Фамилия, Имя, Отчество, Адрес, Пол, Образование, Год рождения. Создать массив объектов. Вывести: а) список граждан, возраст которых превышает заданный; б) список граждан с высшим образованием; в) список граждан мужского пола. |
16 |
Car: Марка, Серийный номер, Регистрационный номер, Год выпуска. Создать массив объектов. Вывести: а) список автомобилей, возраст которых превышает заданный (старые автомобили); б) список всех автомобилей определенной марки; в) список автомобилей конкретного года выпуска. |
17 |
Worker Структура "Сотрудник" имеет поля: фамилия, имя, отчество; должность; год рождения; заработная плата. Создать массив объектов. Вывести: Вывести все сведения о сотрудниках, имеющих заработную плату выше средней. |
18 |
State: Структура "Государство" имеет поля: название; столица; численность населения; занимаемая площадь. Создать массив объектов. Вывести: Вывести все сведения о государствах, в столицах которых проживает более 5 млн жителей. |
19 |
Man: Структура "Человек" имеет поля: фамилия, имя, отчество; домашний адрес; номер телефона; возраст. Создать массив объектов. Вывести: Вывести все сведения о людях, имеющих возраст больше заданного. |
20 |
Man: Структура "Человек" имеет поля: фамилия, имя, отчество; год рождения; рост; вес. Создать массив объектов. Вывести: Вывести все сведения о людях, имеющих рост выше среднего. |
21 |
Pupil: Структура "Школьник" имеет поля: фамилия, имя, отчество; класс; номер телефона; оценки по предметам (математика, физика, русский язык, литература). Создать массив объектов. Вывести: Вывести все сведения о школьниках, имеющих 2 хотя бы по одному предмету. |
22 |
Student: Структура "Студент" имеет поля: фамилия, имя, отчество; домашний адрес; группа; оценки по 5 предмета сессии. Создать массив объектов. Вывести: Вывести все сведения о студентах имеющих 2 хотя бы по одному предмету. |
23 |
Buyer: Структура "Покупатель" имеет поля: фамилия, имя, отчество; домашний адрес; номер телефона; номер кредитной карточки. Создать массив объектов. Вывести: Вывести все сведения об покупателе с заданной фамилией. |
24 |
Patient: Структура "Пациент" имеет поля: фамилия, имя, отчество; домашний адрес; номер медицинской карты; номер страхового полиса, дата рождения. Создать массив объектов. Вывести: Вывести все сведения о пациентах, имеющих дату выше заданной. |
25 |
Information: Структура "Информация" имеет поля: носитель; объем; название; автор. Создать массив объектов. Вывести: Вывести все сведения о произведениях конкретного автора. |
26 |
Disk: Структура "DVD-диск" имеет поля: название фильма; режиссер; продолжительность; цена. Создать массив объектов. Вывести: Вывести все сведения о дисках, имеющих цену ниже средней. |
27 |
Disk: Структура "DVD- диск" имеет поля: название; режиссер; продолжительность; цена. Создать массив объектов. Вывести: Вывести все сведения о фильмах конкретного режиссера. |
28 |
Team: Структура "Спортивная команда" имеет поля: название; город; количество игроков; количество набранных очков. Создать массив объектов. Вывести: Вывести все сведения о лидирющих (трех) командах |
29 |
Stadium: Структура "Стадион" имеет поля: название; адрес; вместимо сть;год постройки; виды спорта. Создать массив объектов. Вывести: Вывести все сведения о стадионах, имеющих дату постройки ниже заданной (старые стадионы). |
30 |
Car: Структура "Автомобиль" имеет поля: марка; год выпуска; мощность двигателя; цена; цвет. Создать массив объектов. Вывести: Вывести все сведения об автомобилях, имеющих цену выше средней. |