русс | укр

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

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

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

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


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

Имя_объекта.имя_элемента


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


Если объявляют указатель на объект, то доступ к элементам осуществляется спомощью операции “стрелка”:

имя_объекта -> имя_элемента

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

Пример 1: Класс, описывающий окружность.

#include <iostream>

#include <conio.h>

#include <windows.h>

using namespace std;

 

class Circle

{

//Закрытые элементы данных:

float x,y,r;

//Открытые функции (методы):

public:

//Фукции, обеспечивающие доступ к элементам данных:

void Set_x(float xx) {x=xx;}

void Set_y(float yy) {y=yy;}

void Set_r(float rr) {r=rr;}

float Get_x() {return x;}

float Get_y() {return y;}

float Get_r() {return r;}

//Функции ввода-вывода:

void input();

void output();

};

 

// Определение функций:

void Circle::input()

{

cout << "Задайте x: " << endl;

cin >> x;

cout << "Задайте y: " << endl;

cin >> y;

do

{

cout << "Задайте r > 0: " << endl;

cin >> r;

} while( r < 0 );

}

void Circle::output()

{

cout << "Значение x: " << x << endl;

cout << "Значение y: " << y << endl;

cout << "Значение r: " << r << endl;

}

 

// Пример объектно-ориентированного программирования:

int main()

{

//Настройки шрифтов и региональных стандартов:

if(SetConsoleCP(1251)==0)

//проверка правильности установки кодировки символов для ввода

{

cerr<<"Fialed to set codepage!"<<endl;

/* если не удалось установить кодовую страницу, вывод сообщения об ошибке*/

}

if(SetConsoleOutputCP(1251)==0)//тоже самое для вывода



{

cerr<<"Failed to set OUTPUT page!"<<endl;

}

Circle a;

a.input();

a.output();

float xx, yy, rr;

cout << "Задайте новое значение x: " << endl;

cin >> xx;

cout << "Задайте новое значение y: " << endl;

cin >> yy;

cout << "Задайте новое значение r: " << endl;

cin >> rr;

a.Set_x(xx);

a.Set_y(yy);

a.Set_r(rr);

cout << "Значение x = " << a.Get_x() << endl;

cout << "Значение y = " << a.Get_y() << endl;

cout << "Значение r = " << a.Get_r() << endl;

a.output();

_getch();

return 0;

}

Пример 2: Класс, описывающий точку.

#include <iostream>

#include <conio.h>

#include <windows.h>

#define _USE_MATH_DEFINES

#include <math.h>

using namespace std;

 

class CPoint

{

double x, y; //Закрытые элементы данных

public:

// Функции, обеспечивающие доступ:

double GetX(){return x;}

double GetY(){return y;}

void SetX(double _x){x = _x;}

void SetY(double _y){y = _y;}

// Функции ввода-вывода:

void Input();

void Output();

 

/* Функция, вычисляющая длину отрезка между двумя точками:

первой точкой будет та, к которой применяется эта функция, а второй – та, которая передается как параметр функции (точка p). Обратите внимание, как происходит обращение к координатам той и другой точки. */

double Len(CPoint p)

{

return sqrt(pow(x-p.x, 2)+pow(y-p.y, 2));

};

}; // Описание класса закончено

 

/* Объявление функции, вычисляющей периметр треугольника:
координаты вершин будут храниться в массиве, указатель на который передается как параметр функции. */

double Perimeter(CPoint*);

 

// Пример главной программы:

int main()

{

//Настройки шрифтов и региональных стандартов:

if(SetConsoleCP(1251)==0)

//проверка правильности установки кодировки символов для ввода

{

cerr<<"Fialed to set codepage!"<<endl;

/* если не удалось установить кодовую страницу, вывод сообщения об ошибке */

}

if(SetConsoleOutputCP(1251)==0)//тоже самое для вывода



{

cerr<<"Failed to set OUTPUT page!"<<endl;

}

CPoint p[3]; // массив точек

// Считываем координаты вершин треугольника:

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

{

p[i].Input();

}

cout << "Периметр треугольника = " << Perimeter(p) << endl;

//Сдвигаем первую точку на 1 по X и на 2 по Y:

p[0].SetX(p[0].GetX()+1);

p[0].SetY(p[0].GetY()+2);

cout << "Периметр нового треугольника = " << Perimeter(p) << endl;

_getch();

return 0;

}

// Определение функций:

 

// Определение функции, вычисляющей периметр треугольника:

double Perimeter(CPoint* p)

// Эта функция не является членом класса

{

int len = 0;

// Складываем длины сторон треугольника:

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

{

/* Обратите внимание на то, как обеспечивается то, что номер точки должен быть от 0 до 2: */

len+=p[i].Len(p[(i+1) % 3]);

}

return len;

}

 

// Функция для ввода данных:

void CPoint::Input()

{

static int i=1; /* Статическая переменная, которая позволит нам нумеровать считываемые точки */

cout<<"Задайте координаты "<< i++ << " точки ";

cin >> x >> y;

}

 

// Функция для вывода данных:

void CPoint::Output()

{

static int i=1;

cout << "Координаты " << i << " точки: " <<

x << y << endl;

}

Пример 3: Класс, описывающий двумерный массив.

#include <iostream>

#include <conio.h>

#include <windows.h>

#include <iomanip>

using namespace std;

 

class DArray

{

int** a; //Указатель для создания двумерного массива

int x,y; // размеры массива

public:

// Функции доступа:

void Set_array(int**,int,int);

int** Get_array();

// Функции ввода-вывода:

void input();

void output();

};

 

// Определение функций:

 

/*Функция, которая размещает в памяти массив a и заполняет его данными из массива aa, передаваемого функции как параметр*/

void DArray::Set_array(int** aa, int xx, int yy)

{

x=xx; y=yy; //Копируем размеры массива aa

//Создаем в памяти структуру, которая работает как таблица:

a = new int* [x]; //Создаем массив указателей на строки

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

a[i]=new int [y]; //выделяем место под строки таблицы

//Заполняем массив данными, копируя элементы из массива aa:

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

for (int j=0; j<y; j++)

a[i][j]=aa[i][j];

}

 

// Функция, которая возвращает указатель на массив:

int** DArray::Get_array()

{

return a;

}

 

// Функция для ввода массива с клавиатуры:

void DArray::input()

{

cout << "Задайте количество строк матрицы ";

cin >> x;

cout << "Задайте количество столбцов матрицы ";

cin >> y;

//Размещение массива в памяти:

a = new int* [x];

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

a[i]=new int [y];

// Ввод элементов массива:

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

{

for (int j=0; j<y; j++)

{

cout << "Задайте элемент " << i << "-й строки и " << j <<"-го столбца:";

cin >> a[i][j];

}

cout << endl;

}

}

 

// Функция для вывода массива на экран:

void DArray::output()

{

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

{

for (int j=0; j<y; j++)

{

cout << setw(4) << a[i][j];

}

cout << endl;

}

}

 

//Пример программы, использующей класс DArray:

int main()

{

//Настройки шрифтов и региональных стандартов:

if(SetConsoleCP(1251)==0)

cerr<<"Fialed to set codepage!"<<endl;

if(SetConsoleOutputCP(1251)==0

cerr<<"Failed to set OUTPUT page!"<<endl;

DArray A,B; // Объявление объектов

int** c; //Указатель на массив-источник

/* Создание массива с[2][2], элементы которого равны сумме номера строки и номера столбца */

c = new int* [2];

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

c[i]=new int [2];

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

for (int j=0; j<2; j++)

c[i][j]=i+j;

B.Set_array(c,2,2); /*Определяем объект B, копируя элементы из массива-источника */

B.output(); // Вывод массива B на экран

A.input(); // Ввод массива A c клавиатуры

A.output();// Вывод массива А на экран

_getch();

return 0;

}



<== предыдущая лекция | следующая лекция ==>
Основные понятия | Задания для самостоятельного выполнения


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


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

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

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


 


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

 
 

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

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