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.

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


 

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

27325. Память и способы запоминания 34.5 KB
  По содержанию образная память моторная память эмоциональная память; по организации запоминания эпизодическая память семантическая память процедурная память; по временным характеристикам долговременная декларативная память кратковременная память ультракратковременная память; по физиологическим принципам определяемая структурой связей нервных клеток она же долговременная и определяемая текущим потоком электрической активности нервных путей она же кратковременная по наличию цели произвольная и непроизвольная; по наличию...
27326. Мышление как особый психологический процесс 35.5 KB
  К формам мышления относятся: Понятие это форма мышления отражающая существенные свойства связи и отношения предметов и явлений. Суждения это форма мышления позволяющая устанавливать простейшие связи между познаваемыми явлениями как связи и отношения между предметами и явлениями окружающего мира их свойствами и признаками. Умозаключение форма мышления в которой из одного или нескольких суждений выводится новое суждение. Виды мышления чаще всего мышление подразделяют на теоретическое понятийное и образное и практическое...
27327. Педагогика в системе гуманитарных знаний и наук о человеке 20.18 KB
  Педагогика начального образования как наука о воспитании образовании и развитии младших школьников Педагогика с греческого означает детоводство дитяведение. Педагогика наука о воспитании человека совокупность теоретических и прикладных наук изучающих воспитание образование и обучение. Педагогика это относительно самостоятельная дисциплина имеющая свой объект и предмет изучения. Педагогика в широком смысле влияние всех внешних воздействий естественной и социальной среды.
27328. Методология и методика педагогического исследования, Методологическая культура учителя 30.65 KB
  Методы обучения т. В свою очередь возможность исследователя сформировать новые методы и подходы в своей педагогической деятельности является показателем его высокой методологической культуры. Теоретические и эмпирические методы педагогического исследования Пути способы познания объективной реальности принято называть методами исследования. Различают теоретические и эмпирические методы педагогического исследования.
27329. Система образования и ее характеристика 23.22 KB
  Ведущую роль в области образования играют принципы государственной политики. Создавать условия для общедоступности образования приспособления системы образования к уровням и особенностям развития и подготовки обучающихся воспитанников. Носить демократический характер образования и допускать автономность обр.
27330. Целостный педагогический процесс 42.13 KB
  Раскрывая вторую характерную черту педагогического процесса усовершенствование он пишет: Усовершенствование же имеет три направления: 1 устранение препятствий с пути естественного развития сил отрицательная сторона; 2 прямое положительное содействие правильному развитию наличных способностей положительная сторона; 3 искоренение недостатков и насаждений ценных свойств усовершенствование в тесном смысле. Понятие структура и функции педагогического процесса Педагогическим процессом называется развивающиеся взаимодействие...
27331. Воспитательный процесс и его характеристика 17.82 KB
  Сложность воспитательного процесса Сложность воспитательного процесса состоит и в том что его результаты не так явственно ощутимы и не так быстро обнаруживают себя как например в процессе обучения. Одна из особенностей воспитательного процесса его непрерывность. Процесс воспитания комплексный что означает единство целей задач содержания форм и методов воспитательного процесса подчиненное идее целостности формирования личности.
27332. Концепция духовно-нравственного развития и воспитания личности гражданина России 21.42 KB
  Принципы: Организация социально открытого пространства духовнонравственного развития и воспитания личности гражданина России нравственного уклада жизни обучающихся осуществляется на основе: нравственного примера педагога; социальнопедагогического партнёрства; индивидуальноличностного развития; интегративности программ духовнонравственного воспитания; социальной востребованности воспитания. Нравственность учителя моральные нормы которыми он руководствуется в своей профессиональной деятельности и жизни его отношение к своему...