Разделы презентаций


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

Содержание

Какое программирование бывает?Языки программированияПроцедурныеОбъектно-ориентированныеДекларативные(функциональные, логические)СиPascalBasicФортранGoLISPScalaPrologС++JavaPerlPythonRubyObjective-C

Слайды и текст этой презентации

Слайд 1Объектно-ориентированное программирование
Введение

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

Слайд 2Какое программирование бывает?
Языки программирования
Процедурные
Объектно-
ориентированные
Декларативные
(функциональные,
логические)
Си
Pascal
Basic
Фортран
Go
LISP
Scala

Prolog
С++
Java
Perl
Python
Ruby
Objective-C

Какое программирование бывает?Языки программированияПроцедурныеОбъектно-ориентированныеДекларативные(функциональные, логические)СиPascalBasicФортранGoLISPScalaPrologС++JavaPerlPythonRubyObjective-C

Слайд 3Немного истории
Первый объектно-оринентированный язык
Simula (Cимула) разработан в Осло, Норвения,
1968г.



1974 – Clu
1980 – SmallTalk

Начало 80-х годов - Бьерн Страуструп
Язык

С++
Пытался избавиться от неудобств языка Си
«Программа на C отражает “способ мышления”
процессора, а C++ - способ мышления
программиста»
Немного историиПервый объектно-оринентированный языкSimula (Cимула) разработан в Осло, Норвения, 1968г. 1974 – Clu1980 – SmallTalkНачало 80-х годов

Слайд 4Какими бывают ООЯзыки?
чистые – в классическом виде реализующие
объектно-ориентируемую

методологию
(Simula, Smalltalk и др.)

Гибридные – появившиеся в результате
внедрения

объектно-ориентированных
конструкций в популярный язык
(С++, Object Pascal и др.)

Какими бывают ООЯзыки?чистые – в классическом виде реализующие объектно-ориентируемую методологию (Simula, Smalltalk и др.)Гибридные – появившиеся в

Слайд 5Достоинства ООподхода
Интуитивно понятные жизненные аналогии, проще представлять структуру программы
Хорошая структурированность и

возможность поддержания модульности
Снижение объема избыточного кода за счет использования основных

механизмов ООП – наследование, композиция и пр.
Проще вносить изменения в программу за счет модульности – меняются лишь необходимые части, остальные остаются без изменений.
Достоинства ООподходаИнтуитивно понятные жизненные аналогии, проще представлять структуру программыХорошая структурированность и возможность поддержания модульностиСнижение объема избыточного кода

Слайд 6Недостатки ООподхода
Снижение быстродействия программы при использование некоторых механизмов (виртуальные функции и

пр.)
На практике разумное применение ООподхода требует опыта и глубоких знаний
Возможна

неэффективность при распределении памяти (введение дополнительных полей и пр.)
Недостатки ООподходаСнижение быстродействия программы при использование некоторых механизмов (виртуальные функции и пр.)На практике разумное применение ООподхода требует

Слайд 7Как создать программу на С++ в linux/Unix Основные принципы
Текст программы создается в

обычном текстовом файле (без специальных знаков форматирования)
Если текст программы большой,

ее принято разбивать на модули и каждый модуль размещать в отдельны файл (до 200 строк). Файлы принято размещать в общую директорию, возможно наличие вложенных директорий.
Расширение файлов – любое. Принято
.с – для программ на языке Си (для всех типов ОС)
.сс – для программы на языке С++ в Linux/UNIX , .cpp – для MS DOS, Windows
.h – для заголовочных файлов
Как создать программу  на С++ в linux/Unix Основные принципыТекст программы создается в обычном текстовом файле (без

Слайд 8Что делать с написанной программой? Компиляция
Компиляция – процесс преобразования
исходного текста

программы на языке высокого
уровня в исполняемый бинарный код.

Совокупность программных

средств,
реализующих этот процесс называется
компилятором.

В OS UNIX/Linux наиболее часто используемый
вариант компилятора – GCC (GNU C/C++ Compiler) -
свободно распространяемый компилятор
зачастую устанавливается вместе с OС.
Что делать с написанной программой? КомпиляцияКомпиляция – процесс преобразования исходного текста программы на языке высокого уровня в

Слайд 9Какие бывают компиляторы
Существует множество компиляторов с языка C++,
которые можно

использовать для создания
исполняемого кода под разные платформы.
Проекты компиляторов

можно классифицировать
по следующим критериям.
Коммерческие и некоммерческие проекты
Уровень поддержки современных тенденций
и стандартов языка
3. Эффективность результирующего кода

В OS UNIX/Linux наиболее часто используемый
вариант компилятора – GCC (GNU C/C++ Compiler) -
свободно распространяемый компилятор
зачастую устанавливается вместе с OС.
Какие бывают компиляторыСуществует множество компиляторов с языка C++, которые можно использовать для создания исполняемого кода под разные

Слайд 10Состав компилятора GCC
GNU коллекция компиляторов включает в себя несколько языков. Из

них, группу языков Си составляет три компилятора.
g++ — компилятор с

языка C++.
gcc — компилятор с языка C (GNU C Compiler).
gcc -lobjc — Objective-C — это, фактически, язык C с некоторой макро-магией, которая доступна в объектной библиотеке objc. Ее следует поставить и указать через ключ компиляции -l.
Состав компилятора GCCGNU коллекция компиляторов включает в себя несколько языков. Из них, группу языков Си составляет три

Слайд 11Состав GCC
В состав GCC входят следующие инструментальные программные компоненты:
препроцессор
ассемблер
компилятор
компановщик (редактор

связей)

Состав GCCВ состав GCC входят следующие инструментальные программные компоненты:препроцессорассемблеркомпиляторкомпановщик (редактор связей)

Слайд 12Препроцессинг

Препроцессинг - обработка текстовых файлов утилитой препроцессора, который производит замены

текстов согласно правилам языка препроцессора C/C++. После препроцессора, тексты компилируемых

файлов, обычно, значительно вырастают в размерах, но теперь в них содержится все, что потребуется компилятору для создания объектного файла.
Основными элементами языка препроцессора являются директивы и макросимволы. Директивы вводятся с помощью символа "решетка" (#) в начале строки. Все, что следует за символом решетки и до конца строки считается директивой препроцессора. Директива препроцессора define вводит специальные макросимволы, которые могут быть использованы в следующих выражениях языка препроцессора. Директива #include подставляет вместо имени указанного за ней файла его содержимое.
РЕЗУЛЬТАТ –> файл .i или .ii

Слайд 13Ассемблирование
Ассемблирование не является обязательным процессом обработки файлов на языке C++.
По

своей сути это процесс трансляции выражений одного языка в другой.

Более конкретно, в данном случае, мы имеем на входе утилиты ассемблера файл с текстом на языке C++ (компиляционный лист), а на выходе мы получаем файл с текстом на языке Ассемблера. Язык Ассемблера это низкоуровневый язык который практически напрямую отображается на коды инструкций процессора целевой системы.
Ассемблирование не является обязательным процессом обработки файлов на языке C++. Это делают чтобы максимально объеденить разные языки в одну коллекцию, для каждого из языков реализуется свой транслятор на язык ассемблера и, при необходимости компилятор с языка ассемблера и линковщик делаются общими для всех языков коллекции.

РЕЗУЛЬТАТ –> файл .s

АссемблированиеАссемблирование не является обязательным процессом обработки файлов на языке C++.По своей сути это процесс трансляции выражений одного

Слайд 14Компиляция
Подразумевается компиляция с языка ассемблер
Результатом его работы является объектный файл

полученный на основе всего того текста, что был предоставлен в

компиляционном листе. Каждый объектный файл проекта соответствует одному компиляционному листу проекта.
Объектный файл — это бинарный файл, фактически состоящий из набора функций – машинных инструкций.

РЕЗУЛЬТАТ –> файл .о (по умолчанию имя файла = имени исходного)

КомпиляцияПодразумевается компиляция с языка ассемблерРезультатом его работы является объектный файл полученный на основе всего того текста, что

Слайд 15Линковка (компановка)
На этапе линковки выполняется объединение всех объектных файлов проекта, откомпилированных

по соответствующим компиляционным листам проекта в единую сущность. Это может

быть приложение, статическая или динамическая библиотека.
Реализуется утилитой ld.
Основная задача – настройка внешних ссылок объектных модулей.
Результатом является сконструированный из объектных модулей исполняемый бинарный файл, содержаoий программу в формате COFE (common Object File Format) или Elf (Exetutable and Lined Format).
По умолчанию исполняемый файл – a.out
Расширения .a и .so используются при создании статических и динамических библиотек.
Линковка (компановка)На этапе линковки выполняется объединение всех объектных файлов проекта, откомпилированных по соответствующим компиляционным листам проекта в

Слайд 16Результат компиляции
Результатом работы компилятора является перемещаемый объектный файл, а результатом

работы компоновщика — файл, готовый к исполнению.
Компоновщик выполняет двойную

роль:
физически объединяет указанные в списке связей файлы в один программный файл.
решает проблему внешних ссылок и обращений к памяти. Внешняя ссылка делается каждый раз, когда в коде одного файла упоминается код из другого файла.
Результат компиляцииРезультатом работы компилятора является перемещаемый объектный файл, а результатом работы компоновщика — файл, готовый к исполнению.

Слайд 17Запуск процесса компиляции
Чтобы откомпилировать исходный код C++, находящийся в файле

file.cc необходимо выполнить команду:
gcc file.cc
При этом программа выполнит все вышеуказанные

процессы друг за другом без явного участия программиста
Результат – a.out
Запуск процесса компиляцииЧтобы откомпилировать исходный код C++, находящийся в файле file.cc необходимо выполнить команду:gcc file.ccПри этом программа

Слайд 18Ключи g++
-E –S – Выполнить только препроцессинг или ассамблирование

Ключи g++-E –S – Выполнить только препроцессинг или ассамблирование

Слайд 19Библиотеки и заголовочные файлы
Библиотека — это «сборник» кода, который можно

многократно использовать в самых разных программах. Как правило, библиотека в

C++ состоит из двух частей:

Заголовочный файл, который объявляет функционал библиотеки.
Предварительно скомпилированный бинарный файл, содержащий реализацию функционала библиотеки.

Некоторые библиотеки могут быть разбиты на несколько файлов и/или иметь несколько заголовочных файлов.
Библиотеки и заголовочные файлыБиблиотека — это «сборник» кода, который можно многократно использовать в самых разных программах. Как

Слайд 20Библиотеки и заголовочные файлы

Библиотеки и заголовочные файлы

Слайд 21Заголовочные файлы
В программировании заголовочный файл (англ. header file) или подключаемый файл —

файл, содержимое которого автоматически добавляется препроцессором в исходный текст в

том месте, где располагается некоторая директива #include в Си).
Заголовочный файл в общем случае может содержать любые конструкции языка программирования, но на практике исполняемый код (за исключением inline-функций в C++) в заголовочные файлы не помещают.
По сложившейся традиции, в заголовочных файлах объявляют функции стандартной библиотеки Си и Си++.
Заголовочные файлыВ программировании заголовочный файл (англ. header file) или подключаемый файл — файл, содержимое которого автоматически добавляется препроцессором в

Слайд 22Как устроены библиотеки
Библиотека представляет собой собрание функций. В отличие от

объектных файлов в библио­течном файле хранится название каждой функции, объектный

код функции и информация, ка­сающаяся «перемещаемости» файла, необходимая для редактирования связей. Когда программа делает ссылку на функцию, содержащуюся в библиотеке, компоновщик отыскивает эту функцию и добавляет ее код к программе. Таким образом, к программе добавляются только те функции, которые действительно будут в ней использоваться.
Поскольку функции хранятся в библиотеке, то в исполняемый код программы войдут лишь действительно используемые в программе функции. (Если бы они входили в состав объект­ных файлов, программа была бы длиннее на несколько сот килобайт!)
Как устроены библиотекиБиблиотека представляет собой собрание функций. В отличие от объектных файлов в библио­течном файле хранится название

Слайд 23Зачем библиотеки представлены в виде объектного кода?
Библиотеки предварительно компилируют по

нескольким причинам.
их код редко меняется. Было бы напрасной тратой времени

повторно компилировать библиотеку каждый раз при её использовании в новой программе.
поскольку весь код предварительно скомпилирован в машинный язык, то это предотвращает получение доступа к исходному коду (и его изменение) сторонними лицами. Этот пунктик важен для предприятий/людей, которые не хотят, чтобы результат их труда (исходный код) был доступен всем (интеллектуальная собственность, все дела).
Зачем библиотеки представлены в виде объектного кода?Библиотеки предварительно компилируют по нескольким причинам.их код редко меняется. Было бы

Слайд 24Виды библиотек
Есть два типа библиотек: статические и динамические.
Статическая библиотека (или

ещё «архив») состоит из подпрограмм, которые непосредственно компилируются и линкуются

с вашей программой. При компиляции программы, которая использует статическую библиотеку, весь функционал статической библиотеки (тот, что использует ваша программа) становится частью вашего исполняемого файла. В Linux статически библиотеки имеют расширение .a (от «archive»).
Динамическая библиотека (или ещё «общая библиотека») состоит из подпрограмм, которые подгружаются в вашу программу во время её выполнения. При компиляции программы, которая использует динамическую библиотеку, эта библиотека не становится частью вашего исполняемого файла — она так и остаётся отдельным модулем. В Linux динамические библиотеки имеют расширение .so (от «shared object» = «общий объект»).
Виды библиотекЕсть два типа библиотек: статические и динамические.Статическая библиотека (или ещё «архив») состоит из подпрограмм, которые непосредственно

Слайд 25Преимущества и недостатки статических и динамических библиотек
Одним из преимуществ статических

библиотек является то, что вам нужно распространять всего лишь 1

файл (исполняемый файл), чтобы пользователи могли запустить и использовать вашу программу. Поскольку статические библиотеки становятся частью вашей программы, то вы можете использовать их подобно функционалу своей собственной программы. С другой стороны, поскольку копия библиотеки становится частью каждого вашего исполняемого файла, то это может привести к увеличению размера файла. Также, если вам нужно будет обновить статическую библиотеку, вам придётся перекомпилировать каждый исполняемый файл, который её использует.
Одним из преимуществ динамических библиотек является то, что разные программы могут совместно использовать одну копию динамической библиотеки, что значительно экономит используемое пространство. Ещё одним преимуществом динамической библиотеки является то, что её можно обновлять до более новой версии без перекомпиляции всех исполняемых файлов, которые её используют.
Преимущества и недостатки статических и динамических библиотекОдним из преимуществ статических библиотек является то, что вам нужно распространять

Слайд 26Где находятся заголовочные файлы и библиотеки
По умолчанию в директориях
/usr/include


/usr/lib

Где находятся заголовочные файлы и библиотекиПо умолчанию в директориях /usr/include /usr/lib

Слайд 27Практическое задние
Запустить программу, состоящую из трех файлов:
Основной
Функция 1
Функция 2,

зависящая от функции 1

Без использования заголовочных файлов и библиотек
С использованием

заголовочных файлов
С использованием статической библиотеки


Практическое задниеЗапустить программу, состоящую из трех файлов: ОсновнойФункция 1Функция 2, зависящая от функции 1Без использования заголовочных файлов

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика