Объектно-ориентированное программирование

Автор: Пользователь скрыл имя, 03 Января 2012 в 19:31, курсовая работа

Описание работы

При изучении объектно-ориентированного программирования (ООП) наибольшей проблемой является использование новой терминологии и понимание нового подхода к решению старых задач - новой технологии программирования.

В технологии ООП взаимоотношения данных и алгоритма имеют более регулярный характер: во-первых, класс (базовое понятие этой технологии) объединяет в себе данные (структурированная переменная) и методы (функции). Во-вторых, схема взаимодействия функций и данных принципиально иная. Метод (функция), вызываемый для одного объекта, как правило, не вызывает другую функцию непосредственно. Для начала он должен иметь доступ к другому объекту (создать, получить указатель, использовать внутренний объект в текущем и т.д.), после чего он уже может вызвать для него один из известных методов. Таким образом, структура программы определяется взаимодействием объектов различных классов между собой. Как правило, имеет место иерархия классов, а технология ООП иначе может быть названа как программирование "от класса к классу".

Содержание

Введение…………………………………………………………………………..4
Объектно-ориентированное программирование.………………………...…..…6

1.1 Предыстория…………………………………………………………..………6

1.2 Основные понятия ООП.………………………………………….…….……8

1.3 Обобщение…………………………………………………………..……….10
Описание среды программирования Borland C++ Builder………..…..………11

2. 1 Описание главного окна Borland C++ Builder…………………….………12
Код программы. Описание интерфейса ……………………….….…...………16

3.1 Описание кода программы……………………………………………….…16

3.2 Описание компонентов……………………………………………...………23
Тестирование программы…………………………………………………….…24

5. Выводы…..……………………………………………………………………….26

6. Использованная литература…………………………………………….………27

Приложение А……………………………………………………………………28

Работа содержит 1 файл

otchet.doc

— 1.83 Мб (Скачать)

     Объектно-ориентированный подход к программированию подразумевает выделение общих свойств у различных объектов и широчайшее применение абстракций всех уровней. 
 
 
 
 
 
 
 
 
 
 
 
 

  1. ОПИСАНИЕ СРЕДЫ ПРОГРАММИРОВАНИЯ Borland C++ Builder

      C++Builder первоначально создавалась только для платформы Microsoft Windows. Поздние версии, содержащие кроссплатформенную компонентную библиотеку Borland, поддерживают и Windows, и Linux.

     В 2003 году Borland выпустила C++BuilderX (CBX), написанный при помощи той же инфраструктуры, что и JBuilder, который при этом был мало похож на C++ Builder или Delphi. Этот продукт предназначался для разработки больших программ для крупных предприятий, но коммерческого успеха не достиг. В конце 2004 года Borland объявила, что продолжит развитие классического C++ Builder и объединит его со средой разработки Delphi, прекратив, таким образом, разработку C++ BuilderX.

     Спустя  примерно год после этого объявления, Borland выпустила Borland Developer Studio 2006, который включал в себя Borland C++Builder 2006, предлагавший улучшенное управление конфигурацией и отладкой. Borland Developer Studio 2006 — единственный полноценный комплект, содержащий Delphi, C++ Builder и C# Builder.

     В 2007 CodeGear выпустила C++Builder 2007, в котором реализовала полную поддержку API Microsoft Windows Vista, увеличила полноту соответствия стандарту ANSI C++, увеличила скорость компиляции и сборки до 500 %, включила поддержку MSBuild, архитектур баз данных DBX4 и «VCL для Web», поддерживающий AJAX. Поддержка API Microsoft Windows Vista включила в себя приложения, изначально оформленные в стиле Vista, и естественную поддержку VCL для Aero и Vista Desktop. CodeGear RAD Studio 2007 содержит C++Builder 2007 и Delphi. Также в 2007 CodeGear «воскресила» марку «Turbo» и выпустила две «Turbo» версии C++Builder: Turbo C++ Professional и Turbo C++ Explorer (бесплатный), основанных на Borland C++ Builder 2006.

     В конце 2008 года компания CodeGear выпустила новую версию RAD Studio, в которую вошли Delphi 2009 и С++Builder 2009. В 2009 году в составе RAD Studio вышел C++Builder 2010.

     Ранее сообщалось, что следующая версия, CodeGear C++ Builder (кодовое имя «Commodore»), будет обладать поддержкой x86-64 и возможностью создавать машинный x86-64 код. Однако в 2010 году в состав RAD Studio XE включена версия C++ Builder XE без этой функциональности.

    2.1   Описание главного окна Borland C++ Builder

Главное окно программы (рис 2.1) содержит:

1. Панель меню.

2. Дерево объектов.

3. Окно редактирования исходного кода.

4. Конструктор формы.

5. Панель инструментов.

6. Редактор  свойств и событий объектов.

Рисунок 2.1 - Главное окно программы 

       Панель  меню - содержит такие важные кнопки как: Файл, Редактирование, Поиск, Проект, Запуск, Компонент, База данных, Инструменты, Окно, Справка (рис. 2.2)

Рисунок 2.2 - Панель меню

     Дерево  объектов предоставляет информацию обо всех используемых объектах в  программе и к какому объекту  они принадлежат. Возможно добавлять, изменять и удалять объекты (рис. 2.3)

 

Рисунок 2.3 - Дерево объектов.

     Редактор кода Borland C++ Builder представляет собой текстовый редактор, приспособленный к службам языков, таких как Visual Basic, Visual C++, и Visual C#. Текст записывается в буфер и выводится на экран в виде текстового документа. Используя объекты модели автоматизации редактора C++ Builder, можно незаметно управлять текстом, как в буфере, так и в представлении (рис. 2.4)

 

Рисунок 2.4 - Редактор кода 

     Конструктор формы позволяет добавлять в программу другие компоненты, изменять название форм, устанавливать ее размер и многое другое (рис. 2.5)

 

Рисунок 2.5 - Конструктор формы 
 

       Обычно панель инструментов располагается в верхней части любого стандартного приложения Windows. Панель инструментов предоставляет прямой доступ к функциям в приложении по нажатию кнопки. Можно добавлять отдельные элементы управления MediaPlayer или выбрать другой элемент управления, например TrackBar, ListBox и так далее (рис. 2.6) 

 

       Рисунок 2.6 - Панель инструментов 
 
 
 
 
 

Редактор свойств и событий объектов - с его помощью можно редактировать любой объект или компонент, используемый в программе, обеспечивает настройку шрифта, настройку размера используемого объекта, создание событий при соответственном действии над объектом/компонентом программы (рис. 2.7)

 

Рисунок 2.7 - Редактор свойств и событий объекта 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  1. КОД ПРОГРАММЫ. ОПИСАНИЕ ИНТЕРФЕЙСА

Интерфейс программы  состоит:

  • панель (для вывода видео файла)
  • прогресс бар (отображает текущее состояние воспроизведения)
  • трекбар (предназначен для регулировки звука)
  • кнопка “О программе”
  • кнопка “Выход”
  • кнопка “Открыть” (выбор файла для воспроизведения)
  • кнопка “плей” (начать воспроизведение)
  • кнопка “стоп” (перемотка файла на начало)
  • кнопка “пауза” (пауза воспроизведения)
  • меню (содержит примеры мелодий) 
    1. Описание кода программы

#include <vcl.h>

#include <stdlib.h>

#include <string.h>

#pragma hdrstop

#include "mediapl.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

bool flag;   //воспроизведение/пауза

char path[256], pathtemp[256]; //переменные для хранения пути

bool a; // для вывода о программе

int x; //смена картинок

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

SpeedButton2->Enabled=False;   

SpeedButton3->Enabled=False;

SpeedButton4->Enabled=False;

TrackBar1->Enabled=False;

TrackBar2->Max=65350;  //звук

TrackBar2->Position=65350; //позиция на предельном значении

GetCurrentDirectory(256,path); //получение текущего каталога

strcat(path,"\\"); // добавление \\

strcpy(pathtemp,path); //копирование во временный путь

ListBox1->Items->Add(strcat(path,"1.mp3")); 
//для воспроизведения примеров мелодий

strcpy(path,pathtemp); //добавление элементов “примеры мелодий”

ListBox1->Items->Add(strcat(path,"2.mp3"));

strcpy(path,pathtemp);

ListBox1->Items->Add(strcat(path,"3.mp3"));

}

void __fastcall TForm1::SpeedButton1Click(TObject *Sender)

{

OpenDialog1->InitialDir="";      //выбор песни/видео

OpenDialog1->Filter=

"Все поддерживаемые файлы|*.avi;*.mp3;"

"mp3|*.mp3|avi|*.avi";

OpenDialog1->Title="Выбор Файла";

if(!OpenDialog1->Execute())

return;

if(MediaPlayer1->FileName == OpenDialog1->FileName){

ShowMessage("Файл уже воспроизводится"); return;}

MediaPlayer1->FileName=OpenDialog1->FileName;

MediaPlayer1->Open();

Panel1->Refresh();  //очистка панели

if(!(MediaPlayer1->FileName=="*.mp3"))  {

randomize();    //перемена картинок

x=random(4)+1;

switch(x)

        {

        case 1: {Image1->Visible=True; Image2->Visible=False; Image3->Visible=False; Image4->Visible=False; break;}

        case 2: {Image1->Visible=False; Image2->Visible=True; Image3->Visible=False; Image4->Visible=False; break;}

        case 3: {Image1->Visible=False; Image2->Visible=False; Image3->Visible=True; Image4->Visible=False; break;}

        case 4: {Image1->Visible=False; Image2->Visible=False; Image3->Visible=False; Image4->Visible=True; break;}

        }

        }

TrackBar1->Max=MediaPlayer1->Length;   //подстройка состояния воспроизведения под длину файла

TrackBar1->Enabled=True;

TrackBar1->Position=0;

Form1->Caption=OpenDialog1->FileName; //название окна

SpeedButton2->Enabled=False;

SpeedButton3->Enabled=True;

SpeedButton4->Enabled=True;

MediaPlayer1->Display=Panel1;

MediaPlayer1->Play(); //воспроизведение

flag=false;

Timer1->Enabled=True; //таймер

a=true;

}

void __fastcall TForm1::SpeedButton2Click(TObject *Sender)

{

//нажатие  на разные кнопки(воспроизведение, стоп, пауза)

MediaPlayer1->Play();

SpeedButton2->Enabled=False;

SpeedButton3->Enabled=True;

SpeedButton4->Enabled=True;

Timer1->Enabled=True;

a=true;

}

void __fastcall TForm1::SpeedButton3Click(TObject *Sender)

{

MediaPlayer1->Rewind();

SpeedButton4->Enabled=False;

SpeedButton3->Enabled=False;

SpeedButton2->Enabled=True;

a=false;

}

void __fastcall TForm1::SpeedButton4Click(TObject *Sender)

{

MediaPlayer1->Pause();

SpeedButton4->Enabled=False;

SpeedButton2->Enabled=True;

SpeedButton3->Enabled=True;

a=false;

}

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)

{

MediaPlayer1->Close();

}

void __fastcall TForm1::TrackBar1Change(TObject *Sender)

{

//перемотка

if (TrackBar1->Focused() && MediaPlayer1->Mode == mpPlaying)

   {

   MediaPlayer1->Position = TrackBar1->Position;

   MediaPlayer1->Play(); 
 

   flag = true;

   } 

} 

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

//для непрерывистого  воспроизведения

Информация о работе Объектно-ориентированное программирование