Понятия "Класс" и "Объект" в C++
Концепция объектно-ориентированного программирования. Объектно-ориентированные языки программирования: Smalltalk, Object Pascal, CLOS и C++. Понятие "Объект" и "Класс". Управление доступом к элементам данных классов. Определение функций-членов класса.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 28.10.2011 |
Размер файла | 24,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Объектно-ориентированный подход к проектированию программных систем является элементом так называемых наукоемких технологий проектирования программ. Использование этого подхода дает возможность на порядок по сравнению с обычным директивным программированием сократить трудоемкость отладки программ и внесения изменений в программу при ее последующем развитии. Платой за это является наукоемкость проектирования, т.е. уделение весьма большой части времени на детальную проработку предметной области программы, составление структуры данных и их взаимосвязи, а также проектирование программной архитектуры.
Вместе с тем, объектно-ориентированное программирование существенно отличается от классических методов программирования, в том числе структурного и модульного программирования. При этом коренным образом ломается понятие об алгоритме как о последовательности выполнения операторов языка программирования, записанных друг за другом. В объектно-ориентированных программах все данные разбиваются на отдельные группы и строго связываются с программами (функциями), предназначенными для обработки этих данных. Любая из функций как бы присоединяется к тем данным, для обработки которых она предназначена. Она никогда не может быть использована для обработки данных какой-либо другой группы. Такое объединение данных с программами в единое целое носит название инкапсуляции. Сам результат объединения является самостоятельным объектом программы и почти всегда действительно соответствует какому-либо из объектов той предметной области, для которой написана программа. Такая структура программы дает возможность не только быстро локализовать логические ошибки, но и с высокой эффективностью вносить изменения в программу при ее доработке для получения новых версий.
1. Концепция объектно-ориентированного программирования
Концепция объектно-ориентированного программирования появилась в начале 70-х годов как систематизированный подход к алгоритмической формализации сложных предметных областей. Наиболее известными представителями объектно-ориентированных языков программирования являются Smalltalk, Object Pascal, CLOS, Ada и C++.
C++ занимает в этом ряду место наиболее концептуально строгого универсального языка программирования, область применения которого легко расширяется от системных задач до прикладных систем.
Объектно-ориентированное программирование на С++ основывается на следующих основных этапах разработки программ.
Первый этап заключается в выделении абстракций. Выделение абстракций означает анализ предметной области, для которой составляется программа, с целью определения основных объектов предметной области, их свойств, отношений между объектами, а также возможных операций над объектами и их составляющими.
Второй этап состоит в типизации объектов и синтезе абстрактных типов данных. Этап предполагает определение новых производных типов данных и наборов специфических функций или операций, применяемых к этим типам данных, таким образом, чтобы исключить возможность смешивания или взаимозамены различных типов.
Третий этап заключается в объектной декомпозиции как выделении подтипов или подобъектов и их составляющих для каждого из типов объектов.
Четвертый этап представляет собой композиционную иерархиза- цию объектов как выделение родовидовых и композиционных отношений над объектами.
В результате объектно-ориентированного подхода к проектиро- ванию программ процесс разработки программы превращается в процесс эволюционного программирования, при котором для внесения каких-либо изменений и дополнений в программу не требуется кардинального пересмотра составляющих ее алгоритмов. Эволюционный способ программирования опирается на сохранение целостности объектов программы, т.е. внесение изменений в программу не должно затрагивать внутреннюю организацию существующих в ней объектов.
Важным свойством объектно-ориентированных языков является возможность разработки на них программ, работающих в системах со сложными параллельными вычислительными процессами, изначально присущими техническим средствам вычислительной техники. Это свойство опирается на концепцию активных и неактивных объектов в период функционирования программы. Одновременная активность различных объектов становится возможной за счет их строгой типизации и закрытости для изменений другими объектами.
Язык программирования С++ обладает всеми основными свойствами языков объектно-ориентированного программирования и существенно отличается по своей концепции от базового языка С. Ключевыми идеями, реализующими в С++ концепцию объектно-ориентированного программирования считают инкапсуляцию, наследование и полиморфизм.
Инкапсуляция - это объединение производного типа данных с набором функций, используемых при работе с этим типом, в единый класс. При этом функции, включенные в класс, иногда называют методами класса, данные - элементами данных, а конкретные представители класса - объектами класса.
Наследование - это способность одних классов заимствовать основные свойства других классов, в частности - методы классов и элементы данных. Класс, наследующий свойства, называют производным, а класс, предоставляющий свои свойства для наследования - базовым. Механизм наследования позволяет создавать иерархию классов, т.е. многоуровневую систему классов, связанных между собой отношением наследования.
Полиморфизм - это возможность определения функции, работающей с различными по типу данных списками параметров в пределах какого-либо одного вида алгоритмов. Такие функции называются обычно виртуальными и проектируются как некоторое семейство одноименных функций, работающих с различными типами данных. Механизм, реализующий выбор какой-либо конкретной функции из определенного семейства, носит название механизма позднего связывания, поскольку может быть использован в процессе выполнения готовой программы.
2. Понятие “Объект”
В любом обычном директивном языке программирования выделяются такие понятия, как данные и типы данных. Данные - это числа, строки символов, различные двоичные коды, которые можно хранить в оперативной памяти ЭВМ и совершать над ними различные операции. Типы данных - это наименование групп данных, одинаковых по размеру, занимаемому в оперативной памяти и способу внешнего представления, например, целые числа или символы.
Аналогичное деление существует и в объектно-ориентирован-ных языках программирования. Объект - это понятие наиболее близкое к понятию данных. Это - то, что должно реально существовать в программе, занимая определенную его типом оперативную память. Вместе с тем, объект - более сложное понятие, чем просто данное или множество данных. Наиболее просто объектом можно было бы назвать неразрывную совокупность данных с набором функций (или, так называемых методов), достаточных для обработки этих данных, необходимой в программе.
Для того, чтобы начать составлять объектно-ориентированную программу, необходимо не пожалеть довольно продолжительного времени на выделение и классификацию объектов, которые необходимы для решения задачи программной системой.
Объектом можно назвать некоторую самостоятельно выделяющуюся программную модель, как систему моделей предметов, понятий и отношений между ними с их характерным поведением во времени и возможными способами изменения, играющую важную функциональную роль при решении конкретной задачи программирования.
Приведем общие признаки объектов.
Объект распознаваем, т.е. имеет некоторые, возможно не четко очерченные, границы.
Объект характеризуется множеством возможных состояний, в которых он пребывает в определенные интервалы времени. Состояния сменяют одно другое на протяжении всего существования объекта.
Объект проявляет свои свойства при взаимодействии с другими объектами. Это свойство иногда называют поведением объекта.
Объект уникален, т.е. имеет свойства, которые позволяют отличить его от других объектов.
Объект имеет определенные рамки жизненного цикла. Он “рождается”, функционирует, меняя состояние за состоянием, и “умирает”. Это свойство связано с существованием в программе явно очерченных рамок функционирования объекта. Меньшую “жизнь” имеют локальные объекты программы, максимальную - глобальные объекты, появляющиеся сразу после старта программы и исчезающие непосредственно перед ее завершением.
Перечисленные свойства объектов, выделяемых при решении какой-либо конкретной задачи, практически полностью соответствуют будущим функциям объектов в программе. Функционирование объекта начинается обычно с выделения для него оперативной памяти ЭВМ и установления некоторого начального состояния (начальных значений при инициализации). При последующей работе программы область памяти, занимаемая объектом, изменяется, характеризуя новые состояния объекта, объект взаимодействует с другими объектами. И, наконец, при завершении своей работы, объект освобождает занимаемую им память.
Свойства объекта позволяют отличить понятие “объект” от некоторым образом противоположного ему понятия “класс”.
3. Понятие “Класс”
Центральным понятием объектно-ориентированного программирования является понятие класса. Обобщенное определение класса как некоторого фрагмента предметной области может быть дано следующим образом: "Класс - это то множество признаков, обозначенное одним именем , которое позволяет выделить соответствующее множество объектов, связанных общностью структуры и поведения".
Класс - абстрактное понятие. Именно поэтому трудно очертить его точные границы. Класс никогда не меняет своих состояний, не “рождается” и не “имирает” в процессе работы программы. Класс, как и тип данных, существует всегда и не занимает под свои данные оперативной памяти.
Например, если определить класс “человек”, то можно сказать, что человек имеет имя, отчество, фамилию, возраст и т.п. , но конкретные данные можно увитеть только для конкретного объекта класса “человек”, скажем, Василия Ивановича Смирнова 19-ти лет. нетрудно видеть, что объектов одного класса может быть сколь угодно много, и для каждого объекта требуется оперативная память для хранения его конкретных данных.
В языке С++ под классом понимают производный тип данных, объединенный с множеством функций и операций, работающих с объектами этого типа, и сформированный при помощи описателей class, struct или union. Синтаксис определения класса представляется так: <описатель>имя_класса [: базовый_список] {<список_элементов>}.
В этом определении <описатель> - один из описателей class, struct или union, имя_класса - идентификатор из латинских букв и цифр, начинающийся с буквы; в базовом списке перечисляются базовый класс или классы, свойства которых наследуются, а <список_элементов> объявляет элементы класса - элементы данных и функции (методы) класса.
В примере объявлен класс графических прямых Line. Класс содержит основные элементы данных для представления прямой на экране ПЭВМ, а также все основные функции для работы с объектами этого класса. Для определения объектов класса Line можно воспользоваться идентификатором Line как описателем типа: Line GreenLine, RedLine, HorLine;
Руководствуясь приведенным определением трех объектов класса Line, программой будут отведены три области памяти, по структуре и размеру соответствующие элементам данных класса Line.
Вызов функций - членов какого-либо класса возможен только для конкретного объекта этого класса. Использование функций при этом выглядит, например, следующим образом:
HorLine.SetColors ( C_LIGHTGREEN, C_BLACK );
Horline.SetCoords ( 0, 0, 40, 40 );
Horline.DrawLine ( );
В приведенном фрагменте использования функций, функции установки параметров проведения прямой и ее рисования вызваны для конкретного ранее определенного объекта HorLine, относящегося к классу Line. В этом примере макропеременные C_LIGHTGREEN и C_BLACK соответствуют целым константам, обозначающим светлозеленый и черный цвета.
С некоторыми ограничениями объекты класса могут использо- ваться в различных операторах программы, в частности, в операциях присваивания, в качестве аргументов и возвращаемых значений функций и т.п.
4. Управление доступом к элементам данных классов
В рассмотренных ранее примерах классы были объявлены через описатель struct. В этом случае все элементы данных класса доступны для всех функций, используемых в программе.
Вместе с тем, существует ряд соображений, по которым было бы целесообразно ограничить доступ к элементам данных класса. К наиболее важным из них относятся следующие:
ограничение доступа к данным класса рамками тех функций, которые включены программистом в этот класс, позволяет локализовать программные ошибки практически до начала работы программы;
описание класса в этом случае позволяет пользователям классов более просто знакомиться с новыми библиотеками классов;
при ограничении доступа упрощается корректировка программ, поскольку для их изменения достаточно скорректировать описание класса и функции, являющиеся его членами, не внося изменений в те места программы, где используются объекты класса;
функциональное разграничение классов делает возможной разработку программ, использующих концепцию параллельных процессов.
В приведенном примере ключ доступа private допускает использование элементов данных только функциями-членами (методами) класса Date, т.е. Set_Date, Get_Date, DateIncrement. Ключ доступа public разрешает использовать элементы класса любыми функциями программы.
Ниже приведена таблица, определяющая использование ключей доступа в классах С++.
Таблица 1.1
Ключ доступа |
Смысл использования ключа |
|
private |
Элементы данных могут использоваться только функциями-членами класса, которому принад-лежат эти элементы данных. |
|
public |
Элементы данных могут использоваться любыми функциями программы, имеющими ту же область действия. |
|
protected |
Элементы данных доступны функциям-членам того же класса, а также функциям-членам про-изводных классов. |
Ключ доступа private используется по умолчанию и может быть опущен. В общем случае, при описании класса ключи доступа допускается использовать произвольное число раз, например:
class Student {
double Salary; // По умолчанию эти перемен-
double Contribution; // ные объявлены private.
public:
char Name[20]; // Переменные, доступные из
char GroupNumber[4]; // любых функций.
private:
int ErrorCheck (void); // Private-функция
public:
void GetStatus( ); // Функции, используемые в
void SetStatus( ); // любых других функциях
};
В языке С++ допускается возможность объявления класса без указания списка составляющих класс элементов, например:
class RedLine;
struct Screen;
union MyField;
Такие недоопределенные классы допускается использовать для указания каких-либо ссылок на имена классов. При работе с реальными объектами этих классов, классы должны быть полностью определены.
5. Определение функций-членов класса (методов)
класс объект программирование
Определить функции-члены класса можно внутри описания класса или за его пределами. В первом случае функция считается встраиваемой. Встраиваемая функция характерна тем, что компилятор С++, обрабатывая вызовы этой функции в программе, заменяет их не на вызов функции как подпрограммы, а непосредственно на объектный код, соответствующий определению этой функции. Вследствие сказанного, программист должен принимать во внимание, что встраиваемые функции, как правило, имеют короткие определения. В качестве примера можно привести следующее определение функции GetDay( ) в классе Date:
class Date{
int month, day, year;
public:
GetDay( ) { return day };
SetDate (int, int, int);
// ... другие функции класса
};
В этом примере функция GetDay( ) автоматически определена как встраиваемая, в то время как функция SetDate и другие функции, описание которых предполагается вне описания класса Date, т.е. где-либо позже, будут являться функциями, организованными по обычным правилам вызова функций в С++. При вызове этих функций для конкретных объектов, поределенных в программе, будет использоваться адрес функций как подпрограмм. В этом случае адрес следующего за вызовом функции оператора программы временно запоминается в системном стеке, а упраление передается на подпрограмму-функцию. После окончания работы этой функции (метода), управление вернется на оператор, адрес которого был ранее запомнен в стеке.
В качестве встроенных функций могут быть и функции, не принадлежащие какому-либо классу. В этом случае перед объявлением или определением функции необходимо указывать ключевое слово inline, например, вначале какой-либо программы можно было бы написать следующие строки.
void DrawDotLine ( int, int, int, int );
inline void ClearRelm ( ) { Relm = 0; };
Здесь функция ClearRelm( ) определена как встроенная, не являясь членом ни одного из классов, возможно описанных в программе.
Для определения функции-члена класса за пределами описания класса необходимо определить ее где-либо в программе после определения класса, членом которого она является. В то же время, функции-члены различных классов могут иметь одинаковые названия, например:
class String { // Класс строк
char *PointerToString; // Указатель начала строки
int StringLength; // Длина строки
int StatusString; // Ключ использования
public:
void SetString ( char * );
void Clear ( );
// Другие методы класса
};
class Matrix { // Класс матриц
char *PoinerToMatrix; // Элементы данных
int FirstDirection; // класса
int SecondDirection;
int TypeOfMatrix;
public:
void SetMatrix ( char * ); // Функции -
void Clear ( ); // методы класса
// Другие методы класса
};
В приведенном примере классы String и Matrix содержат функции-члены класса Clear( ), одноименные в разных классах. Ясно, что в этом случае возникает проблема определения имени класса, к которому относится описываемая функция при программировании тела функции.
Для разрешения этой проблемы в С++ введена операция области видимости :: . Эта операция позволяет указать компилятору какому из классов принадлежит определяемая функция. Пример, приведенный ниже, показывает как определяются функции для ранее описанных классов String и Matrix.
void String::SetString ( char * Source )
{
if ( !( PointerToString =
malloc ( StringLength = strlen ( Source ) ) ){
printf (“\n Недостаточно оперативной памяти !");
“ Обнаружено в функции String::SetString” >> cout;
getchar( );
exit(12);
}
memmove( PointerToString, Source, StringLength );
}
void String::Clear ( ) // Определение Clear из String
{
memset( PointerToString, '\0', StringLength );
}
void Matrix::Clear ( ) // Определение Clear из Matrix
{
memset(PointerToMatrix, '\0',
FirstDirection * SecondDirection );
}
Напомним, что функция malloc используется для заказа оперативной памяти и возвращает указатель на выделенную память, strlen расчитывает длину строки, являющуюся ее аргументом, memmove служит для быстрой пересылки в опративной памяти данных из второго аргумента в первый количеством, заданным третьим аргументом. Наконец, функция memset используется для обнуления некоторой области паяти, заданной первым аргументом.
Как видно из примера, операция определения области видимости для методов класса используется для всех функций-членов класса, а не только для тех методов, имена которых совпадают в описаниях различных классов. В тексте программы использованы два способа выдачи сообщений на печать: стандартная функция языка С printf и вывод с помощью потока вывода cout, характерный для использования С++. Такое совмещение операторов возможно, но приводит к плохой читаемости программы, поэтому функцию printf следовало бы заменить также потоковым выводом.
Пример демонстрирует и другую особенность определения функций-членов класса. В определениях всех методов класса элементы данных класса, которому принадлежит определяемый метод, доступны без указания элементов данных в списке параметров метода. Эта особенность синтаксиса языка С++ во многом упрощает программирование классов и делает программы более обозримыми.
6. Объекты классов
При определении классов не происходит реального выделения памяти под объекты этого класса, а создаются лишь новые производные типы данных, для которых будут использоваться функции-члены класса.
Для того, чтобы начать работу с реальными объектами какого-либо класса, эти объекты необходимо сначала определить. При этом в программе необходимо указать имя класса, объект которого должен быть создан, а также имя самого объекта. У каждого из классов может быть произвольное число объектов. Например, пусть в программе определен класс динамического списка List.
class List { // Класс "Список"
char *ListHead; // Начало списка
char *Previous, *Next; // Двусвязность
long ElementAccount; // Текущие списковые
int ElementSize; // характеристики
long CurrentElement; // Номер текущего эл-та
protected:
char *CurrentElementPointer; // Адрес текущего эл-та
public:
int InsertToList( char * ); // Включение элемента
char* SelectFrom ( int ); // Выделение элемента
// Другие методы
};
Для определения объектов этого класса с именами StudentsList (список студентов) и AdvisorsList (список преподавателей) в программе необходимо записать следующие строки:
List StudentsList;
List AdvisorsList;
или сразу:
List StudentsList, AdvisorsList;
При этом в оперативной памяти будут выделены соответствующие области с именами StudentsList и AdvisorsList, в которых будут располагаться данные этих двух объектов.
Вызвать любую из функций-членов класса можно лишь для какого-либо конкретного объекта этого класса. Для предыдущего примера это можно сделать следующим образом.
char *Element = "Текст, включаемый в список.";
char *SecondTxt = "Другой текст.";
char ForGet[50];
int CurrentNumber = 1;
StudentsList.InsertToList ( Element );
StudentsList.InsertToList ( SecondTxt );
AdvisorsList.InsertToList ( SecondTxt );
ForGet = StudentsList.SelectFrom ( Current Number );
Здесь приведены вызовы функций InsertToList для объектов класса List StudentsList и AdvisorsList, а также вызов метода SelectFrom класса List для объекта StudentsList.
Функции, вызываемые для объектов, выполняют свои действия только над элементами данных тех объектов, для которых они вызваны. Так, например, в строке StudentsList.InsertToList(SecondTxt) функция-метод InsertToList(SecondTxt) вызвана для объекта StudentsList, в строке AdvisorsList.InsertToList(SecondTxt) - для объекта AdvisorsLis.
7. Пpимеp программы с классами
Пусть необходимо сформировать класс "Комплексные числа". Для этого объекта можно определить его представителей: векторы комплексных чисел и матрицы комплексных чисел. В качестве основных операций над комплексными числами можно определить основные операции формальной арифметики (сложение, вычитание, умножение, деление), а также операцию сопряжения.
Re = x.Re + y.Re;
Im = x.Im + y.Im;
}
void Complex::Minus ( Complex x, Complex y ) // Разность
{
Re = x.Re - y.Re;
Im = x.Im - y.Im;
}
void Complex::Mult ( Complex x, Complex y ) // Произведение
{
Re = x.Re * y.Re - x.Im * y.Im;
Im = x.Re * y.Im + x.Im * y.Re;
}
void Complex::Div ( Complex x, Complex y ) // Деление
{
if ( !(y.Re || y.Im ) ) {
cout << "Деление на ноль!";
exit (12);
}
Re = x.Re * y.Re - x.Im * y.Im;
Im = x.Re * y.Im + x.Im * y.Re;
}
void Complex::Get ( ) // Ввод с клавиатуры
{
cout << "Введите действительную часть числа:";
cin >> Re;
cout << "Введите мнимую часть числа:"; cin >> Im;
}
void Complex::Put ( ) // Вывод на экран
{
cout << "Действительная часть числа: " << Re;
cout << "Мнимая часть числа: " << Im;
}
// Программа проверки работоспособности класса
// комплексных чисел " Complex "
void main( )
{
Complex a,b,c; // Определение объектов a,b,c
a.Get( ); b.Get( ); // Ввод чисел с клавиатуры
c.Put ( ); // Вывод результата на экран
}
Заключение
Объекты в программе работают как слаженный коллектив вполне самостоятельных программ, которые сами знают, когда им в зависимости от текущей ситуации нужно начать работу, когда ее временно приостановить, и наконец, когда совсем покинуть коллектив программ, не оставив о себе никакого воспоминания кроме необходимых полезных результатов работы. Как правило, каждый объект, начиная свою работу, заказывает у операционной системы оперативную память под свои данные, а заканчивая работу, возвращает эту память назад системе. Тем самым оптимизируется объем памяти, занимаемый всей программой в процессе ее работы.
Для того, чтобы объекты четко знали свое место и полномочия в едином коллективе, и не выполняли одну и ту же работу, они подвергаются специальной классификации, результатом которой является выделение классов объектов. Если два класса обладают общими свойствами, значит для них должен существовать более общий класс, который имеет только те свойства, которые для этих двух объектов являются общими. В этом случае объектам классов с общими свойствами нужно заботиться только о выполнении своих функций, связанных с их различающимися свойствами. Общую же часть может выполнить объект более общего класса.
Современные языки программирования, такие как С++, предоставляют в распоряжение программиста обширный арсенал инструментальных средств, позволяющий проектировать мощные и гибкие программы, но для того, что бы приступить к их составлению, необходимо владеть системой элементов объектно-ориентированной технологии. Этой системе элементов для языка С++ и посвящен настоящий раздел книги.
Список литературы:
1. М. Уэйт, С. Прата, Д. Мартин Язык Си: Пер с англ.-М.: Мир, 2007.-463 с.,ил.
2. Уинер Р. Язык Турбо Си: Пер с англ.-М.: Мир, 2010.-384 с., ил.
3. Берри Р., Микинз Б. Язык Си: введение для программистов: Пер. с англ.-М.:Финансы и статистика, 2007.-с.,ил.
4. TURBO C++. Borland International. Inc. 2010.
Размещено на Allbest.ru
Подобные документы
Использование объектно-ориентированного программирования - хорошее решение при разработке крупных программных проектов. Объект и класс как основа объектно-ориентированного языка. Понятие объектно-ориентированных языков. Языки и программное окружение.
контрольная работа [60,1 K], добавлен 17.01.2011Основные понятия объектно-ориентированного программирования в PHP5. Структурный и объектно-ориентированный подход. Класс как абстрактный тип. Реализация класса. Конструкторы и деструкторы. Функция l_visited_style изменение стиля посещенных ссылок.
курсовая работа [433,2 K], добавлен 13.06.2008Понятие объектно-ориентированного программирования, характеристика используемых языков. Практическая разработка средств объектно-ориентированного программирования в задачах защиты информации: программная реализация на языке С++, а также Turbo Pascal.
курсовая работа [275,9 K], добавлен 22.12.2011Анализ предметной области объектно-ориентированного программирования. Языки Delphi, Object Pascal - объектно-ориентированная среда программирования. Основные алгоритмические решения. Решение дифференциального уравнения методом Рунге-Кутта в среде Excel.
курсовая работа [1,5 M], добавлен 02.04.2011Анализ объектно-ориентированного программирования, имитирующего способы выполнения предметов. Основные принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Понятие классов, полей, методов, сообщений, событий.
контрольная работа [51,7 K], добавлен 22.01.2013Методы грамматического разбора. Разработка структуры учебного транслятора на базовом языке программирования Object Pascal в среде объектно-ориентированного визуального программирования Borland DELPHI 6.0 с использованием операционной системы Windows XP.
курсовая работа [493,8 K], добавлен 12.05.2013Причины возникновения объектно-ориентированного программирования. Графическое представление классов; их отличия от других абстрактных типов данных. Типы абстракции, используемые при построении объекта. Сущность инкапсуляции, наследования и полиморфизма.
контрольная работа [222,1 K], добавлен 04.06.2014Разработка интерфейса для объединения в структуру данных множества объектов различных классов (абстрактный базовый класс TObject). Создание таблиц (коллекций) объектов с помощью механизма объектно-ориентированного программирования - полиморфизма.
курсовая работа [175,7 K], добавлен 06.08.2013Обзор основных используемых языков программирования (С++, Java, Pascal). Анализ существующих методов шифрования паролей. Основные понятия объектно-ориентированного программирования. Реализация приложения для генерирования паролей на языке Object Pascal.
курсовая работа [822,4 K], добавлен 07.07.2012Изучение принципов объектно-ориентированного программирования, в котором основными концепциями являются понятия классов и объектов. Свойства этого вида программирования: инкапсуляция, полиморфизм, наследование. Описание класса. Конструкторы и деструкторы.
презентация [74,8 K], добавлен 14.10.2013