русс | укр

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

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

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

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


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

Базовые классы. Классы и члены в Си. Получение доступа к членам класса. Ограничение доступа к членам класса. Определение методов класса. Конструкторы и деструкторы в С++. Вложенные классы. Структуры

Классы

Новый тип создаётся путём объявления классов. Класс — это просто коллекция переменных, скомбинированная с набором связанных функций. Это совмещение данных и операций над ними  в один объект называется инкапсуляция. Данные в классе называют переменными-членами или данными-членами. Функции класса часто выполняют операции над переменными-членами класса и называются функциями-членами или методами класса. Функции члены принадлежат классу так же, как и данные-члены, и определяют функциональные возможности класса.

Для объявления класса используется ключевое слово class. Пример:

 

Class Cat
{
unsigned int Age;
unsigned int Weight;
void Meow();
};

Объявление класса не резервирует память под данные, здесь только сообщается: о существование класса с таким именем и сколько памяти требуется для каждого объекта этого класса (память выделяется под данные-члены, под методы память не выделяется.

Определение объектов происходит так:

Cat Vaska;

Доступ к членам класса

Существует оператор прямого доступа (.)

Vaska.Weight =5;
Vaska.Meow();

Рекомендации:

  1. используйте ключевое слово class для объявления класса.
  2. используйте оператор прямого доступа к членам класса и его методам.
  3. не путайте объявление с определением.
  4. не путайте класс с объектом.
  5. не присваивайте значения классу.

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

Определение доступности и скрытости для членов класса иммет принципиальное значение.

Class Cat
{
unsigned int Age;
unsigned int Weight;
void Meow();
};

а затем в main()

cat Vaska;
Vaska.Age=5;

Вызовет ошибку компиляции, так как все члены класса Сat закрыты, а присвоение идёт во внешней к классу функции.
Поэтому необходимо сделать:

 

Class Cat
{public:
unsigned int Age;
unsigned int Weight;
void Meow();
};

 

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

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

#include<iostream.h>
#include <alloc.h>
#include <math.h>
#include <stdlib.h>
class Mass
{
int *Arrey;
int n;
public:
int getSize();
void putSize(int ss);
void getArrey(int ras);
int putArrey();
void del();
};
void Mass::getArrey(int ras)
{ int i;
randomize();
Arrey = new int[n];
for(i=0;i<n;i++)
            (Arrey+i)=random(2*ras)-ras;
}
int Mass::putArrey()
{ int i;
for(i=0;i<n;i++)
            cout<<*(Arrey+i)<<"\t";
cout <<"\n";
return 0;
}

int Mass::getSize()
  {  return n;
  }

void Mass::putSize(int ss)
  {n=ss;
  }

void Mass::del()
{delete[] Arrey;
}

int main(void)
{

int ss,m,size=100;
Mass Arrey;
cout <<"Введите размерность массива\n по строкам:";
cin >>ss;
Arrey.putSize(ss);
cout << "размерность массива = "<<Arrey.getSize()<<"\n";
Arrey.getArrey(100);
Arrey.putArrey();
Arrey.del();
Arrey.putArrey();
return 0;
}

Любую переменную можно инициализировать, то есть присвоить ей значения, для инициализации объектов класса существуют специальные функции — конструкторы. Имя конструктора совпадает с именем класса, при необходимости он может принимать параметры, но не может возвращать значения даже типа void. Для примера: Arrey(). Если пользователь не объявляет конструктор, то существует конструктор по умолчанию, который ничего не делает, но он есть. Соответственно существует функции уничтожающая объекты класса — деструктор, она очень похожа на конструктор по своим свойствам. Зачастую наличие конструктора (стандартного, который ничего не делает) необходимо по протоколу. Имя деструктора ~Arrey.

Домашняя работа написать предложенную программу, так что бы в ней были конструктор с 3-мя параметрами и деструктор.

Просмотров: 18591

Вы можете --> Заказать программу или Задать вопрос на форуме

Вернуться воглавление


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


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

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

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


 


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

 
 

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