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.

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


 

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

67304. Постмодернистская ситуация в культуре XX века 31.29 KB
  Понятия постмодернизм постмодерн постмодернистский многозначны они используются и для обозначения своеобразного направления в современном искусстве и для Характеристики определенных тенденций в политике религии этике образе жизни мировосприятии но так же и для периодизации культуры и обозначения...
67305. Верификация, тестирование и оценивание корректности программных компонентов 292.5 KB
  Принципы верификации и тестирования программ Верификация  это процесс для определения выполняют ли программные средства и их компоненты требования наложенные на них в последовательных этапах ЖЦ ПС. Информация о процессе верификации включает требования к системе требования к ПС и к его архитектуре данные...
67306. ОЖОГИ И ОТМОРОЖЕНИЯ 287.5 KB
  Знать: патогенез клинические признаки классификацию термических ожогов и отморожений патогенез стадии течения ожоговой болезни и отморожений. Иметь представление о принципах лечения ожоговой болезни способах кожной пластики оперативном лечении отморожений.
67307. Экономические аспекты безопасности жизнедеятельности 25.87 KB
  Мероприятия по защите окружающей среды, снижению уровня воздействия опасностей на человека и техносферу, обеспечению требований безопасности и улучшению условий труда, прогнозированию, предотвращению или снижению последствий чрезвычайных ситуаций природного и техногенного...
67308. Методи та механізми автентифікації на основі симетричних криптоперетворень 323.44 KB
  Надзвичайно важливими послугами, що повинні надаватися користувачам ІТС є послуги цілісності та автентичності інформації та ресурсів. По суті сьогодні ці послуги в ряді випадків є навіть більш важливими ніж послуга конфіденційності. В цьому розділі цілісність інформації ми будемо розглядати як властивість захищеності...
67309. ФОРМЫ ПРАВА 117.5 KB
  В одних государствах преимущественное распространение получили правовые акты парламентов в других делегированное законодательство органов управления в третьих прецеденты и судебные решения в четвертых религиозные нормы Коран сунна иджма и т. Нормативно-правовые акты являются основной и наиболее совершенной формой современного права.
67311. Фразеология. Объект и предмет фразеологии 109.5 KB
  Такие устойчивые сочетания слов называют фразеологическими единицами (ФЕ), фразеологическими оборотами, фразеологизмами, фраземами, идиомами (греч. idioma ‘особе свойство’). Предметом фразеологии как раздела языкознания является исследование природы фразеологизмов и их категориальных признаков...
67312. Перевантаження операторів new і delete 201.5 KB
  Розробник може керувати виділенням пам’яті, перевантажуючи оператори new і delete. Такі оператори переважно перевантажуються як методи класу. Проте дозволено перевантаження і як дружніх функцій Операторні функції операторів new і delete в обидвох випадках мають вид...