Обобщение и сжатие данных

Содержание

Слайд 2

Создание класса

Создание класса

Слайд 3

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

После того как мы написали содержимое класса, мы сможем его использовать, создавая
переменные этого типа(объекты). Сам по себе класс ничего не делает, это просто тип данных, который мы создали.

Слайд 5

Как мы видим из предыдущего примера, задавать все значения вручную неудобно и

Как мы видим из предыдущего примера, задавать все значения вручную неудобно и
долго, и также для этого они должны быть Public, что нарушает суть ООП Поэтому для того чтобы задавать начальные значения существуют конструкторы

Слайд 7

Теперь с конструктором мы можем намного удобнее создавать объекты классов, сравните:

Вручную

С помощью

Теперь с конструктором мы можем намного удобнее создавать объекты классов, сравните: Вручную С помощью конструктора
конструктора

Слайд 8

Когда образуется сложная структура классов, то чтобы не переписывать все одни и

Когда образуется сложная структура классов, то чтобы не переписывать все одни и
те же вещи из одного класса в другой и как-то связать классы друг с другом, применяется наследование(потомок наследует все из класса родителя)

Слайд 10

И последнее из самого важного:

В более новых языках программирования(Java, C#,) отказались от

И последнее из самого важного: В более новых языках программирования(Java, C#,) отказались
наследования нескольких классов ради большей безопасности программ, и в дополнение к классам появились интерфейсы, которых можно наследовать сколько угодно, но они сами по себе не обладают никаким функционалом(в C++ их задачу выполняют виртуальные классы(virtual))
Интерфейсы позволяют контролировать, что класс умеет выполнять какую-то функцию, чтобы потом это проверять и использовать в программе

Слайд 11

Создали интерфейс, а потом унаследовали от него несколько классов

Создали интерфейс, а потом унаследовали от него несколько классов

Слайд 13

Теперь во избежание неоднозначности мы можем проверять объекты на наследование этого интерфейса

Теперь во избежание неоднозначности мы можем проверять объекты на наследование этого интерфейса
, или хранить любые такие объекты в переменной типа интерфейса(Messenger)

Слайд 15

Немного про сжатие данных

2 основных способа сжатия данных:
Кодирование нескольких одинаковых символов подряд

Немного про сжатие данных 2 основных способа сжатия данных: Кодирование нескольких одинаковых
с помощью счетчика повторений
AAAABBCAAAAAAAAAA->4A2BC10A
Замена символов, которые встречаются чаще других более короткими кодами

Слайд 16

Про второй способ:

Как вы знаете, в любом алфавите некоторые буквы или слова

Про второй способ: Как вы знаете, в любом алфавите некоторые буквы или
встречаются намного чаще, чем другие. А значит самые частые символы можно кодировать короткими кодами, а редкие длинными
Например, в коде символов ascii все символы кодируются 8 битным двоичным числом, буква “о”-числом 10101110, и буква “ё” числом 11110001, то есть одинаковой длины, хотя букву “о” мы пишем по статистике почти в 300 раз чаще, чем “ё”

Слайд 17

Тогда чтобы сжать любой текст на русском языке, мы могли бы изменить

Тогда чтобы сжать любой текст на русском языке, мы могли бы изменить
коды наших символов, и кодировать частую “о” коротким кодом 001, а редкий символ “ё” более длинным, например 000000000001
Но из-за того что “ё” почти не встречается в тексте, то и объем текста сильно уменьшится

Слайд 18

Сравните код ascii и наш сжимающий код на примере “ооооё”:

Код ascii: 1010111010101110101011101010111011110001
Наш

Сравните код ascii и наш сжимающий код на примере “ооооё”: Код ascii: 1010111010101110101011101010111011110001 Наш код: 001001001001000000000001
код: 001001001001000000000001

Слайд 19

И поподробнее про первый способ (замена подряд идущих символов или значений):

Так как числа

И поподробнее про первый способ (замена подряд идущих символов или значений): Так
тоже являются частью текста, то мы не можем просто так заменять AAAAA на 5A, ведь “5” тоже может встретиться в тексте, и мы не сможем понять что это, просто число или длина нашей последовательности
Значит нам нужно как-то обозначать, то что следующее число будет обозначать именно длину последовательности. Можно взять для этого какой-либо неиспользуемый символ, например |. Тогда при разархивации мы будем знать, что |5A это именно наша длина, но к сожалению немного увеличим объем заархивированного файла

Слайд 20

Также существуют алгоритмы сжатия с потерями, в основном для фотографий, звука и

Также существуют алгоритмы сжатия с потерями, в основном для фотографий, звука и
видео

Они сжимают данные так, чтобы изменения не были заметны для человеческих органов чувств, но при этом заметно изменяются в размере
Как пример это всеми используемые форматы JPEG, Djvu, MP3, Opus

Слайд 21

Сжатие с разной глубиной квантования цветоразностных сигналов

Сжатие с разной глубиной квантования цветоразностных сигналов

Слайд 22

Для сжатия с потерями существует неисчислимое количество разных алгоритмов, поэтому их рассматривать

Для сжатия с потерями существует неисчислимое количество разных алгоритмов, поэтому их рассматривать
слишком долго и сложно, посмотрим просто несколько примеров
Имя файла: Обобщение-и-сжатие-данных.pptx
Количество просмотров: 33
Количество скачиваний: 0