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

Автор работы: Пользователь скрыл имя, 26 Сентября 2013 в 21:40, курсовая работа

Краткое описание

В работе рассматриваются три вопроса. В первом мы анализируем устройства ввода звуковой информации, их виды и назначение. При ответе на второй вопрос мы узнаем об организации файловой системы, как обслуживается файловая структура . В третьем вопросе мы рассматриваем объектно-ориентированное программирование в языках С++, Object Pascal, Java, узнаём о предназначении и структуре.
Современный период развития общества характеризуется сильным влиянием на него компьютерных технологий. Средства ввода звуковой информации на компьютер совершенствуются. Объектно-ориентированное программирование – это новый способ подхода к программированию

Содержание

Введение……………..……………………….…………….……………………….…...…..4
1. Устройства ввода звуковой информации.…………………………………………....5
1.1 Микрофон……...…………..………………………..………………………………..5
1.2 Цифровой диктофон.…………………………………………………………….…7
1.3 Модем…………………………………………………………………………………..7
2. Организация файловой системы. Обслуживание файловой структуры…………......10
2.1 Организация файловой системы.…………………………….…………….… ... 10
2.2 Обслуживание файловой структуры…………………………….….…….…….21
3. Объектно-ориентированное программирование…….……………………………..…....24
3.1 Контроль во время компиляции и во время выполнения………………….……25
3.2 Чисто объектно-ориентированные и гибридные языки……………………..25
3.3 Простая объектная модель и ссылочно-объектная модель…………………26
3.4 Классы, объекты и ссылки………………………………………………………….26
3.5 Мусорная корзина…………………………………………………………………….27
3.6 Определение новых классов…………………………………………………………29
3.7 Создание и уничтожение объектов ……………………………………………..30
3.8 Инкапсуляция (Private и Public)……………………………………………………30
3.9 Файлы, юниты и пакеты……………………………………………………………30
3.10 Методы/данные класса и объекта класса……………………………………..31
3.11 Классы и наследование……………………………………………………………..31
3.12 Предок всех классов…………………………………………………………………32
3.13 Доступ к методам базового класса……………………………………………..32
3.14 Совместимость подтипов………………………………………………………..33
3.15 Позднее связывание (и полиморфизм)…………………………………………..33
3.16 Абстрактные методы и классы…………………………………………………33
3.17 Множественное наследование и интерфейсы…………..……………………34
3.18 Другие свойства…………………………………………………………….………35
3.19 Стандарты…………………………………………………………………….……37
3.20 Языки и программное окружение……………………………………………...37
4. Практическая часть ……………………….…………………………...……………38
4.1 Условие задачи…………………………………………………………….…………38
4.2 Блок-схема………………………………………………….…………………………39
4.3 Листинг программы…………………………………………………………………40
Заключение ……………….……….………………………………………………………42
Список использованной литературы…………………………………………………… 43

Вложенные файлы: 1 файл

курсяк.docx

— 942.17 Кб (Скачать файл)

 

Шаблоны (обобщенное программирование)

 

Обобщенное  программирование — это техника  написания функций и классов, оставляя некоторые типы данных неопределёнными. Спецификация типа осуществляется, когда  эта функция или класс используется в исходном коде. Всё делается под  строгим контролем компилятора, и ничего не остаётся для определения  во время выполнения. Наиболее типичный пример шаблона класса — это контейнерные классы.

C++: есть шаблонные классы и функции, отмечаемые ключевым словом template. Стандартный C++ включает обширную библиотеку шаблонов, называемую STL (Standart Template Library ,Стандартная библиотека шаблонов), которая поддерживает специфический и мощный стиль программирования: обобщенное программирование. C++ — единственный из рассматриваемых трех языков, который основывается на поддержке обобщенного программирования, помимо ООП.

OP: нет шаблонов. Контейнерные классы обычно строятся как контейнеры объектов класса TObject, а затем уточняются для необходимых объектов.

Java: реализуются в рамках Generics (введенного в JDK 1.5 «Tiger»). Концептульно они не отличаются от шаблонов в C++, но имеют некоторые особенности, которые диктуются свойствами самого языка. Предусмотрены контейнеры на все случаи жизни: List (хранение последовательностей элементов), Map или ассоциативные массивы (связывание одних объектов с другими), Set (уникальность значений для каждого типа).

 

Другие специфические свойства

 

C++: В C++ есть ещё перегрузка операторов, тогда как перегрузка методов присутствует также в Java и была недавно добавлена в Object Pascal. C++ позволяет программистам перегружать и глобальные функции. Вы можете перегрузить операторы преобразования типов, написав конвертирующие методы, которые будут вызываться «за кулисами». Объектная модель C++ требует копировать конструкторы и перегружать операторы присваивания, в чем не нуждаются остальные два языка, поскольку базируются на ссылочно-объектной модели.

Java: Только Java поддерживает многопоточность непосредственно в языке. Объекты и методы поддерживают механизм синхронизации (с ключевым словом synchronized): два синхронизированных метода одного класса не могут выполняться одновременно. Для создания нового потока вы просто наследуете от класса Thread, перегружая метод run(). Как альтернативу вы можете осуществить интерфейс Runnable (что вы обычно делаете в апплетах, поддерживающих многопоточность). Ещё одно ключевое свойство Java, конечно, идея переносимого байтового кода, но это не относится непосредственно к языку. Другое примечательное свойство — это поддержка основанных на языке компонентов, известных как JavaBeans и многие другие свойства, недавно добавленные в этот язык.

OP: Специфические черты Object Pascal: ссылки на классы, легкие для использования указатели на методы (основа модели обработки событий) и, в частности, свойства (property). Свойство — это просто имя, скрывающее путь, которым вы получаете доступ к данным или методу. Свойство может проецироваться на прямое чтение или запись данных, а может ссылаться на метод, обеспечивающий доступ. Даже если вы меняете способ доступа к данным, вам не нужно менять вызывающий код (хотя вам нужно будет его перекомпилировать): это делает свойства очень мощным средством инкапсуляции.

 

3.19 Стандарты

 

Для каждого языка требуется, чтобы  кто-то установил его стандарт и  проверял все реализации на соответствие ему.

C++: Стандарт ANSI/ISO C++ явился завершением многотрудных усилий соответствующего комитета. Большинство авторов компиляторов, кажется, пытаются подчиняться стандарту, хотя есть ещё много странностей. Теоретически развитие языка должно на этом закончиться. На практике, инициативы вроде компилятора Borland C++Builder, конечно, не способствуют улучшению ситуации, но многие чувствуют, что C++ очень нуждается в визуальном окружении программирования. В то же время, популярный Visual C++ тянет C++ в другом направлении, например, с явным злоупотреблением макросов. (По моему личному мнению, у каждого языка есть собственная модель развития, и поэтому нет большого смысла в попытках использовать язык для того, для чего он не был предназначен.) Много новых возможностей будут введены новым стандартом C++ 0x.

OP: Object Pascal — язык-собственность, поэтому у него нет стандарта. Borland лицензировал язык для пары продавцов небольших компиляторов на OS/2, но это не оказало большого влияния. Borland расширяет язык с каждым новым выпуском Delphi.

Java: Компания-создатель Sun обладает торговой маркой Java. Однако Sun лицензирует его для продавцов других компиляторов, и убедило ISO создать стандарт Java, не создавая специальный комитет, а просто приняв предложения Sun как есть. Кроме формального стандарта, однако, Java требует высокосовместимых JVM. С недавней поры Sun выдвинула инициативу открыть исходные коды Java (OpenJDK) и сделать ее доступной для всех разработчиков в рамках лицензии GPL 2.

 

3.20 Языки и программное окружение

 

Цель C++ — мощность и контроль за счет сложности. Целью Delphi является легкое, визуальное программирование (не отказываясь  от мощности) и прочная связь с Windows. Цель Java — мобильность, даже за счет некоторого отказа от скорости, и  распределённые приложения или исполняемое  содержание WWW.

 

 

 

 

4.Задание: Вычисление определителя матрицы

 

    1. Условие задачи: Из свойств определителя известно, что определитель матрицы порядка N может быть представлен в виде суммы N определителей N-1 порядка. Предположим мы раскладываем по первому столбцу. При этом определитель равен сумме произведений элементов этого столбца на минор данного элемента матрицы и на (-1) в степени суммы индексов элемента. Минор элемента а[i,j] матрицы - это определитель матрицы, полученный вычеркиванием i-строки и j-столбца.
    2. Блок-схема:

    1. Листинг программы:

 

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#include<alloc.h>

#include<math.h>

int det(int**,int);//matrix+size

void main()

{

int n,**ms,i,j,d=0;

do

{

clrscr();

puts("Enter size of matrixn");

scanf("%d",&n);

}

while(n<2);

if(!(ms=(int**)calloc(n,sizeof(int*))))

{puts("Error:There is no memoryn");}

for(i=0;i<n;i++)

if(!(*(ms+i)=(int*)calloc(n,sizeof(int))))

{puts("Error:There is no memoryn");}

 

for(i=0;i<n;i++)

for(j=0;j<n;j++)

{printf("Enter [%d][%d] ",i+1,j+1);scanf("%d",&ms[i][j]);}

 

for(i=0;i<n;i++)

{

for(j=0;j<n;j++)

printf("%3d",ms[i][j]);

puts("n");

}

d=det(ms,n);

printf("Determinant is %dn",d);

getch();

}

 

int det(int**ms,int n)

{

int i,j,z,a,d;

int q=0;

int **ms1;

if(n==2){q=ms[0][0]*ms[1][1]-ms[0][1]*ms[1][0];}

else

  {

    if(!(ms1=(int**)calloc(n,sizeof(int*))))

    {puts("Error:There is no memoryn");}

    for(i=0;i<n;i++)

    if(!(*(ms1+i)=(int*)calloc(n,sizeof(int))))

    {puts("Error:There is no memoryn");}

 

      for(i=0;i<n;i++)

{

   for(j=0;j<n-1;j++)

   for(z=0;z<n;z++)

      {

       if(j<i)

       ms1[z][j]=ms[z][j];

       else

       ms1[z][j]=ms[z][j+1];

      }

q+=pow(-1,i+n+1)*det(ms1,n-1)*ms[n-1][i];

    // for(j=0;j<n-1;j++)

    // {for(z=0;z<n-1;z++)

    // printf("%3d",ms1[j][z]);puts("n");}

    // printf("%fn",pow(-1,i+n+1));

  }

      }

 

return q;

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение

 

Итак, в проделанной работе мы рассмотрели 3 важных вопроса: устройства ввода звуковой информации, организация файловой системы и обслуживание файловой структуры, объектно-ориентированное программирование. Мы узнали, какие бывают устройства ввода звука, а именно: микрофон, цифровой диктофон, модем, как организована файловая система, из чего она состоит, как обслуживается файловая структура, разобрали объектно-ориентированное программирование на трех языках. Узнали, что в разных языках оно различно.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список  использованной литературы, ресурсы

 

Язык  программирования С++. Б. Страуструп. Киев:"ДиаСофт", 1993 г.

ru.wikibooks.org

ru.wikipedia.org

 

 

 

 

 


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