- •Министерство образования российской федерации Воронежский государственный технический университет а.Г. Остапенко г.А. Кащенко и.В.Давыдов Морев д.Е.
- •Воронеж 2001
- •Рецензенты: Остапенко г.А.
- •Введение
- •Методы разработки программного обеспечения
- •Подходы к разработке программного обеспечения
- •Планирование разработки программного обеспечения
- •Основные типы языков программирования.
- •Процедурное программирование
- •Функциональное программирование
- •Логическое программирование
- •Объектно-ориентрованное программирование
- •Процедуры.
- •Модули.
- •Абстрактные типы данных.
- •Построение программного обеспечения по объектно-ориентированной методике
- •2.1. Функционирование объектно-ориентированного программного обеспечения
- •2.2. Классы. Отношения между классами
- •Этапы построения программного обеспечения
- •2.4. Объектно-ориентированный анализ
- •Информационные модели
- •Жизненные циклы
- •Модели процессов
- •2.5. Нотация для объектно-ориентированного проектирования
- •2.6. Объектно-ориентированное проектирование – ood
- •2.7. Заключительное замечание
- •Основные недостатки:
- •3. Средства объектно-ориентированного программирования
- •Средства объектно-ориентированного рограммирования Turbo-Pascal
- •Понятие “объект”
- •Статические и виртуальные методы. Полиморфизм Статические методы
- •Виртуальные методы. Полиморфизм
- •Конструкторы и деструкторы
- •3.1.5. Сравнимость данных типа объект
- •3.1.6. Динамический вызов объектов
- •3.2. Средства объектно-ориентированного
- •Понятие “класс”
- •Компоненты классов. Доступ к ним.
- •Дружественные функции
- •Конструкторы и деструкторы
- •Статические члены классов
- •3.2.6. Перегрузка операций
- •3.2.7. Виртуальные функции
- •3.2.8. Динамическое создание объектов
- •3.2.9. Проверьте свои знания!
- •Литература:
- •Оглавление
- •Воронежский государственный технический университет,
- •394026 Воронеж, Московский просп. 14
3.2.8. Динамическое создание объектов
Как любые переменные в С++, так и объекты могут создаваться и уничтожаться динамически. Рассмотрим, в качестве примера, простую программу нахождения суммы n элементов массива, где n заранее известно:
#include<iostream.h>
class massiv
{
protected:
int n, //количество элементов в массиве
*ptr; //указатель на начало области памяти для массива
public:
massiv(void);
void summa(void);
~massiv(void);
};
massiv::massiv(void)
{
int i;
cout<<”Ввод n”; //ввод количества элементов в массиве
cin>>n;
ptr=new[n*sizeof(int)]; //выделение памяти для массива
for (i=0; i<n; i++)
{cout<<”Элемент”<<i; cin>>*(ptr+i);}; //ввод элементов массива
};
void massiv::summa(void)
{
int i,sum=0;
for(i=0;i<n;i++)
sum=sum+(*(ptr+i)); //нахождение суммы элементов
cout<<”Сумма=”<<sum; //вывод результата
}
massiv::~massiv()
{delete ptr; } //деструктор, освобождает занятую массивом память
int main()
{
massiv *ptrmas;
ptrmas=new(massiv); //запускает конструктор и создается массив
ptrmas->summa(); //нахождение суммы
ptrmas->~massiv(); //вызов деструктора
return 0;
}
3.2.9. Проверьте свои знания!
В заключение этого раздела приведем целостную программу на языке С++ и рекомендуем читателю самому выяснить, что будет выведено на экран в результате её выполнения. Для проверки – запустите!
#include<stdio.h>
class parent
{
protected:
char version;
public:
Parent()
{version=’A’; }
virtual void print()
{printf(“\n The parent. Version %c”, version);}};
class derived1 :public parent
{
private:
int info;
public:
derived1 (int number)
{info=number; version=’1’}
void print()
{printf(“\nDerived1 info: %d version %c”, info, version);};
}
class derived2 :public parent
{
private:
int info;
public:
derived2(int number)
{info=number;}
void print()
{printf(“\nDerived2 info: %d. Version %c”, info, version);};
}
class derived3 :public derived1
{
private:
int info;
public:
derived3 (int number): (number)
{info=number;
version=’3’;
}
void print()
{printf(“\nDerived3 info: %d. Version %c”, info, version);}
};
void print_info (parent*info_holder)
{info_holder->print(); }
main() {
parent b;
derived1 d1(3);
derived2 d2(15);
derived3 d3(-565);
print_info (&b);
print_info (&d1);
print_info (&d2);
print_info (&d3);
}
Литература:
|
|
1 |
Б.Керниган, Д.Ритчи. Язык программирования Си. - М.: Финансы и статистика, 1992. |
2 |
Белецкий Я. Турбо Си++: Новая разработка. - М.: Машиностроение, 1994. -400с. |
3 |
Бочков С.О., Субботин Д.М. Язык программирования Си для персонального компьютера. -М.: Радио и связь,1990.-384с. |
4 |
Бруно Бабэ. Просто и ясно о BORLAND С++. -М.:БИНОМ,1995.-400с. |
5 |
Д.Кнут. Искусство программирования для ЭВМ. Т.3. Сортировка и поиск. - М.: Мир, 1978. |
6 |
Елманова Н.З., Кошель С.П. Введение в Borland C++ Builder.-М.: Диалог. - МИФИ, 1997.-272с. |
7 |
Калверт Чарльз и др. Borland C++Builder 3.Самоучитель.-К: ДиаСофт, 1999.-272с. |
8 |
Калверт Чарльз. C++Builder. Энциклопедия пользователя. |
9 |
Круглински Дэвид. Основы Visual C++.-М.:Русская Редакция ТОО Channel Trading Ltd, 1997.-696с. |
10 |
Лукас П. С++ под рукой. - Киев:ДиаСофт, 1993.-176с. |
11 |
Московские олимпиады по программированию,М.-1988.-208с. |
12 |
Оузьер Д., Гробман С., Батсон С. Delphi2. Освой самостоятельно.-М.:Восточная Книжная Компания,1997.-624с. |
13 |
Пирогов В.Ю. Программирование на языке ассемблера для операционных систем MS DOS и Windows, 1999, -550c. |
14 |
Рамодин Д. Создание приложений в среде Borland C++Builder, Мир ПК №10,11,12-1997г. |
|
|
15 |
Рейсдорф К. Освой самостоятельно Borland C++Builder. М.: БИНОМ, 1998.-702с.
|
16 |
Ричард Вайнер, Льюс Пинсон С++ изнутри. - Киев: ДиаСофт,1993.-304с. |
17 |
Стефан Дьюхарст, Кэти Старк Программирование на С++.- Киев: ДиаСофт, 1993.-272с. |
18 |
Страуструп Б. Язык программирования СИ++. - М.: Радио и связь,1991. 352с. |
19 |
Том Сван. Программирование для WINDOWS в BORLAND C++.-М.:БИНОМ, 1995.-400с |
20 |
Уэйт М., Прата С., Мартин Д. Язык Си. Руководство для начинающих. - М.: Мир, 1988.- 512 с. |
21 |
Шилд Г. Программирование на С и С++ для WINDOWS 95.-К.:Торгово- издательское бюро BHV, 1996.-400с. |
22 |
Шилд Герберт. Самоучитель С++.-BHV.-С.-Петербург.,1997.-512с. |
23 |
Шилдт Герберт. MFC: основы программирования. - К.: Издательская группа BHV, 1997.-560с. |