03 start and svg
This commit is contained in:
parent
fbf148ee14
commit
3199161d12
BIN
build/jc3-03.pdf
BIN
build/jc3-03.pdf
Binary file not shown.
203
jc3-03.tex
203
jc3-03.tex
|
@ -1,31 +1,85 @@
|
||||||
\documentclass[j-spec.tex]{subfiles}
|
\documentclass[j-spec.tex]{subfiles}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%\setcounter{tocdepth}{3}
|
\pagestyle{plain}
|
||||||
|
\sloppy
|
||||||
\tableofcontents
|
\tableofcontents
|
||||||
\section{Специализация: данные и функции}
|
\section{Специализация: ООП}
|
||||||
\subsection{В предыдущем разделе}
|
\subsection{В предыдущем разделе}
|
||||||
Будет рассмотрен базовый функционал языка, то есть основная встроенная функциональность, такая как математические операторы, условия, циклы, бинарные операторы. Далее способы хранения и представления данных в Java, и в конце способы манипуляции данными, то есть функции (в терминах языка называющиеся методами).
|
Будет рассмотрен базовый функционал языка, то есть основная встроенная функциональность, такая как математические операторы, условия, циклы, бинарные операторы. Далее способы хранения и представления данных в Java, и в конце способы манипуляции данными, то есть функции (в терминах языка называющиеся методами).
|
||||||
|
|
||||||
\subsection{В этом разделе}
|
\subsection{В этом разделе}
|
||||||
Разберём такие основополагающих в Java вещи, как классы и объекты, а также с тем, как применять на практике основные принципы ООП: наследование, полиморфизм и инкапсуляцию. Дополнительно рассмотрим устройство памяти в джава.
|
Разберём такие основополагающих в Java вещи, как классы и объекты, а также с тем, как применять на практике основные принципы ООП: наследование, полиморфизм и инкапсуляцию. Дополнительно рассмотрим устройство памяти в джава.
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \nom{класс}{- }
|
\item \nom{Класс}{определяет форму и сущность объекта и является логической конструкцией, на основе которой построен весь язык Java. Определяет новый тип данных};
|
||||||
\item \nom{объект}{- }
|
\item \nom{Объект}{конкретный экземпляр класса, созданный в программе};
|
||||||
\item \nom{статика}{- }
|
\item \nom{Статика}{(статический контекст) - };
|
||||||
\item \nom{стек}{- }
|
\item \nom{Стек}{- };
|
||||||
\item \nom{куча}{- }
|
\item \nom{Куча}{- };
|
||||||
\item \nom{сборщик мусора}{- }
|
\item \nom{Сборщик мусора}{- };
|
||||||
\item \nom{конструктор}{- }
|
\item \nom{Конструктор}{- };
|
||||||
\item \nom{вложенный класс}{- }
|
\item \nom{Вложенный класс}{- };
|
||||||
\item \nom{внутренний класс}{- }
|
\item \nom{Внутренний класс}{- };
|
||||||
\item \nom{инкапсуляция}{- }
|
\item \nom{Инкапсуляция}{- };
|
||||||
\item \nom{наследование}{- }
|
\item \nom{Наследование}{- };
|
||||||
\item \nom{полиморфизм }{- }
|
\item \nom{Полиморфизм }{- };
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsection{Классы и объекты, поля и методы, статика}
|
||||||
|
\subsubsection{Классы}
|
||||||
|
Что такое класс? С точки зрения ООП, \textbf{класс} определяет форму и сущность объекта и является логической конструкцией, на основе которой построен весь язык Java.
|
||||||
|
|
||||||
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
\begin{frm}\info
|
||||||
|
Наиболее важная особенность класса состоит в том, что он определяет новый тип данных, которым можно воспользоваться для создания объектов этого типа
|
||||||
|
\end{frm}
|
||||||
|
|
||||||
|
То есть класс — это шаблон (чертёж), по которому создаются объекты (экземпляры класса). Для определения формы и сущности класса указываются данные, которые он должен содержать, а также код, воздействующий на эти данные. Создаем мы свои классы, когда у нас не хватает уже созданных.
|
||||||
|
|
||||||
|
Например, если мы хотим работать в нашем приложении с документами, то необходимо для начала объяснить приложению, что такое документ, описать его в виде класса (чертежа) \code{Document}. Указать, какие у него должны быть свойства: название, содержание, количество страниц, информация о том, кем он подписан и т.п. В этом же классе мы обычно описываем, что можно делать с документами: печатать в консоль, подписывать, изменять содержание, название и т.д. Результатом такого описания и будет класс \code{Document}. Однако, это по-прежнему всего лишь чертеж хранимых данных (состояний) и способы взаимодействия с этими данными.
|
||||||
|
|
||||||
|
Если нам нужны конкретные документы, а нам они обязательно нужны, то необходимо создавать \textbf{объекты}: документ №1, документ №2, документ №3. Все эти документы будут иметь одну и ту же структуру (описанные нами название, содержание, ...), с ними можно выполнять одни и те же описанные нами действия (печатать, подписать, ...), но наполнение будет разным, например, в первом документе содержится приказ о назначении работника на должность, во втором, о выдаче премии отделу разработки и т.д.
|
||||||
|
|
||||||
|
Начнём с малого, напишем свой первый класс. Представим, что необходимо работать в приложении с котами. Java ничего не знает о том, что такое коты, поэтому необходимо создать новый класс (тип данных), и объяснить что такое кот. Создадим новый файл, для простоты в том же пакете, что и главный класс программы.
|
||||||
|
|
||||||
|
\begin{figure}[H]
|
||||||
|
\begin{forest}
|
||||||
|
for tree={
|
||||||
|
font=\ttfamily, grow'=0, child anchor=west,
|
||||||
|
parent anchor=south, anchor=west, calign=first,
|
||||||
|
edge path={
|
||||||
|
\noexpand\path [draw, \forestoption{edge}]
|
||||||
|
(!u.south west) +(7.5pt,0) |- node[fill,inner sep=1.5pt]
|
||||||
|
{} (.child anchor)\forestoption{edge label};
|
||||||
|
}, before typesetting nodes={
|
||||||
|
if n=1 {insert before={[,phantom]}} {} },
|
||||||
|
fit=band, before computing xy={l=20pt},
|
||||||
|
}
|
||||||
|
[Sample
|
||||||
|
[src
|
||||||
|
[ru
|
||||||
|
[gb
|
||||||
|
[jcore
|
||||||
|
[sample
|
||||||
|
[Main.java]
|
||||||
|
[Cat.java]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
[out
|
||||||
|
]
|
||||||
|
[README.md]
|
||||||
|
]
|
||||||
|
\end{forest}
|
||||||
|
\caption{Структура проекта}
|
||||||
|
\label{pic:simple-tree}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\subsubsection{Поля класса}
|
||||||
|
Начнем описывать в классе \code{Cat} так называемый API кота. Как изестно, имя класса должно совпадать с именем файла, в котором он объявлен, т.е. класс \code{Cat} должен находиться в файле \code{Cat.java}. Пусть у котов есть три свойства: \code{name} (кличка), \code{color} (цвет) и \code{age} (возраст); совокупность этих свойств называется состоянием, и коты пока ничего не умеют делать. Класс \code{Cat} будет иметь вид, представленный в листинге \hrf{lst:class-simple}. Свойства класса, записанные таким образом, в виде переменных, называются \textbf{полями}.
|
||||||
|
|
||||||
|
\begin{lstlisting}[language=Java,style=JCodeStyle,caption={Структура кота в программе},label={lst:class-simple}]
|
||||||
package ru.gb.jcore;
|
package ru.gb.jcore;
|
||||||
|
|
||||||
public class Cat {
|
public class Cat {
|
||||||
|
@ -35,12 +89,25 @@ public class Cat {
|
||||||
}
|
}
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
|
||||||
|
\begin{frm} \excl
|
||||||
|
Для новичка важно не запутаться, класс кота мы описали в отдельном файле, а создавать объекты и совершать манипуляции следует в основном классе программы, не может же кот назначить имя сам себе.
|
||||||
|
\end{frm}
|
||||||
|
|
||||||
|
Мы рассказали программе, что такое коты, теперь если мы хотим создать в нашем приложении конкретного кота, следует воспользоваться оператором \code{new Cat();} в основном классе программы. Более подробно разберём, что происходит в этой строке, чуть позже, пока же нам достаточно знать, что мы создали объект типа \code{Cat} (экземпляр класса \code{Cat}), и запомнить эту конструкцию. Для того чтобы с ним (экземпляром) работать, можем положить его в переменную, которой дать идентификатор \code{cat1}.
|
||||||
|
|
||||||
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||||||
Сat cat0;
|
Сat cat0;
|
||||||
cat0 = new Cat();
|
cat0 = new Cat();
|
||||||
Cat cat1 = new Cat();
|
Cat cat1 = new Cat();
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
|
||||||
|
В листинге выше можно увидеть все три операции (объявление, присваивание и инициализацию) и становится понятно, как можно создавать объекты. Также известно, что в переменной не лежит сам объект, а только ссылка на него. Объект \code{cat1} создан по чертежу \code{Cat}, это значит, что у него есть поля \code{name}, \code{color}, \code{age}, с которыми можно работать: получать или изменять их значения.
|
||||||
|
|
||||||
|
\begin{frm} \info
|
||||||
|
Для доступа к полям объекта используется оператор точка, который связывает имя объекта с именем поля. Например, чтобы присвоить полю \code{color} объекта \code{cat1} значение «Белый», нужно выполнить код \code{cat1.color = "Белый"};
|
||||||
|
\end{frm}
|
||||||
|
|
||||||
|
Операция «точка» служит для доступа к полям и методам объекта по его имени. Мы уже использовали оператор «точка» для доступа к полю с длиной массива, например. Рассмотрим пример консольного приложения, работающего с объектами класса \code{Cat}. Создадим двух котов, один будет белым Барсиком 4х лет, второй чёрным Мурзиком шести лет, и просто выведем информацию о них в терминал.
|
||||||
|
|
||||||
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||||||
package ru.gb.jcore;
|
package ru.gb.jcore;
|
||||||
|
@ -58,19 +125,64 @@ public class Main{
|
||||||
cat2.color = "Black";
|
cat2.color = "Black";
|
||||||
cat2.age = 6;
|
cat2.age = 6;
|
||||||
|
|
||||||
System.out.println("Cat1 named: " + cat1.name + " is " + cat1.color + " has age: " + cat1.age);
|
System.out.println("Cat1 named: " + cat1.name +
|
||||||
System.out.println("Cat2 named: " + cat2.name + " is " + cat2.color + " has age: " + cat2.age);
|
" is " + cat1.color +
|
||||||
|
" has age: " + cat1.age);
|
||||||
|
System.out.println("Cat2 named: " + cat2.name +
|
||||||
|
" is " + cat2.color +
|
||||||
|
" has age: " + cat2.age);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
|
||||||
|
в результате работы программы в консоли появятся следующие строки:
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
Cat1 named: Barsik is White has age: 4
|
Cat1 named: Barsik is White has age: 4
|
||||||
Cat2 named: Murzik is Black has age: 6
|
Cat2 named: Murzik is Black has age: 6
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
|
Вначале мы создали два объекта типа \code{Cat}: \code{cat1} и \code{cat2}, соответственно, они имеют одинаковый набор полей \code{name}, \code{color}, \code{age}. Почему? Потому что они принадлежат одному классу, созданы по одному шаблону. Объекты всегда «знают», какого они класса. Однако каждому из них в эти поля записаны разные значения. Как видно из результата печати в консоли, изменение значения полей одного объекта, никак не влияет на значения полей другого объекта. Данные объектов \code{cat1} и \code{cat2} изолированы друг от друга. А значит мы делаем вывод о том, поля хранятся в классе, а значения полей хранятся в объектах. Логическая структура, демонстрирующая отношения объектов и классов, в том числе в части хранения полей и их значений показана на рис. \hrf{pic:class-obj-fields}.
|
||||||
|
|
||||||
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
\def\svgscale{0.42}
|
||||||
|
\fontsize{6}{1}\selectfont
|
||||||
|
\input{pics/jc-03-class-obj-fields.svg}
|
||||||
|
\caption{Логическая структура отношения класс-объект}
|
||||||
|
\label{pic:class-obj-fields}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\subsubsection{Объекты}
|
||||||
|
Разобравшись с тем, как создавать новые типы данных (классы) и мельком посмотрев, как создаются объекты, нужно подробнее разобрать, как создавать объекты, и что при этом происходит. Создание объекта как любого ссылочного типа данных проходит в два этапа. Как и в случае с уже известными нам массивами.
|
||||||
|
\begin{itemize}
|
||||||
|
\item Сначала создается переменная, имеющая интересующий нас тип, в неё возможно записать ссылку на объект;
|
||||||
|
\item затем необходимо выделить память под объект;
|
||||||
|
\item создать и положить объект в выделенную часть памяти;
|
||||||
|
\item и сохранить ссылку на этот объект в памяти - в нашу переменную.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Для непосредственного создания объекта применяется оператор \code{new}, который динамически резервирует память под объект и возвращает ссылку на него, в общих чертах эта ссылка представляет собой адрес объекта в памяти, зарезервированной оператором \code{new}.
|
||||||
|
|
||||||
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||||||
Cat cat1 = new Cat();
|
Сat cat1; // cat1 = null;
|
||||||
|
cat1 = new Cat();
|
||||||
|
Cat cat2 = new Cat();
|
||||||
|
\end{lstlisting}
|
||||||
|
|
||||||
|
В первой строке кода переменная \code{cat1} объявляется как ссылка на объект типа \code{Cat} и пока ещё не ссылается на конкретный объект (первоначально значение переменной \code{cat1} равно \code{null}). В следующей строке выделяется память для объекта типа \code{Cat}, и в переменную \code{cat1} сохраняется ссылка на него. После выполнения второй строки кода переменную \code{cat1} можно использовать так, как если бы она была объектом типа \code{Cat}. Обычно новый объект создается в одну строку, то есть инициализируется.
|
||||||
|
|
||||||
|
\subsubsection{Оператор \code{new}}
|
||||||
|
|
||||||
|
\begin{frm}\info
|
||||||
|
[квалификаторы] ИмяКласса имяПеременной = \textbf{\code{new}} ИмяКласса();
|
||||||
|
\end{frm}
|
||||||
|
|
||||||
|
Оператор \code{new} динамически выделяет память для нового объекта, общая форма применения этого оператора имеет вид как на врезке выше, но на самом деле справа - не имя класса, конструкция ИмяКласса() в правой части выполняет вызов конструктора данного класса, который подготавливает вновь создаваемый объект к работе.
|
||||||
|
|
||||||
|
Именно от количества применений оператора \code{new} будет зависеть, сколько именно объектов будет создано в программе.
|
||||||
|
|
||||||
|
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||||||
|
Cat cat1 = new Cat();
|
||||||
Cat cat2 = cat1;
|
Cat cat2 = cat1;
|
||||||
|
|
||||||
cat1.name = "Barsik";
|
cat1.name = "Barsik";
|
||||||
|
@ -81,9 +193,59 @@ Cat cat1 = new Cat();
|
||||||
cat2.color = "Black";
|
cat2.color = "Black";
|
||||||
cat2.age = 6;
|
cat2.age = 6;
|
||||||
|
|
||||||
System.out.println("Cat1 named: " + cat1.name + " is " + cat1.color + " has age: " + cat1.age);
|
System.out.println("Cat1 named: " + cat1.name +
|
||||||
System.out.println("Cat2 named: " + cat2.name + " is " + cat2.color + " has age: " + cat2.age);
|
" is " + cat1.color +
|
||||||
|
" has age: " + cat1.age);
|
||||||
|
System.out.println("Cat2 named: " + cat2.name +
|
||||||
|
" is " + cat2.color +
|
||||||
|
" has age: " + cat2.age);
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
|
||||||
|
На первый взгляд может показаться, что переменной \code{cat2} присваивается ссылка на копию объекта \code{cat1}, т.е. переменные \code{cat1} и \code{cat2} будут ссылаться на разные объекты в памяти. Но это не так. На самом деле \code{cat1} и \code{cat2} будут ссылаться на один и тот же объект. Присваивание переменной \code{cat1} значения переменной \code{cat2} не привело к выделению области памяти или копированию объекта, лишь к тому, что переменная \code{cat2} содержит ссылку на тот же объект, что и переменная \code{cat1}. Это явление дополнительно подчёркивает ссылочную природу данных в языке Java.
|
||||||
|
|
||||||
|
Таким образом, любые изменения, внесённые в объект по ссылке \code{cat2}, окажут влияние на объект, на который ссылается переменная \code{cat1}, поскольку \textit{это один и тот же объект в памяти}. Поэтому результатом выполнения кода, где мы как будто бы указали возраст второго кота, равный шести годам, станут строки, показывающие, что по обеим ссылкам оказался кот возраста шесть лет с именем Мурзика.
|
||||||
|
|
||||||
|
\begin{frm}\info
|
||||||
|
Множественные ссылки на один и тот же объект в памяти довольно легко себе представить как ярлыки для запуска одной и той же программы на рабочем столе и в меню быстрого запуска. Или если на один и тот же шкафчик в раздевалке наклеить два номера - сам шкафчик можно будет найти по двум ссылкам на него.
|
||||||
|
\end{frm}
|
||||||
|
|
||||||
|
\subsubsection{Методы}
|
||||||
|
Ранее было сказано о том, что в языке Java любая программа состоит из классов и функций, которые могут описываться только внутри них. Именно поэтому все функции в языке Java являются методами. А метод - это функция, являющаяся частью некоторого класса, которая может выполнять операции над данными этого класса.
|
||||||
|
|
||||||
|
\begin{frm} \info
|
||||||
|
Метод - это функция, принадлежащая классу
|
||||||
|
\end{frm}
|
||||||
|
|
||||||
|
Метод для своей работы может использовать поля объекта и/или класса, в котором определен, напрямую, без необходимости передавать их во входных параметрах. Это похоже на использование глобальных переменных в функциях, но в отличие от глобальных переменных, метод может получать прямой доступ только к членам класса. Самые простые методы работают с данными объектов. Методы чаще всего формируют API классов, то есть способ взаимодействия с классами, интерфейс. Место методов во взаимодействии классов и объектов показано на рис. \hrf{pic:class-obj-nostatic}.
|
||||||
|
|
||||||
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
\def\svgscale{0.42}
|
||||||
|
\fontsize{6}{1}\selectfont
|
||||||
|
\input{pics/jc-03-class-obj-nostatic.svg}
|
||||||
|
\caption{Логическая структура отношения класс-объект}
|
||||||
|
\label{pic:class-obj-nostatic}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Лайвкод 03-метод & Вернёмся к примеру с котиками. Все мы знаем, что котики умеют урчать, мяукать и смешно прыгать. В целях демонстрации мы в описании этих действий просто будем делать разные выводы в консоль, хотя мы и можем научить нашего котика выбирать минимальное значение из массива, но это было бы неожиданно. Итак опишем метод например подать голос и прыгать. \\ \hline
|
||||||
|
|
||||||
|
Лайвкод 03-метод-вызов & Обращение к методам выглядит очень похожим на стандартный способом, через точку, как к полям. Теперь когда мы хотим позвать нашего котика, он нам скажет, мяу, я имя котика, а если мы решили что котику надо прыгать, он решит, прилично-ли это - прыгать в его возрасте. Как видно, барсик замечательно прыгает, а мурзик от прыжков воздержался, хотя попрыгать мы попросили их обоих \\ \hline
|
||||||
|
|
||||||
|
\subsubsection{Задание для самопроверки}
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Что такое класс?
|
||||||
|
\item Что такое поле класса?
|
||||||
|
\item На какие три этапа делится создание объекта?
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
\subsection{Стек и куча}
|
||||||
|
\subsection{Сборка мусора}
|
||||||
|
\subsection{Конструкторы}
|
||||||
|
\subsection{Инкапсуляция}
|
||||||
|
\subsection{Наследование}
|
||||||
|
\subsection{Полиморфизм}
|
||||||
|
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
Cat1 named: Murzik is Black has age: 6
|
Cat1 named: Murzik is Black has age: 6
|
||||||
Cat2 named: Murzik is Black has age: 6
|
Cat2 named: Murzik is Black has age: 6
|
||||||
|
@ -159,6 +321,7 @@ public class Cat {
|
||||||
ключевое слово this в Java используется только в составе экземпляра класса. Но неявно ключевое слово this передается во все методы, кроме статических (поэтому this часто называют неявным параметром) и может быть использовано для обращения к объекту, вызвавшему метод.
|
ключевое слово this в Java используется только в составе экземпляра класса. Но неявно ключевое слово this передается во все методы, кроме статических (поэтому this часто называют неявным параметром) и может быть использовано для обращения к объекту, вызвавшему метод.
|
||||||
|
|
||||||
|
|
||||||
|
\newpage
|
||||||
\printnomenclature[40mm]
|
\printnomenclature[40mm]
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
|
@ -0,0 +1,196 @@
|
||||||
|
<?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 (9c6d41e410, 2022-07-14)"
|
||||||
|
sodipodi:docname="jc-03-class-obj-fields.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="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#ffffff"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="true"
|
||||||
|
showborder="false"
|
||||||
|
inkscape:zoom="4"
|
||||||
|
inkscape:cx="174.5"
|
||||||
|
inkscape:cy="366.875"
|
||||||
|
inkscape:window-width="2560"
|
||||||
|
inkscape:window-height="1387"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="22"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid1775" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<defs
|
||||||
|
id="defs2">
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="marker2885"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto-start-reverse"
|
||||||
|
inkscape:stockid="RoundedArrow"
|
||||||
|
markerWidth="6.1347523"
|
||||||
|
markerHeight="5.9304953"
|
||||||
|
viewBox="0 0 6.1347524 5.9304951"
|
||||||
|
inkscape:isstock="true"
|
||||||
|
inkscape:collect="always"
|
||||||
|
preserveAspectRatio="xMidYMid">
|
||||||
|
<path
|
||||||
|
transform="scale(0.7)"
|
||||||
|
d="m -0.21114562,-4.1055728 6.42229122,3.21114561 a 1,1 90 0 1 0,1.78885438 L -0.21114562,4.1055728 A 1.236068,1.236068 31.717474 0 1 -2,3 v -6 a 1.236068,1.236068 148.28253 0 1 1.78885438,-1.1055728 z"
|
||||||
|
style="fill:context-stroke;fill-rule:evenodd;stroke:none"
|
||||||
|
id="path2883" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="RoundedArrow"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto-start-reverse"
|
||||||
|
inkscape:stockid="RoundedArrow"
|
||||||
|
markerWidth="6.1347523"
|
||||||
|
markerHeight="5.9304953"
|
||||||
|
viewBox="0 0 6.1347524 5.9304951"
|
||||||
|
inkscape:isstock="true"
|
||||||
|
inkscape:collect="always"
|
||||||
|
preserveAspectRatio="xMidYMid">
|
||||||
|
<path
|
||||||
|
transform="scale(0.7)"
|
||||||
|
d="m -0.21114562,-4.1055728 6.42229122,3.21114561 a 1,1 90 0 1 0,1.78885438 L -0.21114562,4.1055728 A 1.236068,1.236068 31.717474 0 1 -2,3 v -6 a 1.236068,1.236068 148.28253 0 1 1.78885438,-1.1055728 z"
|
||||||
|
style="fill:context-stroke;fill-rule:evenodd;stroke:none"
|
||||||
|
id="path1367" />
|
||||||
|
</marker>
|
||||||
|
</defs>
|
||||||
|
<g
|
||||||
|
inkscape:label="Слой 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="34.229366"
|
||||||
|
y="78.023079"
|
||||||
|
id="text2194"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2192"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="34.229366"
|
||||||
|
y="78.023079">class</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="86.016037"
|
||||||
|
id="text2248"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2246"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="86.016037">fields</tspan></text>
|
||||||
|
<rect
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264999;stroke-linecap:square;paint-order:stroke markers fill"
|
||||||
|
id="rect2476"
|
||||||
|
width="37.041668"
|
||||||
|
height="37.041668"
|
||||||
|
x="19.870209"
|
||||||
|
y="72.786873" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="80.724373"
|
||||||
|
y="80.724373"
|
||||||
|
id="text2480"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2478"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="80.724373"
|
||||||
|
y="80.724373">object1</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="75.432709"
|
||||||
|
y="86.016045"
|
||||||
|
id="text2484"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2482"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="75.432709"
|
||||||
|
y="86.016045">field values</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="80.724373"
|
||||||
|
y="99.245209"
|
||||||
|
id="text2480-1"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2478-9"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="80.724373"
|
||||||
|
y="99.245209">object2</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="75.432709"
|
||||||
|
y="104.53688"
|
||||||
|
id="text2484-0"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2482-7"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="75.432709"
|
||||||
|
y="104.53688">field values</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264999;stroke-linecap:square;paint-order:stroke markers fill"
|
||||||
|
id="path2575"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
sodipodi:cx="87.338959"
|
||||||
|
sodipodi:cy="82.708748"
|
||||||
|
sodipodi:rx="15.875"
|
||||||
|
sodipodi:ry="7.2760415"
|
||||||
|
sodipodi:start="1.5416778"
|
||||||
|
sodipodi:end="1.5346556"
|
||||||
|
sodipodi:open="true"
|
||||||
|
sodipodi:arc-type="arc"
|
||||||
|
d="m 87.80115,89.981705 a 15.875,7.2760415 0 0 1 -16.329626,-7.048352 15.875,7.2760415 0 0 1 15.349531,-7.496774 15.875,7.2760415 0 0 1 16.383515,7.02203 15.875,7.2760415 0 0 1 -15.292002,7.521429" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264999;stroke-linecap:square;paint-order:stroke markers fill"
|
||||||
|
id="path2575-1"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
sodipodi:cx="87.338959"
|
||||||
|
sodipodi:cy="101.22958"
|
||||||
|
sodipodi:rx="15.875"
|
||||||
|
sodipodi:ry="7.2760415"
|
||||||
|
sodipodi:start="1.5416778"
|
||||||
|
sodipodi:end="1.5346556"
|
||||||
|
sodipodi:open="true"
|
||||||
|
sodipodi:arc-type="arc"
|
||||||
|
d="m 87.80115,108.50254 a 15.875,7.2760415 0 0 1 -16.329626,-7.04835 15.875,7.2760415 0 0 1 15.349531,-7.496775 15.875,7.2760415 0 0 1 16.383515,7.022035 15.875,7.2760415 0 0 1 -15.292002,7.52142" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#RoundedArrow)"
|
||||||
|
d="M 71.463957,83.370207 58.234792,87.338958"
|
||||||
|
id="path2662"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2885)"
|
||||||
|
d="M 71.463957,100.56812 58.234792,96.599375"
|
||||||
|
id="path2664"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 7.3 KiB |
|
@ -0,0 +1,240 @@
|
||||||
|
<?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 (9c6d41e410, 2022-07-14)"
|
||||||
|
sodipodi:docname="jc-03-class-obj-full.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="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#ffffff"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="true"
|
||||||
|
showborder="false"
|
||||||
|
inkscape:zoom="4"
|
||||||
|
inkscape:cx="174.5"
|
||||||
|
inkscape:cy="366.875"
|
||||||
|
inkscape:window-width="2560"
|
||||||
|
inkscape:window-height="1387"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="22"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid1775" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<defs
|
||||||
|
id="defs2">
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="marker2885"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto-start-reverse"
|
||||||
|
inkscape:stockid="RoundedArrow"
|
||||||
|
markerWidth="6.1347523"
|
||||||
|
markerHeight="5.9304953"
|
||||||
|
viewBox="0 0 6.1347524 5.9304951"
|
||||||
|
inkscape:isstock="true"
|
||||||
|
inkscape:collect="always"
|
||||||
|
preserveAspectRatio="xMidYMid">
|
||||||
|
<path
|
||||||
|
transform="scale(0.7)"
|
||||||
|
d="m -0.21114562,-4.1055728 6.42229122,3.21114561 a 1,1 90 0 1 0,1.78885438 L -0.21114562,4.1055728 A 1.236068,1.236068 31.717474 0 1 -2,3 v -6 a 1.236068,1.236068 148.28253 0 1 1.78885438,-1.1055728 z"
|
||||||
|
style="fill:context-stroke;fill-rule:evenodd;stroke:none"
|
||||||
|
id="path2883" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="RoundedArrow"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto-start-reverse"
|
||||||
|
inkscape:stockid="RoundedArrow"
|
||||||
|
markerWidth="6.1347523"
|
||||||
|
markerHeight="5.9304953"
|
||||||
|
viewBox="0 0 6.1347524 5.9304951"
|
||||||
|
inkscape:isstock="true"
|
||||||
|
inkscape:collect="always"
|
||||||
|
preserveAspectRatio="xMidYMid">
|
||||||
|
<path
|
||||||
|
transform="scale(0.7)"
|
||||||
|
d="m -0.21114562,-4.1055728 6.42229122,3.21114561 a 1,1 90 0 1 0,1.78885438 L -0.21114562,4.1055728 A 1.236068,1.236068 31.717474 0 1 -2,3 v -6 a 1.236068,1.236068 148.28253 0 1 1.78885438,-1.1055728 z"
|
||||||
|
style="fill:context-stroke;fill-rule:evenodd;stroke:none"
|
||||||
|
id="path1367" />
|
||||||
|
</marker>
|
||||||
|
</defs>
|
||||||
|
<g
|
||||||
|
inkscape:label="Слой 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="34.229366"
|
||||||
|
y="78.023079"
|
||||||
|
id="text2194"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2192"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="34.229366"
|
||||||
|
y="78.023079">class</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="86.016037"
|
||||||
|
id="text2248"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2246"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="86.016037">fields</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="91.307701"
|
||||||
|
id="text2252"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2250"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="91.307701">methods</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="96.599365"
|
||||||
|
id="text2256"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2254"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="96.599365">static fields</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="101.89104"
|
||||||
|
id="text2260"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2258"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="101.89104">static methods</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="107.1827"
|
||||||
|
id="text2264"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2262"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="107.1827">static field values</tspan></text>
|
||||||
|
<rect
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264999;stroke-linecap:square;paint-order:stroke markers fill"
|
||||||
|
id="rect2476"
|
||||||
|
width="37.041668"
|
||||||
|
height="37.041668"
|
||||||
|
x="19.870209"
|
||||||
|
y="72.786873" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="80.724373"
|
||||||
|
y="80.724373"
|
||||||
|
id="text2480"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2478"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="80.724373"
|
||||||
|
y="80.724373">object1</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="75.432709"
|
||||||
|
y="86.016045"
|
||||||
|
id="text2484"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2482"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="75.432709"
|
||||||
|
y="86.016045">field values</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="80.724373"
|
||||||
|
y="99.245209"
|
||||||
|
id="text2480-1"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2478-9"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="80.724373"
|
||||||
|
y="99.245209">object2</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="75.432709"
|
||||||
|
y="104.53688"
|
||||||
|
id="text2484-0"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2482-7"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="75.432709"
|
||||||
|
y="104.53688">field values</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264999;stroke-linecap:square;paint-order:stroke markers fill"
|
||||||
|
id="path2575"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
sodipodi:cx="87.338959"
|
||||||
|
sodipodi:cy="82.708748"
|
||||||
|
sodipodi:rx="15.875"
|
||||||
|
sodipodi:ry="7.2760415"
|
||||||
|
sodipodi:start="1.5416778"
|
||||||
|
sodipodi:end="1.5346556"
|
||||||
|
sodipodi:open="true"
|
||||||
|
sodipodi:arc-type="arc"
|
||||||
|
d="m 87.80115,89.981705 a 15.875,7.2760415 0 0 1 -16.329626,-7.048352 15.875,7.2760415 0 0 1 15.349531,-7.496774 15.875,7.2760415 0 0 1 16.383515,7.02203 15.875,7.2760415 0 0 1 -15.292002,7.521429" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264999;stroke-linecap:square;paint-order:stroke markers fill"
|
||||||
|
id="path2575-1"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
sodipodi:cx="87.338959"
|
||||||
|
sodipodi:cy="101.22958"
|
||||||
|
sodipodi:rx="15.875"
|
||||||
|
sodipodi:ry="7.2760415"
|
||||||
|
sodipodi:start="1.5416778"
|
||||||
|
sodipodi:end="1.5346556"
|
||||||
|
sodipodi:open="true"
|
||||||
|
sodipodi:arc-type="arc"
|
||||||
|
d="m 87.80115,108.50254 a 15.875,7.2760415 0 0 1 -16.329626,-7.04835 15.875,7.2760415 0 0 1 15.349531,-7.496775 15.875,7.2760415 0 0 1 16.383515,7.022035 15.875,7.2760415 0 0 1 -15.292002,7.52142" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#RoundedArrow)"
|
||||||
|
d="M 71.463957,83.370207 58.234792,87.338958"
|
||||||
|
id="path2662"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2885)"
|
||||||
|
d="M 71.463957,100.56812 58.234792,96.599375"
|
||||||
|
id="path2664"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 8.9 KiB |
|
@ -0,0 +1,207 @@
|
||||||
|
<?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 (9c6d41e410, 2022-07-14)"
|
||||||
|
sodipodi:docname="jc-03-class-obj-nostatic.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="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#ffffff"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="true"
|
||||||
|
showborder="false"
|
||||||
|
inkscape:zoom="4"
|
||||||
|
inkscape:cx="174.5"
|
||||||
|
inkscape:cy="366.875"
|
||||||
|
inkscape:window-width="2560"
|
||||||
|
inkscape:window-height="1387"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="22"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid1775" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<defs
|
||||||
|
id="defs2">
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="marker2885"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto-start-reverse"
|
||||||
|
inkscape:stockid="RoundedArrow"
|
||||||
|
markerWidth="6.1347523"
|
||||||
|
markerHeight="5.9304953"
|
||||||
|
viewBox="0 0 6.1347524 5.9304951"
|
||||||
|
inkscape:isstock="true"
|
||||||
|
inkscape:collect="always"
|
||||||
|
preserveAspectRatio="xMidYMid">
|
||||||
|
<path
|
||||||
|
transform="scale(0.7)"
|
||||||
|
d="m -0.21114562,-4.1055728 6.42229122,3.21114561 a 1,1 90 0 1 0,1.78885438 L -0.21114562,4.1055728 A 1.236068,1.236068 31.717474 0 1 -2,3 v -6 a 1.236068,1.236068 148.28253 0 1 1.78885438,-1.1055728 z"
|
||||||
|
style="fill:context-stroke;fill-rule:evenodd;stroke:none"
|
||||||
|
id="path2883" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="RoundedArrow"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto-start-reverse"
|
||||||
|
inkscape:stockid="RoundedArrow"
|
||||||
|
markerWidth="6.1347523"
|
||||||
|
markerHeight="5.9304953"
|
||||||
|
viewBox="0 0 6.1347524 5.9304951"
|
||||||
|
inkscape:isstock="true"
|
||||||
|
inkscape:collect="always"
|
||||||
|
preserveAspectRatio="xMidYMid">
|
||||||
|
<path
|
||||||
|
transform="scale(0.7)"
|
||||||
|
d="m -0.21114562,-4.1055728 6.42229122,3.21114561 a 1,1 90 0 1 0,1.78885438 L -0.21114562,4.1055728 A 1.236068,1.236068 31.717474 0 1 -2,3 v -6 a 1.236068,1.236068 148.28253 0 1 1.78885438,-1.1055728 z"
|
||||||
|
style="fill:context-stroke;fill-rule:evenodd;stroke:none"
|
||||||
|
id="path1367" />
|
||||||
|
</marker>
|
||||||
|
</defs>
|
||||||
|
<g
|
||||||
|
inkscape:label="Слой 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="34.229366"
|
||||||
|
y="78.023079"
|
||||||
|
id="text2194"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2192"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="34.229366"
|
||||||
|
y="78.023079">class</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="86.016037"
|
||||||
|
id="text2248"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2246"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="86.016037">fields</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="91.307701"
|
||||||
|
id="text2252"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2250"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="21.193127"
|
||||||
|
y="91.307701">methods</tspan></text>
|
||||||
|
<rect
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264999;stroke-linecap:square;paint-order:stroke markers fill"
|
||||||
|
id="rect2476"
|
||||||
|
width="37.041668"
|
||||||
|
height="37.041668"
|
||||||
|
x="19.870209"
|
||||||
|
y="72.786873" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="80.724373"
|
||||||
|
y="80.724373"
|
||||||
|
id="text2480"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2478"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="80.724373"
|
||||||
|
y="80.724373">object1</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="75.432709"
|
||||||
|
y="86.016045"
|
||||||
|
id="text2484"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2482"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="75.432709"
|
||||||
|
y="86.016045">field values</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="80.724373"
|
||||||
|
y="99.245209"
|
||||||
|
id="text2480-1"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2478-9"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="80.724373"
|
||||||
|
y="99.245209">object2</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583"
|
||||||
|
x="75.432709"
|
||||||
|
y="104.53688"
|
||||||
|
id="text2484-0"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2482-7"
|
||||||
|
style="stroke-width:0.264583"
|
||||||
|
x="75.432709"
|
||||||
|
y="104.53688">field values</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264999;stroke-linecap:square;paint-order:stroke markers fill"
|
||||||
|
id="path2575"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
sodipodi:cx="87.338959"
|
||||||
|
sodipodi:cy="82.708748"
|
||||||
|
sodipodi:rx="15.875"
|
||||||
|
sodipodi:ry="7.2760415"
|
||||||
|
sodipodi:start="1.5416778"
|
||||||
|
sodipodi:end="1.5346556"
|
||||||
|
sodipodi:open="true"
|
||||||
|
sodipodi:arc-type="arc"
|
||||||
|
d="m 87.80115,89.981705 a 15.875,7.2760415 0 0 1 -16.329626,-7.048352 15.875,7.2760415 0 0 1 15.349531,-7.496774 15.875,7.2760415 0 0 1 16.383515,7.02203 15.875,7.2760415 0 0 1 -15.292002,7.521429" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264999;stroke-linecap:square;paint-order:stroke markers fill"
|
||||||
|
id="path2575-1"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
sodipodi:cx="87.338959"
|
||||||
|
sodipodi:cy="101.22958"
|
||||||
|
sodipodi:rx="15.875"
|
||||||
|
sodipodi:ry="7.2760415"
|
||||||
|
sodipodi:start="1.5416778"
|
||||||
|
sodipodi:end="1.5346556"
|
||||||
|
sodipodi:open="true"
|
||||||
|
sodipodi:arc-type="arc"
|
||||||
|
d="m 87.80115,108.50254 a 15.875,7.2760415 0 0 1 -16.329626,-7.04835 15.875,7.2760415 0 0 1 15.349531,-7.496775 15.875,7.2760415 0 0 1 16.383515,7.022035 15.875,7.2760415 0 0 1 -15.292002,7.52142" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#RoundedArrow)"
|
||||||
|
d="M 71.463957,83.370207 58.234792,87.338958"
|
||||||
|
id="path2662"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2885)"
|
||||||
|
d="M 71.463957,100.56812 58.234792,96.599375"
|
||||||
|
id="path2664"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 7.7 KiB |
|
@ -0,0 +1 @@
|
||||||
|
Ovchinnikov_II@OVCHINNIKOV_II.21588:1669277770
|
Loading…
Reference in New Issue