Типовые функции при обработке объектов
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Обычно при обработке объектов требуется три типа функций:

- ввод данных в объект;

- вывод данных объекта;

- функции обработки.

Ввод данных в объект

Ввод данных в объект может быть реализован 2-мя способами.

Ый способ

Используется член-функция ввода, которая передает в объект данные из внешней вызывающей функции через фактические параметры.

Пример 1

#include<stdio.h>

#include<string.h>

#include<conio.h>

class q1

{ int a,b;// закрытые по умолчанию члены-данные

int mas1[10];

char mas2[12];

public:

void vvod(int x1,int x2,int* x3,char * x4) /* открытая член- функция ввода*/

{ a=x1; b=x2;

for(int i=0;i<10;i++)// запись в массив объекта mas1//

  mas1[i]=x3[i];

  strcpy(mas2,x4);// запись в массив объекта mas2

}

}; // конец определения класса q1

int main()

 { int a=3, b=5;/* инициализация a,b*/

int y1[10]={0,1,3,44,7,8,9,1,43,5}; /* инициализация массива y1*/

char y2[12]="ffffffff";/* инициализация массива y2*/

q1 obj1; // определение объекта obj1

clrscr();

obj1.vvod(a,b,y1,y2); /* ввод данных в объект obj1 массивов y1 и y2*/

return 0;

}

Комментарии

В данном примере в функции ввода определены два формальных параметра целого типа и два указателя на массивы целого типа и символьного типа. В функции ввода производится присвоение значения этих параметров членам данных; при этом для строки (символьного массива) используется функция копирования, а не цикл поэлементного присвоения.

Ой способ

В этом случае ввод производится непосредственно в теле члене-функции ввода.

Замечание

В приведенных примерах используются средства переопределенного ввода-вывода языка Си++ (смотри комментарии в программах и раздел 1.5). Для использования этих средств должен быть подключен с помощью оператора include файл iostream.

Пример

#include<iostream.h>

#include <conio.h>

class q1

{ int a,b;/*закрытые члены-данные*/

int mas1[10];

char mas2[12];

public:

void vvod() /* член-функция ввода членов-данных*/

{for (int i=0;i<10;i++)

{ cout<<"введите текущий элемент -целое число \n ";

       cin>>mas1[i]; /* ввод данных через стандартный объект cout*/

}

cout<<"введите строку"<<endl;

cin>>mas2;

}//* конец функции ввода

}; /* конец описания класса q1*/

int main()

{clrscr();

 q1 obj1;

 obj1.vvod(); /* вызов открытой член –функции ввода данных в объект   obj1*/

return 0;

}

Комментарий

В данном случае используется член-функция ввода, которая не имеет параметров; ввод членов-данных вводится непосредственно в теле функции.

 

Вывод данных объекта

Вывод данных объекта также может быть реализован двумя способами.

 

Ый способ

Используется член-функция, которая не имеет параметров и которая печатает значения членов-данных с использованием библиотечных функций непосредственно в теле функции.

Пример

Один из приведенных выше примеров дополнен функцией вывода.

#include<stdio.h>

#include<string.h>

#include<conio.h>

class q1

{ int a,b;// закрытые члены-данные

int mas1[10]; // массив целых чисел

char mas2[12];// массив символов

public:

void vvod(int x1,int x2,int* x3,char * x4) // член-функция ввода

{ a=x1; b=x2;

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

     mas1[i]=x3[i];

  strcpy(mas2,x4);

}

void vivod()         // член-функция вывода без параметров

{ printf("dannie obekta \n");

printf("a=%d b=%d \n",a,b);

for (int i=0;i<10;i++)// печать массива mas1

printf("mas1[%d]=%d \n",i,mas1[i]);

printf ("massiv mas2 %s",mas2); //печать массива mas2

}

 }; // конец определения класса

int main()

 { int a=3, b=5;

int y1[10]={0,1,3,44,7,8,9,1,43,5};

char y2[12]="ffffffff";

q1 obj1; // определение объекта obj1

clrscr();

obj1.vvod(a,b,y1,y2); // ввод данных в объект

obj1.vivod();// // вывод данных объекта

return 0;

}

Ой способ

В этом способе можно распечатать члены-данные функции в вызывающей программе; это означает, что функция вывода должна передать в вызывающую программу значения членов-данных через параметры функции. Следовательно, при вызове функции вывода должны быть заданы адреса данных вызывающей программы, в которые в теле функции записываются значения членов-данных.

Пример

#include<iostream.h>

#include<string.h>

#include <conio.h>

class q1

{;/*закрытые члены-данные*/

int mas1[10];

char mas2[12];

public:

void vvod() /* функция ввода*/

{for (int i=0;i<10;i++)

{ cout<<"введите текущий элемент -целое число \n ";

  cin>>mas1[i];

}

  cout<<"введите строку"<<endl;

cin>>mas2;

}

void vivod(int *x1, char *x2) /*функция вывода членов-данных в данные главной программы*/

{for (int i=0;i<10;i++)

x1[i]=mas1[i];

strcpy(x2,mas2);

} /*конец функции вывода*/

 

}; /* конец описания класса*/

int main()

{clrscr();

 int a[10]; /* память для записи членов-данных из объекта*/

 char stroka[12]; /* память для записи членов-данных из объекта*/

 q1 obj1;

 obj1.vvod(); /*ввод данных в объект*/

 obj1.vivod(a,stroka); /* вывод данных из объекта в главную функцию*/

 for(int i=0;i<10;i++) /* вывод данных из объекта в главной функции*/

cout<<"a["<<i<<"]= "<<a[i]<<endl;

cout<<"строка "<<stroka<<endl;

 return 0;

}

Комментарий

В данном примере члены –данные объекта записываются член-функцией вывода в память , которая выделена в функции main. Эта память задается фактическими параметрами a,stroka. При этом надо помнить, что в этом случае необходимо передавать значения адресов переменных. Непосредственная выдача на печать производится в главной функции.

 

Функции обработки

Функции обработки реализует алгоритм обработки в соответствии с поставленной задачей, и, естественно, здесь не может быть дано каких-либо стандартных рекомендаций. Но тем не менее следует сделать следующие замечания.

-      необходимо использовать, в основном, только закрытые члены-данные;

- необходимо использовать закрытые член-функции, которые могут использоваться открытыми член-функциями;

- если результат обработки представлен одним значением, то следует использовать член-функцию, которая возвращает значения результата и передает его в основную программу;

- в общем случае не следует записывать значения результатов обработки в качестве членов- данных объекта; это нерационально увеличивает объем памяти, выделяемой объекту;

- если в качестве членов-данных используются массивы с переменной длиной, то необходимо вводить член-данное, который представляет величину n. Эта величина должна представлять действительный размер массива и должна формироваться при вводе данных.

 

Дата: 2019-03-05, просмотров: 218.