
- •1. Объектно-ориентированное программирование как методология проектирования программных средств.
- •1.2. Объект
- •Iarray a(10), b(25), c(45);
- •Int main(void)
- •2.1. Перегрузка имен функций
- •Int print(int);
- •Void print(int);
- •Int (*matrix)[10];
- •Void main(void)
- •Void incr(int &aa)
- •3.2 Объявление класса.
- •Имя_класса имя объекта;
- •Имя объекта. Имя элемента
- •Имя_объекта. Имя_метода( );
- •Имя класса *this;
- •Имя_класса (список формальных параметров)
- •Листинг 3.4
- •V_3d( double &X, double &y,double &z)
- •Void main(void)
- •Х:: х(const х&)
- •V_3d::v_3d(const v_3d& v1)
- •Void v_3d::print()
- •Сlass X
- •Void main (void)
- •4. Перегрузка операций
- •V_3d(double x1,double y1,double z1)
- •Void print();
- •Void main(void)
- •Void v_3d::print()
- •4.3.1. Использование дружественных функций при перегрузке операций
- •Void print();
- •Void main(void)
- •Void v_3d::print()
- •4.3.2.Особенности использования дружественных функций
- •Имя объекта. Имя_функции
- •Void f1( X& );
- •Void f2 ( X* );
- •Void main(void)
- •5. Производные классы
- •Int Bfunc( );
- •Int Xfunc( );
- •Int Efunc( X & x1 );
- •Istream
- •Iostream
- •Ifstream
- •С помощью манипуляторов – специальных операций, вставляемых непосредственно в поток вывода.
- •Int width( int w);
- •Int precision( int p);
- •Void main(void)
- •Void open(char* filename, int mode, int access);
- •If(!fout) {
- •7. Виртуальные функции
- •Circle a;
- •A.Build();
- •Virtual double a(double X)
- •Void main (void)
- •Void Graphics Object :: Build() { };
- •8.Шаблоны функций и классов
- •Void main(void)
- •Void Swap ( SwapType &X, SwapType &y)
- •Void main(void)
- •Int a, double b;
- •Int sloc,rloc;//начало и конец очереди
- •Void qput(t I); // помещение элемента в очередь
- •Int main(void)
- •1.Какой принцип ооп реализуется с помощью шаблонных функций и классов?
- •2.Когда целесообразно использовать шаблоны функций? Каков общий вид объявления шаблона функции?
Объектно-ориентированное программирование на языке С++
1. Объектно-ориентированное программирование как методология проектирования программных средств.
1.1 Что такое объектно-ориентированное программирование?
Объектно-ориентированное программирование – это новый подход к программированию. По мере развития языков программирования возникали новые методы программирования. На каждом этапе создавался новый подход, который помогал программистам справляться с растущим усложнением программ.
В языках первого поколения (1954-1958 гг.) –FORTRAN1, ALGOL-58, реализуется хаотическая концепция программирования. Программам на этих языках была присуща неконтролируемая последовательность передач управления (оператор GO TO), отсутствие требования объявления данных, отсутствие подпрограмм.
К языкам второго поколения (1959-1961гг.) относят такие как FORTRAN2, ALGOL-60, COBOL, Lisp. В программах на этих языках были реализованы следующие методы программирования:
описание данных;
указатели для хранения адресов данных;
подпрограммы как средство разбиения задачи на подзадачи и снижения уровня сложности задачи.
В подпрограммах языков второго поколения отсутствовал механизм передачи параметров. Связь между подпрограммами осуществлялась через глобальные (внешние) данные, а вся программа находилась в одном файле. На рис 1.1 показана архитектура языков второго поколения. Программы, реализованные на таких языках, имеют относительно простую структуру, состоящую из области глобальных данных и подпрограмм. Ошибка в какой-либо части программы может иметь далеко идущие последствия, так как область данных является общей для всех подпрограмм. В процессе эксплуатации таких программ уже через короткое время возникает путаница из-за большого количества перекрестных связей между подпрограммами, беспорядочности потоков управления, что снижает надежность программ и достоверность результатов.
Используя языки первого и второго поколений, программисты могли писать программы до нескольких тысяч строк длиной.
Подпрограммы
Рис 1.1. Архитектура языков второго поколения.
Стрелками на рисунке обозначено воздействие подпрограмм на различные данные.
К языкам третьего поколения (1962-1970гг.) относят такие как ALGOL-68, PL/1, Pascal, Simula. В программах на этих языках были реализованы следующие методы программирования:
-структурное программирование (текст программы должен представлять собой композицию трех основных элементов: последовательность, условие, цикл, программа строится из блоков, заключенных в фигурные скобки { });
-передача данных в подпрограмму посредством параметров;
-модульное программирование (модуль – функционально законченная часть программы, находящаяся в отдельном файле). Модули компилируются раздельно. По Лискову, “модульность – это разделение программы на раздельно компилируемые фрагменты, имеющие между собой средства сообщения”;
- абстракция данных (возможность определить в программе новые типы данных со сколь угодно сложной структурой).
Архитектура языков третьего поколения показана на рис 1.2.
Подпрограммы
Модуль 1 Модуль 2 Модуль 3
Рис 1.2. Архитектура языков третьего поколения.
Таким образом, в языках второго и третьего поколений центральное место в программе занимает подпрограмма (процедура или функция в языке С). Поэтому такие языки называют процедурно-ориентированными. Процедурно-ориентированные языки позволили программисту создавать программы свыше 50000 строк длиной. Однако они оказываются несостоятельными, когда программа достигала определенной длины. Чтобы написать более сложную программу, необходим был новый подход к программированию. В итоге были разработаны принципы объектно-ориентированного программирования.
В 1970-1980 годах появились такие языки, как Smalltak, Object Pascal, C++, CLOS, ADA, Simula. Эти языки получили название объектно-ориентированных. Язык программирования С++ был разработан на основе языка С Бьярном Страуструпом и вышел за пределы его исследовательской группы в начале 80-х годов.
Основным элементом конструкции в объектно-ориентированных языках служит модуль, составленный из логически связанных классов и объектов, а не подпрограмма, как в процедурно-ориентированных языках.
Объектно-ориентированное программирование – это методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного класса, а классы образуют иерархию на принципах наследуемости.
Архитектура программных систем на основе объектно-ориентированных языков показана на рис.1.3.
Объект 1
Данные
Функции
Объект 2
Объект n
Рис. 1.3. Архитектура программных систем на основе объектно-ориентированных языков.
На рис.1.3 стрелками показано взаимодействие объектов.
В объектно-ориентированных языках сокращена или отсутствует область глобальных данных. Данные и действия организуются таким образом, что основой программы становятся классы и объекты.
Объектно-ориентированное программирование (ООП) позволяет программисту разложить проблему на связанные между собой подзадачи. Каждая проблема становится самостоятельным объектом, содержащим свои собственные коды и данные, которые относятся к этому объекту. В этом случае задача программирования упрощается и программист получает возможность оперировать с гораздо большими по объему программами. ООП снижает стоимость разработки надежных программ.