4966

Класс как основа технологии объектно-ориентированного программирования (ООП)

Лекция

Информатика, кибернетика и программирование

Класс как основа технологии объектно-ориентированного программирования (ООП) Основные составляющие технологии ООП Инкапсуляция – объединение элементов данных и действий над ними в класс с ограничением доступа к элементам данных. Это означает...

Русский

2012-11-30

25.77 KB

4 чел.

Класс как основа технологии объектно-ориентированного программирования (ООП)

Основные составляющие технологии ООП

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

Наследование – создание нового класса на основе существующего с добавлением новых элементов данных и функций.

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

Классы

Класс – новый тип данных, создаваемый пользователем на основе базовых и ранее созданных классов.

Класс включает в себя элементы данных и функции. Функции в составе класса называют методами.

Для каждого элемента данных или функции в классе определяется вид доступа: закрытый или открытый. Закрытый доступ означает, что к данному элементу данных или функции может иметь только функция, которая входит в состав класса. Открытый доступ означает, что данному элементу данных или функции могут иметь доступ любые функции.

После того, как класс создан, можно создавать объекты данного класса: переменные, массивы и указатели. Формат описания объекта практически ничем не отличается от формата описания переменных базовых типов данных, например, целочисленных или вещественных. Описание объекта должно содержать название класса, к которому он относится, и имя самого объекта;

имя_класса имя_объекта;

Каждый объект содержит элементы данных, которые входят в состав класса. Для каждого объекта можно вызывать функции, входящие в состав класса.

В состав класса обязательно должны входить функции, которые присваивают значения элементам данных объекта при его создании. Такие функции называют Конструкторами. Также в состав класса должны входить функции, которые вызываются при уничтожении объекта. Такие функции называют деструкторами.

Примерный формат описания класса

Обычно описание класса состоит из двух файлов:

заголовочный файл  – содержит определение класса с элементами данных и прототипами функций внутри класса. Имя заголовочного файла класса имеет следующий формат: имя_класса.h

файл с исходным текстом методов класса – содержит полное описание функций в составе класса, в т.ч. конструкторов и деструкторов. Имя файла с текстом методов имеет формат: имя_класса.cpp

Описание класса в заголовочном файле имеет следующий формат:

class имя_класса

{public:

 //Прототип конструктора по умолчанию

 имя_класса();

//Прототип деструктора

~ имя_класса();

private:

//Элементы данных

тип1 имя1;

тип2 имя2;

public:

//Прототипы функций

тип_результата1 имя_функции1(тип1_1 имя1_1, тип1_2 имя1_2);

тип_результата2 имя_функции2(тип2_1 имя2_1, тип2_2 имя2_2);

}

Файл методов класса должен начинаться со строки:

#include <имя_класса.h>

Описание одного из методов класса в файле с исходным текстом методов имеет следующий формат:

тип_результата1 имя_класса::имя_функции1(тип1_1 имя1_1, тип1_2 имя1_2)

{

}

Для удобства работы с объектами класса в состав класса должны входить следующие методы:

конструктор по умолчанию

конструктор с параметрами

конструктор копирования

методы изменения значений элементов данных

методы считывания значений элементов данных

методы печати значений элементов данных на экране

методы ввода значений элементов данных с клавиатуры

Для проверки работоспособности методов класса, класс необходимо создавать в составе проекта, в котором имеется главный файл, который содержит главную функцию main(). Именно с функции main() начинается исполнение программы.

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

Пример описания класса

//файл person.h

#pragma once

class Person

{

public:

Person(void);

~Person(void);

private:

 // Фамилия

 char* Fio;

 // Возраст

 int Age;

public:

 // Конструктор с параметрами

Person(char Fio1, int Age1);

 // Конструктор с параметрами

Person(Person P1);

 // Изменение элемента данных Фамилия

 void SetFio(char* Fio1);

 // Извлечение указателя на элемент данных Фамилия

 char* GetFio(void);

 // Изменение элемента данных Возраст

 void SetAge(int Age1);

 // Извлечение элемента даннных Возраст

 int GetAge(void);

// Ввод элементов данных с клавиатуры

 void Input(void);

 // Печать элементов данных

 void Print(void);

}; 

//файл person.cpp

#include ".\person.h"

#include <string.h>

#include <stdio.h>

#include <stdlib.h>

Person::Person(void):

Fio(NULL)

, Age(0)

{

 

}

Person::~Person(void)

{

}

// Конструктор с параметрами

Person::Person(char* Fio1, int Age1)

{

Fio=new char[strlen(Fio1)];

strcpy(Fio, Fio1);

Age=Age1;

}

// Конструктор с параметрами

Person::Person(Person& P1)

{

 Fio=new char[strlen(P1.Fio)];

 strcpy(Fio, P1.Fio);

Age=P1.Age;

}

// Изменение элемента данных Фамилия

void Person::SetFio(char* Fio1)

{

}

// Извлечение указателя на элемент данных Фамилия

char* Person::GetFio(void)

{

 return Fio;

}

// Изменение элемента данных Возраст

void Person::SetAge(int Age1)

{

}

// Извлечение элемента даннных Возраст

int Person::GetAge(void)

{

 return Age;

}

// Ввод элементов данных с клавиатуры

void Person::Input(void)

{

 char Fio1[64];

printf("Vvedite Fio");

scanf("%s",Fio1);

Fio=new char[strlen(Fio1)];

strcpy(Fio, Fio1);

printf("Vvedite Age");

 scanf("%d",&Age);

}

// Печать элементов данных

void Person::Print(void)

{

printf("\nFio=%s Age=%d\n",Fio,Age);

}

//Главный файл ClassExample1.cpp

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <conio.h>

#include "person.h"

main()

{

//Вызывается конструктор по умолчанию с нулевыми параметрами

//чтобы элементы данных не содержади случайные числа

Person P1;//формируется пустой объект с нулевыми параметрами

//Вызывается конструктор с параметрами

Person P2("Ivanov",20);//объект формируется из отдельных //параметров

//Вызывается конструктор копирования

Person P3(P2);//объект формируется как копия ранее созданного //объекта

P1.Input();//заполнение элементов данных объекта данными, //введенными  с клавиатуры

P1.Print();

P2.Print();

P3.Print();

//Печать отдельных элементов данных объекта,

//путем к ним с помощью функций класса

printf("%s \t %d\n",P2.GetFio(),P2.GetAge());

//!!!Ошибка – прямое обращение к закрытым элементам данных из //функции main(), которая не является членом класса Person

printf("%s \t %d\n",P2.Fio,P2.Age);

//Изменение элементов данных объектов в процессе работы программы

M1.SetFio("Sidorov");

M1.SetAge(23);

M3.SetAll("Petrov",30);

//!!!Ошибка- доступ к закрытым элементам данных

strcpy(M3.Fio, "Sidorov");

M3.Age=30;

M1.Print();

M2.Print();

M3.Print();

getch();

}

Порядок создания проекта для тестирования класса

Создание пустого проекта консольного приложения

Добавление класса в проект с помощью мастера добавления класса с помощью команды Project->Add Class. В создаваемом классе автоматическим появляется конструктор по умолчанию и деструктор

Добавление в класс переменных с помощью мастера добавления переменных. Переменные добавляются в файл класса с расширением h.

Добавление в класс функций с помощью мастера добавления функций. Прототип функции появляется в файле .h, а определение функции – в файле .cpp.

Создание главного файла проекта, описание в нем объектов класса и вызов методов для них.


 

А также другие работы, которые могут Вас заинтересовать

45457. Системы управления и регулирования. Использование структурных схем. Законы управления. Принципы управления, качество 83 KB
  И интегральный регулятор : Преимуществом данного регулятора является лучшая по сравнению с Прегулятором точность установки режима а недостатками худшие по сравнению с Прегулятором показатели качества а именно большая колебательность и меньшее быстродействие. ПИ регулятор : Объединяет два регулятора П и И следовательно обладает наилучшими свойствами по сравнению с вышеописанными регуляторами а именно за счет Псоставляющей улучшается показательные качества в переходном процессе а за счет Исоставляющей уменьшается...
45458. Системы управления при случайных воздействиях. Преобразование стационарного случайного сигнала стационарной линейной динамической системой 265.5 KB
  Системы управления при случайных воздействиях. Если задающее воздействие gt является случайным процессом то выходная координата системы yt и ошибка воспроизведения xt = gt yt представляют собой также случайные процессы. Следовательно при случайных воздействиях речь может идти об определении не мгновенных а лишь некоторых средних значений выходной переменной системы и ошибки. Такими средними значениями являются среднее значение квадрата выходной переменной системы 9.
45459. Основные задачи анализа систем с минимальной средней квадратичной ошибкой: задача фильтрации, задача экстраполяции, задача дифференцирования и др 265.5 KB
  Если задающее воздействие gt является случайным процессом то выходная координата системы yt и ошибка воспроизведения xt = gt yt представляют собой также случайные процессы. Следовательно при случайных воздействиях речь может идти об определении не мгновенных а лишь некоторых средних значений выходной переменной системы и ошибки. Такими средними значениями являются среднее значение квадрата выходной переменной системы 9.23 Следовательно для исследования статистической точности автоматических систем необходимо вычисление...
45460. Двойственность в ЛП, построение моделей двойственных задач 139 KB
  Любой задаче ЛП можно поставить в соответствие другую задачу сопряженная или двойственная то есть задачи существуют парами. Коэффициенты критерия двойственной задачи образуются из компонентов вектора ограничений прямой задачи. Компоненты вектора ограничений двойственной задачи образуются из коэффициентов линейной формы критерия прямой задачи. Матрица условий двойственной задачи образуется транспонированием матрицы условий прямой задачи.
45461. Структура файловой системы. Механизм доступа к файлам 344 KB
  Механизм доступа к файлам. Поэтому принято хранить данные на внешних носителях обычно это диски в единицах называемых файлами. Историческим шагом явился переход к использованию централизованных систем управления файлами. Система управления файлами берет на себя распределение внешней памяти отображение имен файлов в адреса внешней памяти и обеспечение доступа к данным.
45462. Математические методы проведения экспертизы при оценке решений 120.5 KB
  Из определений и высказываний об искусственном интеллекте можно вывести три основных заключения: а термин искусственный интеллект употребляется в двух различных смыслах: как обозначение определенного исследовательского направления и как название для систем на разработку которых это направление нацелено; б среди ученых существуют разногласия относительно возможностей как принципиальных так и реальных искусственного интеллекта как исследовательского направления; в для...
45463. Алгоритм функционирования экспертной системы на имитационном принципе 88 KB
  При построении системы понятий с помощью метода локального представления эксперта просят разбить задачу на подзадачи для перечисления целевых состояний и описания общих категорий цели. Полученные значения могут служить критерием для классификации всех элементов данных и таким образом для формирования системы понятий. Текстологический метод формирования системы понятий заключается в том что эксперту дается задание выписать из руководств книг по специальности некоторые элементы представляющие собой единицы смысловой информации.
45464. Системы базисных функций 457.5 KB
  Системы базисных функций Один и тот же сигнал может быть разложен по различным СБФ или что одно и то же рассмотрен в различных системах координат. Системы единичных функций. Система таких функций будет полна для любого непрерывного сигнала при Dt 0 и N . Система функций {ut} является полной ортогональной системой.
45465. Модели сигналов 296.5 KB
  Модели сигналов Результаты обработки информации существенно зависят от выбора рациональной модели анализируемого сигнала. Первые модели сигналов выражаются аналитическим описанием непосредственно самого изучаемого колебания или функции а вторые описываются теми или иными вероятностными характеристиками и используются при анализе случайных процессов. Отличительная особенность таких моделей сигналов состоит в том что по их параметрам можно однозначно восстановить сигнал с заданной точностью по выбранному критерию. Детерминированные модели...