Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в программирование на языке C.doc
Скачиваний:
17
Добавлен:
13.05.2015
Размер:
532.99 Кб
Скачать

Введение в классы

Одним из наиболее важных понятий С++ является класс. Класс - это механизм для создания новых типов.

Синтаксис описания класса похож на синтаксис описания структуры.

class Имя_класса

{

закрытые элементы - члены класса

public:

открытые элементы - члены класса

};

На что здесь следует обратить внимание?

Имя_классас этого момента становится новым именем типа данных, которое используется для объявления объектов класса.

Члены класса- это переменные состояния и методы этого класса, иными словами членами класса могут быть как переменные, так и функции. Функции и переменные, объявленные внутри объявления класса, становятся членами этого класса. Функции-члены класса будем называть методами этого класса.

По умолчанию, все функции и переменные, объявленные в классе, становятся закрытыми (private). Т.е. они доступны только из других членов этого класса. Для объявления открытых членов класса используется ключевое словоpublic. Все функции-методы и переменные, объявленные после словаpublic, доступны и для других членов класса, и для любой другой части программы, в которой содержится класс.

Пример.

class _3d

{

double x, y, z;

public:

  double mod ();

  double projection (_3d r);

};

В С++ для создания объектов традиционно принято использовать ключевое слово class.

Хотя функции mod() и projection(_3d r) объявлены в _3d, они еще не определены. Для определения метода - члена класса нужно связать имя класса, частью которого является метод, с именем класса. Это достигается путем написания имени функции вслед за именем класса с двумя двоеточиями. Два двоеточия называют операцией расширения области видимости.

double _3d::mod ()

{

return sqrt (x*x + y*y +z*z);

}

double _3d::projection (_3d r)

{

return (x*r.x + y*r.y + z*r.z) / mod();

}

...

main()

{

_3d a, b;

double dPro, dMod;  

dMod = a.mod(); 

dPro = b.projection(a);

}

Пример 1.Реализовать класс для работы с линейным массивом, обеспечить:

  • создание заполнением случайным образом или вводом с клавиатуры;

  • сортировка выбором;

  • вывод;

  • поиск минимального и максимального элементов.

Просмотреть листинг решения

// программа ==Пример 1==

#include <iostream.h>

#include <stdlib.h>

#include <time.h>

class Massiv

{

int *a, n;

public:

void Sozd();

void Del();

void Vvod();

void Vvod_Sl();

void Print();

int Min(int ind); // ind - с какого элемента начинать искать минимальный

int Max(int ind);

void Sort_Viborom();

};

void main()

{

Massiv a; randomize();

a.Vvod_Sl();

a.Print();

a.Sort_Viborom();

a.Print();

a.Del();

}

void Massiv :: Sozd()

{

cout << "Количество элементов массива? "; cin >> n;

a = (int *) malloc (sizeof(int) * n);

}

void Massiv :: Del()

{

free(a);

}

void Massiv :: Vvod()

{

Sozd();

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

{

cout << i << "-й элемент? ";

cin >> *(a+i);

}

}

void Massiv :: Vvod_Sl()

{

Sozd();

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

{

*(a+i)= -200+random(1001);

}

}

void Massiv :: Print()

{

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

{

cout << *(a+i) << " ";

}

cout << endl;

}

int Massiv :: Min(int ind)

{

for (int i=ind+1; i < n; i++)

if (a[i]<a[ind])

ind = i;

return ind;

}

int Massiv :: Max(int ind)

{

for (int i=ind+1; i < n; i++)

if (a[i]>a[ind])

ind = i;

return ind;

}

void Massiv :: Sort_Viborom()

{

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

{

int m = Min(i);

int Vsp=a[i];

a[i]=a[m];

a[m]=Vsp;

}

}