русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Создание классов


Дата добавления: 2015-07-09; просмотров: 823; Нарушение авторских прав


Класс «человек» должен содержать информацию об имени и фамилии (текст), адрес (текст), возраст (целое число). Класс будет выглядеть:

class Man{

public:

char Name[8];

char Address[10];

int Age;

};

 

 

Класс «клиент» должен обладать информацией о коде клиента в архиве страховой фирмы (предположим, что это постое целое число). Основную информацию наследуем от класса Man:

class Client : public Man{

public:

int ClientCode;

};

Класс «страховая фирма» должен обладать информацией о названии фирмы (текст), юридический адрес (текст), номер лицензии (целое число). Тогда:

class Firm{

public:

char FirmName[8];

char FirmAddress[10];

int LicNumber;

};

Класс «страховой полис» помимо информации о человеке и страховой фирме, наследуемой от классов Man и Firm, должен обладать информацией о сумме страховки (предположим целое число), о страховом агенте, выдавшем данный страховой полис (текст). Тогда:

class Document : public Client, public Firm{

public:

int Summa;

char Agent[8];

}

 

Определим теперь какие методы будут иметь используемые классы. Классы Man, Client и Firm введены как образующие информационную структуру класса Document, поэтому нет необходимости для введения в них каких-либо методов. В классе Document вводим два метода InputDocument и PrintLineFromTable, соответственно для поэлементного ввода и построчного формирования выводимой таблицы. Для управления массивом объектов класса Document вводится класс ListDocument. В нем создается массив Records, содержащие объекты класса Document. Количество определенных объектов (с которыми можно работать) находится в переменной countRecord.

 

Класс ListDocument содержит следующие методы:

· LoadFromFile – считывает сохраненные ранее данные;



· PrintTable – распечатывает на экране таблицу;

· AddDocument – добавляет в массив новый страховой полис;

· EditDocument – редактирует в массиве выбранный страховой полис;

· DeleteDocument - удаляет из массива выбранный страховой полис;

· SavetoFile – сохраняет данные для последующего использовоания.

Метод LoadFromFile вызывается из конструктора, а метод SavetoFile из деструктора, поэтому происходит запоминание результатов предыдущей работы.

Меню должно быть реализовано в теле основной программы.

 

 

Следующая программа иллюстрирует один из способов формирования массива объектов и работу с файлами на диске.

В качестве базового класса объявлен класс В с элементом-данным строкового типа «ФИО». Производный класс D добавляет к сотрудникам числовое поле «Надбавка к окладам» и переопределяет виртуальный метод печати базового класса.

 

#include <iostream.h> // пример записи/считывания массива с объектами

#include <stdio.h> // поржденными классом в файл (используем наследование)

#include <conio.h>

#include <string.h>

#include <stdlib.h>

#include <iomanip.h>

class B // Базовый класс

{

public:

char name[50]; // ФИО

 

B(){}; //конструктор без параметров, необходим при иерархии классов

B(char *t) //конструктор с параметрами

{

strcpy(name,t);

}

};

 

class D: public B // производный класс

{

public:

 

int y; // надбавка в процентах

 

D() //конструктор без параметров, необходим при иерархии классов

{};

 

D(int r, char* s ): B(s) //конструктор с параметрами

 

{ y=r;

cout<<"Отработал конструктор с пароаметрами!!! Press any key..."<<endl;

}

void print(void) // метод печати

{

cout <<"name="<<name<<" надбавка="<<y<< endl;

}

};

 

class List

{

public:

D s[5]; // создали массив для объектов такого типа

void createFile();

void printList();

};

 

 

void List::createFile()

{

int n; // объявили переменную для реального размера списка

char fname[10]; // строка для ввода имени файла

FILE *f; // объявляем указатель на файл

 

cout<<"\n Формирование файла!!! Введи имя файла";

cin>>fname;

f=fopen(fname,"w");

 

if(f==NULL) // блок контроля за открытием файла

{

cout<<"нельзя открыть файл!, "<<endl;

getch();

return;

}

/************************************/

//Формирование списка

cout<<endl<<"введите размер списка: ";

cin>>n;

cout<<"\n";

for (int i=0;i<n;i++)

{

cout<<"\n введите имя:"<<endl;

fflush(stdin);

cin>>s[i].name;

cout<<"\n надбавка: ";

cin>>s[i].y;

fwrite(&s[i],sizeof(s[i]),1,f);

};

cout<<"\n ФАЙЛ СФОРМИРОВАН записано"<< n <<" компонент. Press any key...";

fclose(f);

getch();

}

//=======================================================================

void List::printList()

{

//блок просмотра существующего списка

char fname[10]; // строка для ввода имени файла

FILE *f;

cout<<"\n\n Просмотр!!! Введи имя файла:";

 

cin>>fname;

f=fopen(fname,"r");

cout<<"\n СОСТАВ: \n\n";// перекачка строк таблицы из файла

// в массив

// Формирование таблицы

cout<<"\n +++++++++++++++++++++++++++++++++++++++++++";

cout<<"\n Name "<<setw(15)<<"Надбавка";

cout<<"\n++++++++++++++++++++++++++++++++++++++++++++";

int i=0; fread(&s[i],sizeof(s[i]),1,f);

while (!feof(f)) // пока не достигнут конец файла

{ // считываем строку из файла и печатаем

// печать текущей строки таблицы

cout<<endl;

cout<<setw(15)<<setiosflags(ios::left)<< s[i].name<<setw(15)<< s[i].y;

i++; fread(&s[i],sizeof(s[i]),1,f);

}

cout<<"\n прочитано "<<i<<" компонент";

fclose(f);

getch();

 

}

 

//=======================================================================

void main(void)

{

// блок контроля правильности работы

D d(15,"Иванов"); // создали один объект

d.print(); // посмотрели результаты его работы

getch();

//=======================================================================

 

 

int prz;

List r;

while (1) {

cout<<"\n input prz (1 - Create file; 2 - print file; 3 -Exit):";

scanf("%d",&prz);

switch (prz)

{

case 1: r.createFile(); break;

case 2: r.printList(); break;

case 3: exit(1); break;

}

}

getch();

}

//=======================================================================


 

Литература по C K&R, ANSI и C++

Основная:

1. Касаткин А.И., Вальвачев А.Н. Профессиональное программирование на языке Си. От Turbo C к Borland C++: Справочное пособие. Мн.: Выш. школа, 1992, 320с.

2. Касаткин А.И. Профессиональное программирование на языке Си. Управление ресурсами: Справочное пособие. Мн.: Выш. школа, 1992, 432с.

3. Касаткин А.И. Профессиональное программирование на языке Си. Системное программирование. Мн.: Выш. школа, 1992, 432с.

4.Цимбал А.А., Майоров А.Г., Козодаев М.А. Turbo C++: язык и его применение. ‑М.: "‑жен Ай Лтд.", 1993.

5. Страуструп Б. Язык программирования С++.я‑М.:Радио и связь, 1991.

6. Вайнер Р., Пинсон Л. С++ изнутри. ‑Киев: ‑Софт, 1993.

7. Бабэ Б. Просто и ясно о Borland C++. ‑М.: Бином, 1995.

8. Скляров В.А. Язык С++ и объектно-ориентированное программирование. Минск, Вышэйшая школа, 1997

9. Герберт Шилдт Программирование на Borland C++. –Мн., ПОПУРРИ, 1998.

9.Джефф Элджер «С++» Бибилиотека программиста, Ст. петербург, «ПИТЕР», 2000.

10. Крячков А.В. и др. Программирование на С и С++ (практикум). М.: Горячая линия-Телеком, 2000

11. Карпов Б. Баранова Т. С++ - специальный справочник. ПИТЕР, 2001

12. Павловская Т.А., Щупак Ю.А. С++ Объектно-ориентированное программирование. ПИТЕР, 2004

13. Динман М. С++. Освой на примерах. Санкт-Петербург «БХВ Петербург», 2006.

14. Либерти Д. Джонс Б. Освой самостоятельно С== за 21 день. М. «Вильямс», 2006.

15. Шилдт Г. Справочник программиста. М. «Вильямс», 2006.

 

 

Методические пособия

1. Бусько В.Л., Корбит А.Г., Коренская И.Н., Кривоносова Т.М., Убийконь В.И. Лабораторный практикум Основы программирования на алгоритмическом языке С. Мн.:Ротапринт БГУИР.2003

2. Бусько В.Л., Корбит А.Г., Кривоносова Т.М. Основы алгоритмизации программирования. Конспект лекций для студентов всех специальностей и форм обучения БГУИР. Мн. БГУИР, 2004

3. Корбит А.Г., Кривоносова Т.М. Лабораторный практикум по программированию. Основы объектно-ориентированного программирования. Мн.: БГУИР, ИИТ (электронный вариант) 2004.

 



<== предыдущая лекция | следующая лекция ==>
Создания структуры наследования классов | Домашнє завдання


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.857 сек.