08 wip (+ abstracts buzzkill)

This commit is contained in:
Ivan I. Ovchinnikov 2023-05-09 23:34:17 +03:00
parent e1bda53276
commit 4d40dfaf14
10 changed files with 891 additions and 788 deletions

View File

@ -1,6 +1,6 @@
\documentclass[j-spec.tex]{subfiles} \documentclass[j-spec.tex]{subfiles}
\begin{document} \begin{document} \sloppy
\pagestyle{plain} \pagestyle{plain}
\tableofcontents \tableofcontents

View File

@ -1,6 +1,6 @@
\documentclass[j-spec.tex]{subfiles} \documentclass[j-spec.tex]{subfiles}
\begin{document} \begin{document} \sloppy
\setcounter{section}{1} \setcounter{section}{1}
\pagestyle{plain} \pagestyle{plain}
\tableofcontents \tableofcontents

View File

@ -1,10 +1,9 @@
\documentclass[j-spec.tex]{subfiles} \documentclass[j-spec.tex]{subfiles}
\begin{document} \begin{document} \sloppy
\setcounter{section}{2} \setcounter{section}{2}
\setlength{\columnsep}{22pt} \setlength{\columnsep}{22pt}
\pagestyle{plain} \pagestyle{plain}
\sloppy
\tableofcontents \tableofcontents
\section{Специализация: ООП} \section{Специализация: ООП}

View File

@ -1,10 +1,9 @@
\documentclass[j-spec.tex]{subfiles} \documentclass[j-spec.tex]{subfiles}
\begin{document} \begin{document} \sloppy
\setcounter{section}{3} \setcounter{section}{3}
\setlength{\columnsep}{22pt} \setlength{\columnsep}{22pt}
\pagestyle{plain} \pagestyle{plain}
\sloppy
\tableofcontents \tableofcontents
\section{Специализация: ООП и исключения} \section{Специализация: ООП и исключения}

View File

@ -1,10 +1,9 @@
\documentclass[j-spec.tex]{subfiles} \documentclass[j-spec.tex]{subfiles}
\begin{document} \begin{document} \sloppy
\setcounter{section}{4} \setcounter{section}{4}
\setlength{\columnsep}{22pt} \setlength{\columnsep}{22pt}
\pagestyle{plain} \pagestyle{plain}
\sloppy
\tableofcontents \tableofcontents
\section{Специализация: тонкости работы} \section{Специализация: тонкости работы}
@ -36,7 +35,7 @@
\subsubsection{MBR, GPT} \subsubsection{MBR, GPT}
ОС Linux, например, предоставляет возможность разбивки жесткого диска компьютера на отдельные разделы. Пользователи могут определить их границы по так называемым таблицам разделов. \textbf{Основная загрузочная запись (MBR)} и \textbf{таблица разделов GUID (GPT)} -- это два стиля формата разделов, которые позволяют компьютеру загружать операционную систему с жесткого диска, а также индексировать и упорядочивать данные. ОС Linux, например, предоставляет возможность разбивки жесткого диска компьютера на отдельные разделы. Пользователи могут определить их границы по так называемым таблицам разделов. \textbf{Основная загрузочная запись (MBR)} и \textbf{таблица разделов GUID (GPT)} -- это два стиля формата разделов, которые позволяют компьютеру загружать операционную систему с жесткого диска, а также индексировать и упорядочивать данные.
Основная загрузочная запись (MBR) -- устаревшая форма разделения загрузочного сектора, первый сектор диска, который содержит информацию о том, как разбит диск. Он также содержит загрузчик, который сообщает компьютеру, как загрузить ОС. Main Boot Record состоит из трех частей: Основная загрузочная запись (MBR) -- устаревшая форма разделения загрузочного сектора -- первый сектор диска, который содержит информацию о том, как разбит диск. Он также содержит загрузчик, который сообщает компьютеру, как загрузить ОС. Main Boot Record состоит из трех частей:
\begin{itemize} \begin{itemize}
\item Основной загрузчик -- MBR резервирует первые байты дискового пространства для основного загрузчика. Windows размещает здесь очень упрощенный загрузчик, в то время как другие ОС могут размещать более сложные многоступенчатые загрузчики. \item Основной загрузчик -- MBR резервирует первые байты дискового пространства для основного загрузчика. Windows размещает здесь очень упрощенный загрузчик, в то время как другие ОС могут размещать более сложные многоступенчатые загрузчики.
\item Таблица разделов диска -- таблица разделов диска находится в нулевом цилиндре, нулевой головке и первом секторе жёсткого диска. Она хранит информацию о том, как разбит диск. MBR выделяет 16 байт данных для каждой записи раздела и может выделить всего 64 байта. Таким образом, Main Boot Record может адресовать не более четырёх основных разделов или трёх основных раздела и один расширенный раздел. \item Таблица разделов диска -- таблица разделов диска находится в нулевом цилиндре, нулевой головке и первом секторе жёсткого диска. Она хранит информацию о том, как разбит диск. MBR выделяет 16 байт данных для каждой записи раздела и может выделить всего 64 байта. Таким образом, Main Boot Record может адресовать не более четырёх основных разделов или трёх основных раздела и один расширенный раздел.
@ -86,7 +85,7 @@ GPT:
\end{itemize} \end{itemize}
\subsubsection{Windows} \subsubsection{Windows}
Линейка файловых систем для Windows: какую роль они играют в работе системы и как они развивались. Линейка файловых систем для Windows -- роль в работе системы и этапы развития.
\textbf{FAT(16) File Allocation Table} \textbf{FAT(16) File Allocation Table}
Использовалась для MS-DOS 3.0, Windows 3.x, Windows 95, Windows 98, Windows NT/2000. Была разработана достаточно давно и предназначалась для работы с небольшими дисковыми и файловыми объемами, простой структурой каталогов. Таблица размещается в начале тома, причем хранятся две ее копии (в целях обеспечения большей устойчивости). Данная таблица используется операционной системой для поиска файла и определения его физического расположения на жестком диске. В случае повреждения и таблицы и ее копии чтение файлов операционной системой становится невозможно. Использовалась для MS-DOS 3.0, Windows 3.x, Windows 95, Windows 98, Windows NT/2000. Была разработана достаточно давно и предназначалась для работы с небольшими дисковыми и файловыми объемами, простой структурой каталогов. Таблица размещается в начале тома, причем хранятся две ее копии (в целях обеспечения большей устойчивости). Данная таблица используется операционной системой для поиска файла и определения его физического расположения на жестком диске. В случае повреждения и таблицы и ее копии чтение файлов операционной системой становится невозможно.
@ -329,7 +328,7 @@ if (Files.exists(file)) {
\subsection{Потоки ввода-вывода, пакет \code{java.io}} \subsection{Потоки ввода-вывода, пакет \code{java.io}}
Подавляющее большинство программ обменивается данными со внешним миром. Это делают любые сетевые приложения -- они передают и получают информацию от других компьютеров и специальных устройств, подключенных к сети. Можно таким же образом представлять обмен данными между устройствами внутри одной машины. Программа может считывать данные с клавиатуры и записывать их в файл, или, наоборот - считывать данные из файла и выводить их на экран. Таким образом, устройства, откуда может производиться считывание информации, могут быть самыми разнообразными файл, клавиатура, входящее сетевое соединение и т.д. То же касается и устройств вывода это может быть файл, экран монитора, принтер, исходящее сетевое соединение и т.п. В конечном счете, все данные в компьютерной системе в процессе обработки передаются от устройств ввода к устройствам вывода. Подавляющее большинство программ обменивается данными со внешним миром. Это делают любые сетевые приложения -- они передают и получают информацию от других компьютеров и специальных устройств, подключенных к сети. Можно таким же образом представлять обмен данными между устройствами внутри одной машины. Программа может считывать данные с клавиатуры и записывать их в файл, или, наоборот - считывать данные из файла и выводить их на экран. Таким образом, устройства, откуда может производиться считывание информации, могут быть самыми разнообразными файл, клавиатура, входящее сетевое соединение и т.д. То же касается и устройств вывода это может быть файл, экран монитора, принтер, исходящее сетевое соединение и т.п. В конечном счете, все данные в компьютерной системе в процессе обработки передаются от устройств ввода к устройствам вывода.
Реализация системы ввода/вывода осложняется не только широким спектром источников и получателей данных, но еще и различными форматами передачи информации. Ею можно обмениваться в двоичном представлении, символьном или текстовом, с применением некоторой кодировки (кодировок только для русского языка их более 4 типов), или передавать числа в различных представлениях. Доступ к данным может потребоваться как последовательный, так и произвольный. Зачастую для повышения производительности применяется буферизация. Реализация системы ввода/вывода осложняется не только широким спектром источников и получателей данных, но еще и различными форматами передачи информации. Ею можно обмениваться в двоичном представлении, символьном или текстовом, с применением некоторой кодировки (кодировок только для русского языка существует более четырёх типов), или передавать числа в различных представлениях. Доступ к данным может потребоваться как последовательный, так и произвольный. Зачастую для повышения производительности применяется буферизация.
\begin{frm} \info В Java для описания работы по вводу/выводу используется специальное понятие потока данных (stream). Поток данных это абстракция, физически никакие потоки в компьютере никуда не текут. \begin{frm} \info В Java для описания работы по вводу/выводу используется специальное понятие потока данных (stream). Поток данных это абстракция, физически никакие потоки в компьютере никуда не текут.
\end{frm} \end{frm}
@ -392,13 +391,13 @@ if (Files.exists(file)) {
\item \code{StringBufferInputStream} (deprecated). Иногда бывает удобно работать с текстовой строкой как с потоком байт. Для этого возможно воспользоваться классом \code{StringBufferInputStream}. При создании объекта этого класса необходимо передать конструктору объект \code{String}. \item \code{StringBufferInputStream} (deprecated). Иногда бывает удобно работать с текстовой строкой как с потоком байт. Для этого возможно воспользоваться классом \code{StringBufferInputStream}. При создании объекта этого класса необходимо передать конструктору объект \code{String}.
\item Класс \code{SequenceInputStream} объединяет поток данных из других двух и более входных потоков. Данные будут вычитываться последовательно -- сначала все данные из первого потока в списке, затем из второго, и так далее. Конец потока \code{SequenceInputStream} будет достигнут только тогда, когда будет достигнут конец потока, последнего в списке. \item Класс \code{SequenceInputStream} объединяет поток данных из других двух и более входных потоков. Данные будут вычитываться последовательно -- сначала все данные из первого потока в списке, затем из второго, и так далее. Конец потока \code{SequenceInputStream} будет достигнут только тогда, когда будет достигнут конец потока, последнего в списке.
\item FilterInputStream и FilterOutputStream и их наследники. Задачи, возникающие при вводе/выводе весьма разнообразны -- это может быть считывание байтов из файлов, объектов из файлов, объектов из массивов, буферизованное считывание строк из массивов и т.д. В такой ситуации решение с использованием простого наследования приводит к возникновению слишком большого числа подклассов. Более эффективно применение надстроек (в ООП этот шаблон называется адаптер). Надстройки -- наложение дополнительных объектов для получения новых свойств и функций. Таким образом, необходимо создать несколько дополнительных объектов -- адаптеров к классам ввода/вывода. В терминах \code{java.io} их называют фильтрами. \item FilterInputStream и FilterOutputStream и их наследники. Задачи, возникающие при вводе/выводе весьма разнообразны -- это может быть считывание байтов из файлов, объектов из файлов, объектов из массивов, буферизованное считывание строк из массивов и т.д. В такой ситуации решение с использованием простого наследования приводит к возникновению слишком большого числа подклассов. Более эффективно применение надстроек (в ООП этот шаблон называется адаптер). Надстройки -- наложение дополнительных объектов для получения новых свойств и функций. Таким образом, необходимо создать несколько дополнительных объектов -- адаптеров к классам ввода/вывода. В терминах \code{java.io} их называют фильтрами.
\item Класс \code{LineNumberInputStream} во время чтения данных производит подсчет, сколько строк было считано из потока. Номер строки, на которой в данный момент происходит чтение, можно узнать путем вызова метода \code{getLineNumber()}. Также можно и перейти к определенной строке вызовом метода \code{setLineNumber(int lineNumber)}. Этот класс практически разу объявили устаревшим и вместо него используется \code{LineNumberReader} с аналогичным функционалом. \item Класс \code{LineNumberInputStream} во время чтения данных производит подсчет, сколько строк было считано из потока. Номер строки, на которой в данный момент происходит чтение, можно узнать путем вызова метода \code{getLineNumber()}. Также можно и перейти к определенной строке вызовом метода \code{setLineNumber(int lineNumber)}. Этот класс практически сразу объявили устаревшим и вместо него используется \code{LineNumberReader} с аналогичным функционалом.
\item \code{PushBackInputStream}. Этот фильтр позволяет вернуть во входной поток считанные из него данные. Такое действие производится вызовом метода \code{unread()}. Понятно, что обеспечивается подобная функциональность за счет наличия в классе специального буфера -- массива байт, который хранит считанную информацию. \item \code{PushBackInputStream}. Этот фильтр позволяет вернуть во входной поток считанные из него данные. Такое действие производится вызовом метода \code{unread()}. Понятно, что обеспечивается подобная функциональность за счет наличия в классе специального буфера -- массива байт, который хранит считанную информацию.
\item PrintStream используется для конвертации и записи строк в байтовый поток. В нем определен метод \code{print()}, принимающий в качестве аргумента различные примитивные типы Java, а также тип \code{Object}. При вызове передаваемые данные будут сначала преобразованы в строку, после чего записаны в поток. Если возникает исключение, оно обрабатывается внутри метода \code{print()} и дальше не бросается (узнать, произошла ли ошибка, можно с помощью метода \code{checkError()}). Данный класс также считается устаревшим, и вместо него рекомендуется использовать \code{PrintWriter}, однако старый класс продолжает активно использоваться, поскольку статические поля \code{out} и \code{err} класса \code{System} имеют именно это тип. \item PrintStream используется для конвертации и записи строк в байтовый поток. В нем определен метод \code{print()}, принимающий в качестве аргумента различные примитивные типы Java, а также тип \code{Object}. При вызове передаваемые данные будут сначала преобразованы в строку, после чего записаны в поток. Если возникает исключение, оно обрабатывается внутри метода \code{print()} и дальше не бросается (узнать, произошла ли ошибка, можно с помощью метода \code{checkError()}). Данный класс также считается устаревшим, и вместо него рекомендуется использовать \code{PrintWriter}, однако старый класс продолжает активно использоваться, поскольку статические поля \code{out} и \code{err} класса \code{System} имеют именно это тип.
\end{itemize} \end{itemize}
\subsubsection{\code{BufferedInputStream} и \code{BufferedOutputStream}} \subsubsection{\code{BufferedInputStream} и \code{BufferedOutputStream}}
На практике при считывании с внешних устройств ввод данных почти всегда необходимо буферизировать. \code{BufferedInputStream} содержит массив байт, который служит буфером для считываемых данных. То есть, когда байты из потока считываются, либо пропускаются (методом \code{skip()}), сначала заполняется буферный массив, причём, из потока загружается сразу много байт, чтобы не требовалось обращаться к нему при каждой операции \code{read()} или \code{skip()}. \code{BufferedOutputStream} предоставляет возможность производить многократную запись небольших блоков данных без обращения к устройству вывода при записи каждого из них. Сначала данные записываются во внутренний буфер. Непосредственное обращение к устройству вывода и, соответственно, запись в него, произойдет, когда буфер заполнится. Инициировать передачу содержимого буфера на устройство вывода можно и явным образом, вызвав метод \code{flush()}. Для наглядности заполним небольшой файл данными, буквально 10 миллионов символов. На практике при считывании с внешних устройств ввод данных почти всегда необходимо буферизировать. \code{BufferedInputStream} содержит массив байт, который служит буфером для считываемых данных. То есть, когда байты из потока считываются, либо пропускаются (методом \code{skip()}), сначала заполняется буферный массив, причём, из потока загружается сразу много байт, чтобы не требовалось обращаться к нему при каждой операции \code{read()} или \code{skip()}. \code{BufferedOutputStream} предоставляет возможность производить многократную запись небольших блоков данных без обращения к устройству вывода при записи каждого из них. Сначала данные записываются во внутренний буфер. Непосредственное обращение к устройству вывода и, соответственно, запись в него, произойдет, когда буфер заполнится. Инициировать передачу содержимого буфера на устройство вывода можно и явным образом, вызвав метод \code{flush()}. Для наглядности заполним небольшой файл данными, буквально, миллион символов.
\begin{lstlisting}[language=Java,style=JCodeStyle,caption={Сравнение простого и буферизующего потоков (шаг 1)}] \begin{lstlisting}[language=Java,style=JCodeStyle,caption={Сравнение простого и буферизующего потоков (шаг 1)}]
String fileName = "test.txt"; String fileName = "test.txt";
@ -589,7 +588,7 @@ try (RandomAccessFile catFile = new RandomAccessFile("cat.txt", "rw")) {
} catch (IOException e) { e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); }
\end{lstlisting} \end{lstlisting}
Подготовив всё необходимое приложение прочитало данные в буфер, сохранив число прочитанных байт, а затем прочитанные байты посимвольно были выведены в консоль. Для чтения данных из файла используется файловый канал. Объект файлового канала может быть создан только вызовом метода \code{getChannel()} для файлового объекта, поскольку нельзя напрямую создать объект файлового канала. При этом, \code{FileChannel} нельзя переключить в неблокирующий режим. Подготовив всё необходимое, приложение прочитало данные в буфер, сохранив число прочитанных байт, а затем прочитанные байты посимвольно были выведены в консоль. Для чтения данных из файла используется файловый канал. Объект файлового канала может быть создан только вызовом метода \code{getChannel()} для файлового объекта, поскольку нельзя напрямую создать объект файлового канала. При этом, \code{FileChannel} нельзя переключить в неблокирующий режим.
\subsection{String} \subsection{String}
Класс String отвечает за создание строк, состоящих из символов. Если быть точнее, заглянув в реализацию и посмотрев способ их хранения, то строки (до Java 9) представляют собой массив символов Класс String отвечает за создание строк, состоящих из символов. Если быть точнее, заглянув в реализацию и посмотрев способ их хранения, то строки (до Java 9) представляют собой массив символов

208
pics/jd-03-nowild.svg Normal file
View File

@ -0,0 +1,208 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="210mm"
height="297mm"
viewBox="0 0 210 297"
version="1.1"
id="svg5"
inkscape:version="1.2.1 (9c6d41e4, 2022-07-14)"
sodipodi:docname="jd-03-nowild.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="true"
inkscape:zoom="3.0078963"
inkscape:cx="432.02952"
inkscape:cy="80.122443"
inkscape:window-width="1534"
inkscape:window-height="900"
inkscape:window-x="136"
inkscape:window-y="25"
inkscape:window-maximized="0"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid1049" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:label="Слой 1"
inkscape:groupmode="layer"
id="layer1">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="39.450432"
y="14.09983"
id="text1468"><tspan
sodipodi:role="line"
id="tspan1466"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="39.450432"
y="14.09983">Object</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="39.341774"
y="28.316776"
id="text1522"><tspan
sodipodi:role="line"
id="tspan1520"
style="stroke-width:0.265"
x="39.341774"
y="28.316776">Number</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="4.9212494"
y="24.683163"
id="text1526"><tspan
sodipodi:role="line"
id="tspan1524"
style="stroke-width:0.265"
x="4.9212494"
y="24.683163">String</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="66.066811"
y="28.311836"
id="text1530"><tspan
sodipodi:role="line"
id="tspan1528"
style="stroke-width:0.265"
x="66.066811"
y="28.311836">Animal</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="15.578666"
y="41.286285"
id="text1692"><tspan
sodipodi:role="line"
id="tspan1690"
style="stroke-width:0.265"
x="15.578666"
y="41.286285">Integer</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="35.323639"
y="41.861324"
id="text1696"><tspan
sodipodi:role="line"
id="tspan1694"
style="stroke-width:0.265"
x="35.323639"
y="41.861324">Double</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="52.338814"
y="42.269127"
id="text1700"><tspan
sodipodi:role="line"
id="tspan1698"
style="stroke-width:0.265"
x="52.338814"
y="42.269127">Float</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="74.083328"
y="41.605209"
id="text1704"><tspan
sodipodi:role="line"
id="tspan1702"
style="stroke-width:0.265"
x="74.083328"
y="41.605209">Cat</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="87.3125"
y="41.605209"
id="text1708"><tspan
sodipodi:role="line"
id="tspan1706"
style="stroke-width:0.265"
x="87.3125"
y="41.605209">Dog</tspan></text>
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="M 37.041667,17.79271 23.8125,21.166667"
id="path1764"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 47.625,17.79271 v 5.291666"
id="path1766" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 60.854171,17.79271 13.22916,5.291666"
id="path1768" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="M 42.333333,31.021876 23.8125,36.313543"
id="path1770" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 47.625,31.021876 -5.291667,5.291667"
id="path1772" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 52.916671,31.021876 7.9375,5.291667"
id="path1774" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 74.083331,31.021876 2.64584,5.291667"
id="path1776" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 82.020831,31.021876 10.58333,5.291667"
id="path1778" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.61897px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.247833;stroke-linecap:round;stroke-opacity:1"
x="100.83823"
y="13.117829"
id="text1782"><tspan
sodipodi:role="line"
id="tspan1780"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.247834"
x="100.83823"
y="13.117829">Box &lt;Number&gt;</tspan></text>
<ellipse
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-dasharray:1.06, 2.11999;stroke-dashoffset:0;stroke-opacity:1"
id="path1836"
ry="6.6145844"
rx="15.875"
cy="26.458334"
cx="46.302082" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
x="32.806217"
y="27.721983"
id="text1936"><tspan
sodipodi:role="line"
id="tspan1934"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-dasharray:none"
x="32.806217"
y="27.721983">?</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.1 KiB

208
pics/jd-03-wildext.svg Normal file
View File

@ -0,0 +1,208 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="210mm"
height="297mm"
viewBox="0 0 210 297"
version="1.1"
id="svg5"
inkscape:version="1.2.1 (9c6d41e4, 2022-07-14)"
sodipodi:docname="jd-03-wildext.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="true"
inkscape:zoom="3.0078963"
inkscape:cx="166.72782"
inkscape:cy="176.53534"
inkscape:window-width="1534"
inkscape:window-height="900"
inkscape:window-x="136"
inkscape:window-y="25"
inkscape:window-maximized="0"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid1049" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:label="Слой 1"
inkscape:groupmode="layer"
id="layer1">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="39.450432"
y="14.09983"
id="text1468"><tspan
sodipodi:role="line"
id="tspan1466"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="39.450432"
y="14.09983">Object</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="39.341774"
y="28.316776"
id="text1522"><tspan
sodipodi:role="line"
id="tspan1520"
style="stroke-width:0.265"
x="39.341774"
y="28.316776">Number</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="4.9212494"
y="24.683163"
id="text1526"><tspan
sodipodi:role="line"
id="tspan1524"
style="stroke-width:0.265"
x="4.9212494"
y="24.683163">String</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="66.066811"
y="28.311836"
id="text1530"><tspan
sodipodi:role="line"
id="tspan1528"
style="stroke-width:0.265"
x="66.066811"
y="28.311836">Animal</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="15.578666"
y="41.286285"
id="text1692"><tspan
sodipodi:role="line"
id="tspan1690"
style="stroke-width:0.265"
x="15.578666"
y="41.286285">Integer</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="35.323639"
y="41.861324"
id="text1696"><tspan
sodipodi:role="line"
id="tspan1694"
style="stroke-width:0.265"
x="35.323639"
y="41.861324">Double</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="52.338814"
y="42.269127"
id="text1700"><tspan
sodipodi:role="line"
id="tspan1698"
style="stroke-width:0.265"
x="52.338814"
y="42.269127">Float</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="74.083328"
y="41.605209"
id="text1704"><tspan
sodipodi:role="line"
id="tspan1702"
style="stroke-width:0.265"
x="74.083328"
y="41.605209">Cat</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="87.3125"
y="41.605209"
id="text1708"><tspan
sodipodi:role="line"
id="tspan1706"
style="stroke-width:0.265"
x="87.3125"
y="41.605209">Dog</tspan></text>
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="M 37.041667,17.79271 23.8125,21.166667"
id="path1764"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 47.625,17.79271 v 5.291666"
id="path1766" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 60.854171,17.79271 13.22916,5.291666"
id="path1768" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="M 42.333333,31.021876 23.8125,36.313543"
id="path1770" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 47.625,31.021876 -5.291667,5.291667"
id="path1772" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 52.916671,31.021876 7.9375,5.291667"
id="path1774" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 74.083331,31.021876 2.64584,5.291667"
id="path1776" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 82.020831,31.021876 10.58333,5.291667"
id="path1778" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.61897px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.247833;stroke-linecap:round;stroke-opacity:1"
x="100.83823"
y="13.117829"
id="text1782"><tspan
sodipodi:role="line"
id="tspan1780"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.247834"
x="100.83823"
y="13.117829">Box &lt;? extends Number&gt;</tspan></text>
<ellipse
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-dasharray:1.06, 2.11999;stroke-dashoffset:0;stroke-opacity:1"
id="path1836"
ry="13.229168"
rx="29.104168"
cy="37.041668"
cx="39.6875" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
x="26.458332"
y="31.75"
id="text1936"><tspan
sodipodi:role="line"
id="tspan1934"
style="stroke-width:0.265;stroke-dasharray:none;fill:#000000;fill-opacity:1;stroke:none"
x="26.458332"
y="31.75">?</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.1 KiB

88
pics/jd-03-wildparent.svg Normal file
View File

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="210mm"
height="297mm"
viewBox="0 0 210 297"
version="1.1"
id="svg5"
inkscape:version="1.2.1 (9c6d41e4, 2022-07-14)"
sodipodi:docname="jd-03-wildparent.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="true"
inkscape:zoom="3.1987347"
inkscape:cx="182.41588"
inkscape:cy="117.54648"
inkscape:window-width="1039"
inkscape:window-height="900"
inkscape:window-x="631"
inkscape:window-y="25"
inkscape:window-maximized="0"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid1049" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:label="Слой 1"
inkscape:groupmode="layer"
id="layer1">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.61897px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.247833;stroke-linecap:round;stroke-opacity:1"
x="39.6875"
y="10.583333"
id="text1782"><tspan
sodipodi:role="line"
id="tspan1780"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.247834"
x="39.6875"
y="10.583333">Box &lt;?&gt;</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.61897px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.247833;stroke-linecap:round;stroke-opacity:1"
x="27.319353"
y="21.111238"
id="text1782-9"><tspan
sodipodi:role="line"
id="tspan1780-0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.247834"
x="27.319353"
y="21.111238">Box &lt;Cat&gt;</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.61897px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.247833;stroke-linecap:round;stroke-opacity:1"
x="57.746437"
y="21.111238"
id="text1782-1"><tspan
sodipodi:role="line"
id="tspan1780-6"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.247834"
x="57.746437"
y="21.111238">Box &lt;Animal&gt;</tspan></text>
<path
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 43.656249,11.90625 -6.614583,5.291666"
id="path11608" />
<path
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 55.562499,11.90625 9.260417,5.291666"
id="path11610" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

208
pics/jd-03-wildsup.svg Normal file
View File

@ -0,0 +1,208 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="210mm"
height="297mm"
viewBox="0 0 210 297"
version="1.1"
id="svg5"
inkscape:version="1.2.1 (9c6d41e4, 2022-07-14)"
sodipodi:docname="jd-03-wildsup.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="true"
inkscape:zoom="3.0078963"
inkscape:cx="197.9789"
inkscape:cy="117.35777"
inkscape:window-width="1534"
inkscape:window-height="900"
inkscape:window-x="136"
inkscape:window-y="25"
inkscape:window-maximized="0"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid1049" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:label="Слой 1"
inkscape:groupmode="layer"
id="layer1">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="39.450432"
y="14.09983"
id="text1468"><tspan
sodipodi:role="line"
id="tspan1466"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265"
x="39.450432"
y="14.09983">Object</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="39.341774"
y="28.316776"
id="text1522"><tspan
sodipodi:role="line"
id="tspan1520"
style="stroke-width:0.265"
x="39.341774"
y="28.316776">Number</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="4.9212494"
y="24.683163"
id="text1526"><tspan
sodipodi:role="line"
id="tspan1524"
style="stroke-width:0.265"
x="4.9212494"
y="24.683163">String</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="66.066811"
y="28.311836"
id="text1530"><tspan
sodipodi:role="line"
id="tspan1528"
style="stroke-width:0.265"
x="66.066811"
y="28.311836">Animal</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="15.578666"
y="41.286285"
id="text1692"><tspan
sodipodi:role="line"
id="tspan1690"
style="stroke-width:0.265"
x="15.578666"
y="41.286285">Integer</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="35.323639"
y="41.861324"
id="text1696"><tspan
sodipodi:role="line"
id="tspan1694"
style="stroke-width:0.265"
x="35.323639"
y="41.861324">Double</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="52.338814"
y="42.269127"
id="text1700"><tspan
sodipodi:role="line"
id="tspan1698"
style="stroke-width:0.265"
x="52.338814"
y="42.269127">Float</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="74.083328"
y="41.605209"
id="text1704"><tspan
sodipodi:role="line"
id="tspan1702"
style="stroke-width:0.265"
x="74.083328"
y="41.605209">Cat</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round"
x="87.3125"
y="41.605209"
id="text1708"><tspan
sodipodi:role="line"
id="tspan1706"
style="stroke-width:0.265"
x="87.3125"
y="41.605209">Dog</tspan></text>
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="M 37.041667,17.79271 23.8125,21.166667"
id="path1764"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 47.625,17.79271 v 5.291666"
id="path1766" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 60.854171,17.79271 13.22916,5.291666"
id="path1768" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="M 42.333333,31.021876 23.8125,36.313543"
id="path1770" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 47.625,31.021876 -5.291667,5.291667"
id="path1772" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 52.916671,31.021876 7.9375,5.291667"
id="path1774" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 74.083331,31.021876 2.64584,5.291667"
id="path1776" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-opacity:1"
d="m 82.020831,31.021876 10.58333,5.291667"
id="path1778" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.61897px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.247833;stroke-linecap:round;stroke-opacity:1"
x="100.83823"
y="13.117829"
id="text1782"><tspan
sodipodi:role="line"
id="tspan1780"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.247834"
x="100.83823"
y="13.117829">Box &lt;? super Number&gt;</tspan></text>
<ellipse
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264999;stroke-linecap:round;stroke-dasharray:1.06, 2.11999;stroke-dashoffset:0;stroke-opacity:1"
id="path1836"
ry="15.875001"
rx="11.906249"
cy="19.84375"
cx="47.625" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.9389px;font-family:'PT Mono';-inkscape-font-specification:'PT Mono';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264999;stroke-linecap:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
x="39.420799"
y="21.107399"
id="text1936"><tspan
sodipodi:role="line"
id="tspan1934"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-dasharray:none"
x="39.420799"
y="21.107399">?</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.1 KiB

File diff suppressed because it is too large Load Diff