03 work+pics, compile

This commit is contained in:
Ivan I. Ovchinnikov 2022-12-01 23:57:29 +03:00
parent 3199161d12
commit f7c224692e
13 changed files with 374 additions and 81 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,7 @@
\documentclass[j-spec.tex]{subfiles}
\begin{document}
\setcounter{section}{2}
\pagestyle{plain}
\sloppy
\tableofcontents
@ -13,7 +14,7 @@
\begin{itemize}
\item \nom{Класс}{определяет форму и сущность объекта и является логической конструкцией, на основе которой построен весь язык Java. Определяет новый тип данных};
\item \nom{Объект}{конкретный экземпляр класса, созданный в программе};
\item \nom{Статика}{(статический контекст) - };
\item \nom{Статика}{(статический контекст) static - (от греч. неподвижный) — раздел механики, в котором изучаются условия равновесия механических систем под действием приложенных к ним сил и возникших моментов. В языке программирования Java - принадлежность поля и его значения не объекту, а классу, и, как следствие, доступность такого поля и его значения в единственном экземпляре всем объектам класса.};
\item \nom{Стек}{- };
\item \nom{Куча}{- };
\item \nom{Сборщик мусора}{- };
@ -93,10 +94,10 @@ public class Cat {
Для новичка важно не запутаться, класс кота мы описали в отдельном файле, а создавать объекты и совершать манипуляции следует в основном классе программы, не может же кот назначить имя сам себе.
\end{frm}
Мы рассказали программе, что такое коты, теперь если мы хотим создать в нашем приложении конкретного кота, следует воспользоваться оператором \code{new Cat();} в основном классе программы. Более подробно разберём, что происходит в этой строке, чуть позже, пока же нам достаточно знать, что мы создали объект типа \code{Cat} (экземпляр класса \code{Cat}), и запомнить эту конструкцию. Для того чтобы с ним (экземпляром) работать, можем положить его в переменную, которой дать идентификатор \code{cat1}.
Мы рассказали программе, что такое коты, теперь если мы хотим создать в нашем приложении конкретного кота, следует воспользоваться оператором \code{new Cat();} в основном классе программы. Более подробно разберём, что происходит в этой строке, чуть позже, пока же нам достаточно знать, что мы создали объект типа \code{Cat} (экземпляр класса \code{Cat}), и запомнить эту конструкцию. Для того чтобы с ним (экземпляром) работать, можем положить его в переменную, которой дать идентификатор \code{cat1}. При создании объекта полям присваиваются значения по умолчанию (нули для числовых переменных и \code{false} для булевых).
\begin{lstlisting}[language=Java,style=JCodeStyle]
Сat cat0;
Cat cat0; // cat0 = null;
cat0 = new Cat();
Cat cat1 = new Cat();
\end{lstlisting}
@ -112,11 +113,11 @@ public class Cat {
\begin{lstlisting}[language=Java,style=JCodeStyle]
package ru.gb.jcore;
public class Main{
public class Main {
public static void main(String[] args) {
Cat cat1 = new Cat();
Cat cat2 = new Cat();
cat1.name = "Barsik";
cat1.color = "White";
cat1.age = 4;
@ -124,13 +125,13 @@ public class Main{
cat2.name = "Murzik";
cat2.color = "Black";
cat2.age = 6;
System.out.println("Cat1 named: " + cat1.name +
" is " + cat1.color +
" has age: " + cat1.age);
" is " + cat1.color +
" has age: " + cat1.age);
System.out.println("Cat2 named: " + cat2.name +
" is " + cat2.color +
" has age: " + cat2.age);
" is " + cat2.color +
" has age: " + cat2.age);
}
}
\end{lstlisting}
@ -145,9 +146,9 @@ Cat2 named: Murzik is Black has age: 6
\begin{figure}[H]
\centering
\def\svgscale{0.42}
\fontsize{6}{1}\selectfont
\input{pics/jc-03-class-obj-fields.svg}
\def\svgscale{1.01}
\fontsize{12}{1}\selectfont
\includesvg{pics/jc-03-class-obj-fields.svg}
\caption{Логическая структура отношения класс-объект}
\label{pic:class-obj-fields}
\end{figure}
@ -164,7 +165,7 @@ Cat2 named: Murzik is Black has age: 6
Для непосредственного создания объекта применяется оператор \code{new}, который динамически резервирует память под объект и возвращает ссылку на него, в общих чертах эта ссылка представляет собой адрес объекта в памяти, зарезервированной оператором \code{new}.
\begin{lstlisting}[language=Java,style=JCodeStyle]
Сat cat1; // cat1 = null;
Cat cat1; // cat1 = null;
cat1 = new Cat();
Cat cat2 = new Cat();
\end{lstlisting}
@ -194,21 +195,28 @@ Cat2 named: Murzik is Black has age: 6
cat2.age = 6;
System.out.println("Cat1 named: " + cat1.name +
" is " + cat1.color +
" has age: " + cat1.age);
" is " + cat1.color +
" has age: " + cat1.age);
System.out.println("Cat2 named: " + cat2.name +
" is " + cat2.color +
" has age: " + cat2.age);
" is " + cat2.color +
" has age: " + cat2.age);
\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{verbatim}
Cat1 named: Murzik is Black has age: 6
Cat2 named: Murzik is Black has age: 6
\end{verbatim}
\begin{frm}\info
Множественные ссылки на один и тот же объект в памяти довольно легко себе представить как ярлыки для запуска одной и той же программы на рабочем столе и в меню быстрого запуска. Или если на один и тот же шкафчик в раздевалке наклеить два номера - сам шкафчик можно будет найти по двум ссылкам на него.
Множественные ссылки на один и тот же объект в памяти довольно легко себе представить как ярлыки для запуска одной и той же программы на рабочем столе и в меню быстрого запуска. Или если на один и тот же шкафчик в раздевалке наклеить два номера - сам шкафчик можно будет найти по двум ссылкам на него.
\end{frm}
Важно всегда перепроверять, какие объекты созданы, а какие имеют множественные ссылки.
\subsubsection{Методы}
Ранее было сказано о том, что в языке Java любая программа состоит из классов и функций, которые могут описываться только внутри них. Именно поэтому все функции в языке Java являются методами. А метод - это функция, являющаяся частью некоторого класса, которая может выполнять операции над данными этого класса.
@ -220,36 +228,14 @@ Cat2 named: Murzik is Black has age: 6
\begin{figure}[H]
\centering
\def\svgscale{0.42}
\fontsize{6}{1}\selectfont
\input{pics/jc-03-class-obj-nostatic.svg}
\def\svgscale{1.01}
\fontsize{12}{1}\selectfont
\includesvg{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}
Cat1 named: Murzik is Black has age: 6
Cat2 named: Murzik is Black has age: 6
\end{verbatim}
Вернёмся к примеру с котиками. Широко известно, что котики умеют урчать, мяукать и смешно прыгать. В целях демонстрации в описании этих действий просто будем делать разные выводы в консоль, хотя возможно и научить котика в программе выбирать минимальное значение из массива, но это было бы, как минимум, неожиданно. Итак опишем метод например подать голос и прыгать.
\begin{lstlisting}[language=Java,style=JCodeStyle]
public class Cat {
@ -267,6 +253,109 @@ public class Cat {
}
\end{lstlisting}
Обращение к методам выглядит очень похожим на стандартный способом, через точку, как к полям. Теперь когда появляется необходимость позвать котика, он скажет: «мяу, я имя котика», а если в программе пришло время котику прыгнуть, он решит, прилично ли это -- прыгать в его возрасте.
\begin{lstlisting}[language=Java,style=JCodeStyle]
package ru.gb.jcore;
public class Main {
public static void main(String[] args) {
Cat cat1 = new Cat();
Cat cat2 = new Cat();
cat1.name = "Barsik";
cat1.color = "White";
cat1.age = 4;
cat2.name = "Murzik";
cat2.color = "Black";
cat2.age = 6;
cat1.voice();
cat2.voice();
cat1.jump();
cat2.jump();
}
}
\end{lstlisting}
\begin{verbatim}
Barsik meows
Murzik meows
Barsik jumps
\end{verbatim}
Как видно, Барсик замечательно прыгает, а Мурзик от прыжков воздержался, хотя попрыгать программа попросила их обоих.
\subsubsection{Ключевое слово \code{static}}
В завершение базовой информации о классах и объектах, остановимся на специальном модификаторе \code{static}, делающем переменную или метод «независимыми» от объекта.
\begin{frm}\info
\textbf{\code{static}} — модификатор, применяемый к полю, блоку, методу или внутреннему классу, он указывает на привязку субъекта к текущему классу.
\end{frm}
Для использования таких полей и методов, соответственно, объект создавать не нужно. В Java большинство членов служебных классов являются статическими. Возможно использовать это ключевое слово в четырех контекстах:
\begin{itemize}
\item статические методы;
\item статические переменные;
\item статические вложенные классы;
\item статические блоки.
\end{itemize}
В этом разделе рассмотрим подробнее только первые два пункта, третий опишем чуть позже, а четвёртый потребует от нас знаний, выходящих не только за этот урок, но и за десяток следующих.
\textbf{Статические методы} также называются методами класса, потому что статический метод принадлежит классу, а не его объекту. Нестатические называются методами объекта. Статические методы можно вызывать напрямую через имя класса, не обращаясь к объекту и вообще объект не создавая. Что это и зачем нужно? Например, умение кота мяукать можно вывести в статическое поле, потому что, например, весной можно открыть окно, не увидеть ни одного экземпляра котов, но зато услышать их, и точно знать, что мяукают не дома и не машины, а именно коты.
\begin{figure}[H]
\centering
\def\svgscale{1.01}
\fontsize{12}{1}\selectfont
\includesvg{pics/jc-03-class-obj-full.svg}
\caption{Логическая структура отношения класс-объект}
\label{pic:class-obj-full}
\end{figure}
Аналогично статическим методам, \textbf{статические поля} принадлежат классу и совершенно ничего «не знают» об объектах.
\begin{frm}\excl
Важной отличительной чертой статических полей является то, что их значения также хранятся в классе, в отличие от обычных полей, чьи значения хранятся в объектах.
\end{frm}
Рисунок \hrf{pic:class-obj-full} именно в этом виде автор настоятельно рекомендует если не заучить, то хотя бы хорошо запомнить, он ещё пригодится в дальнейшем обучении и работе. Из этого же изображения можно сделать несколько выводов.
лайвкод 03-статическое-поле-код Помимо того, что статические поля - это полезный инструмент создания общих свойств это ещ§ и опасный инструмент создания общих свойств. Так, например, мы знаем, что у котов четыре лапы, а не 6 и не 8. Не создавая никакого барсика будет понятно, что у кота - 4 лапы. Это полезное поведение.
лайвкод 03-статическое-поле-ошибка Посмотрим на опасность. Мы видим, что у каждого кота есть имя, и помним, что коты хранят значение своего имени каждый сам у себя. А знают экземпляры о названии поля потому что знают, какого класса они экземпляры. Но что если мы по невнимательности добавим свойство статичности к имени кота?
03-статическое-поле-признак Создав тех же самых котов, которых мы создавали весь урок, мы получим двух мурзиков и ни одного барсика. Почему это произошло? По факту переменная у нас одна на всех, и значение тоже одно, а значит каждый раз мы меняем именно его, а все остальные коты ничего не подозревая смотрят на значение общей переменной и бодро его возвращают. Поэтому, чтобы не запутаться, к статическим переменным, как правило, обращаются не по ссылке на объект — cat1.name, а по имени класса — Cat.name.
03-статические-поля К слову, статические переменные — редкость в Java. Вместо них применяют статические константы. Они определяются ключевыми словами static final и по соглашению о внешнем виде кода пишутся в верхнем регистре.
\subsubsection{Задание для самопроверки}
\begin{enumerate}
\item Что такое класс?
\item Что такое поле класса?
\item На какие три этапа делится создание объекта?
\item Какое свойство добавляет ключевое слово static полю или методу?
\begin{enumerate}
\item неизменяемость;
\item принадлежность классу;
\item принадлежность приложению.
\end{enumerate}
\item Может ли статический метод получить доступ к полям объекта?
\begin{enumerate}
\item не может;
\item может только к константным;
\item может только к неинициализированным.
\end{enumerate}
\end{enumerate}
\subsection{Стек и куча}
\subsection{Сборка мусора}
\subsection{Конструкторы}
\subsection{Инкапсуляция}
\subsection{Наследование}
\subsection{Полиморфизм}
- Также, хотелось бы отметить, что мы можем использовать -Xms и -Xmx опции JVM, чтобы определить начальный и максимальный размер памяти в куче. Для стека определить размер памяти можно с помощью опции -Xss;
\begin{lstlisting}[language=Java,style=JCodeStyle]
@ -274,7 +363,7 @@ public class Cat {
private String name;
private String color;
private int age;
public Cat() {
System.out.println("constructor is constructing...");
name = "Barsik";
@ -289,7 +378,7 @@ public class Cat {
private String name;
private String color;
private int age;
Cat(String n, String c, int a) {
System.out.println("constructor is constructing...");
name = n;
@ -309,7 +398,7 @@ public class Cat {
private String name;
private String color;
private int age;
public Cat(String name, String color, int age) {
this.name = name;
this.color = color;

View File

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

View File

@ -7,7 +7,7 @@
viewBox="0 0 210 297"
version="1.1"
id="svg5"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
inkscape:version="1.2.1 (9c6d41e4, 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"
@ -17,8 +17,8 @@
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
borderopacity="0.25"
inkscape:showpageshadow="false"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#ffffff"
@ -26,14 +26,15 @@
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:cx="169.5"
inkscape:cy="336.875"
inkscape:window-width="1534"
inkscape:window-height="837"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="0"
inkscape:current-layer="layer1"
borderlayer="false">
<inkscape:grid
type="xygrid"
id="grid1775" />
@ -85,24 +86,24 @@
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"
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583;stroke:none;stroke-opacity:1;fill:#000000;fill-opacity:1"
x="34.229366"
y="78.023079"
id="text2194"><tspan
sodipodi:role="line"
id="tspan2192"
style="stroke-width:0.264583"
style="stroke-width:0.264583;stroke:none;stroke-opacity:1;fill:#000000;fill-opacity:1"
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"
style="font-size:4.9389px;line-height:1.25;font-family:'PT Astra Serif';-inkscape-font-specification:'PT Astra Serif';stroke-width:0.264583;fill:#000000;fill-opacity:1"
x="21.193127"
y="86.016037"
id="text2248"><tspan
sodipodi:role="line"
id="tspan2246"
style="stroke-width:0.264583"
style="stroke-width:0.264583;fill:#000000;fill-opacity:1"
x="21.193127"
y="86.016037">fields</tspan></text>
<rect

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@ -7,7 +7,7 @@
viewBox="0 0 210 297"
version="1.1"
id="svg5"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
inkscape:version="1.2.1 (9c6d41e4, 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"
@ -18,7 +18,7 @@
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:showpageshadow="false"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#ffffff"
@ -27,13 +27,14 @@
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:cy="367"
inkscape:window-width="1534"
inkscape:window-height="456"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="0"
inkscape:current-layer="layer1"
borderlayer="false">
<inkscape:grid
type="xygrid"
id="grid1775" />

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@ -7,7 +7,7 @@
viewBox="0 0 210 297"
version="1.1"
id="svg5"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
inkscape:version="1.2.1 (9c6d41e4, 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"
@ -18,7 +18,7 @@
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:showpageshadow="false"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#ffffff"
@ -27,13 +27,14 @@
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:cy="367"
inkscape:window-width="1534"
inkscape:window-height="456"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="0"
inkscape:current-layer="layer1"
borderlayer="false">
<inkscape:grid
type="xygrid"
id="grid1775" />

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

View File

@ -0,0 +1,65 @@
%% Creator: Inkscape 1.2.1 (9c6d41e4, 2022-07-14), www.inkscape.org
%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
%% Accompanies image file 'jc-03-class-obj-fields_svg-tex.pdf' (pdf, eps, ps)
%%
%% To include the image in your LaTeX document, write
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics{<filename>.pdf}
%% To scale the image, write
%% \def\svgwidth{<desired width>}
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics[width=<desired width>]{<filename>.pdf}
%%
%% Images with a different path to the parent latex file can
%% be accessed with the `import' package (which may need to be
%% installed) using
%% \usepackage{import}
%% in the preamble, and then including the image with
%% \import{<path to file>}{<filename>.pdf_tex}
%% Alternatively, one can specify
%% \graphicspath{{<path to file>/}}
%%
%% For more information, please see info/svg-inkscape on CTAN:
%% http://tug.ctan.org/tex-archive/info/svg-inkscape
%%
\begingroup%
\makeatletter%
\providecommand\color[2][]{%
\errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
\renewcommand\color[2][]{}%
}%
\providecommand\transparent[1]{%
\errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
\renewcommand\transparent[1]{}%
}%
\providecommand\rotatebox[2]{#2}%
\newcommand*\fsize{\dimexpr\f@size pt\relax}%
\newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}%
\ifx\svgwidth\undefined%
\setlength{\unitlength}{237.00155419bp}%
\ifx\svgscale\undefined%
\relax%
\else%
\setlength{\unitlength}{\unitlength * \real{\svgscale}}%
\fi%
\else%
\setlength{\unitlength}{\svgwidth}%
\fi%
\global\let\svgwidth\undefined%
\global\let\svgscale\undefined%
\makeatother%
\begin{picture}(1,0.44620459)%
\lineheight{1}%
\setlength\tabcolsep{0pt}%
\put(0.17332677,0.38199245){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}class\end{tabular}}}}%
\put(0.01740745,0.28639306){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}fields\end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=1]{jc-03-class-obj-fields_svg-tex.pdf}}%
\put(0.72942805,0.34968375){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}object1\end{tabular}}}}%
\put(0.66613736,0.28639297){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}field values\end{tabular}}}}%
\put(0.72942805,0.12816619){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}object2\end{tabular}}}}%
\put(0.66613736,0.0648754){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}field values\end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=2]{jc-03-class-obj-fields_svg-tex.pdf}}%
\end{picture}%
\endgroup%

Binary file not shown.

View File

@ -0,0 +1,69 @@
%% Creator: Inkscape 1.2.1 (9c6d41e4, 2022-07-14), www.inkscape.org
%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
%% Accompanies image file 'jc-03-class-obj-full_svg-tex.pdf' (pdf, eps, ps)
%%
%% To include the image in your LaTeX document, write
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics{<filename>.pdf}
%% To scale the image, write
%% \def\svgwidth{<desired width>}
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics[width=<desired width>]{<filename>.pdf}
%%
%% Images with a different path to the parent latex file can
%% be accessed with the `import' package (which may need to be
%% installed) using
%% \usepackage{import}
%% in the preamble, and then including the image with
%% \import{<path to file>}{<filename>.pdf_tex}
%% Alternatively, one can specify
%% \graphicspath{{<path to file>/}}
%%
%% For more information, please see info/svg-inkscape on CTAN:
%% http://tug.ctan.org/tex-archive/info/svg-inkscape
%%
\begingroup%
\makeatletter%
\providecommand\color[2][]{%
\errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
\renewcommand\color[2][]{}%
}%
\providecommand\transparent[1]{%
\errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
\renewcommand\transparent[1]{}%
}%
\providecommand\rotatebox[2]{#2}%
\newcommand*\fsize{\dimexpr\f@size pt\relax}%
\newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}%
\ifx\svgwidth\undefined%
\setlength{\unitlength}{237.00155419bp}%
\ifx\svgscale\undefined%
\relax%
\else%
\setlength{\unitlength}{\unitlength * \real{\svgscale}}%
\fi%
\else%
\setlength{\unitlength}{\svgwidth}%
\fi%
\global\let\svgwidth\undefined%
\global\let\svgscale\undefined%
\makeatother%
\begin{picture}(1,0.44620459)%
\lineheight{1}%
\setlength\tabcolsep{0pt}%
\put(0.17332677,0.38199245){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}class\end{tabular}}}}%
\put(0.01740745,0.28639306){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}fields\end{tabular}}}}%
\put(0.01740745,0.22310236){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}methods\end{tabular}}}}%
\put(0.01740745,0.15981167){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}static fields\end{tabular}}}}%
\put(0.01740745,0.09652089){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}static methods\end{tabular}}}}%
\put(0.01740745,0.03323019){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}static field values\end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=1]{jc-03-class-obj-full_svg-tex.pdf}}%
\put(0.72942805,0.34968375){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}object1\end{tabular}}}}%
\put(0.66613736,0.28639297){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}field values\end{tabular}}}}%
\put(0.72942805,0.12816619){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}object2\end{tabular}}}}%
\put(0.66613736,0.0648754){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}field values\end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=2]{jc-03-class-obj-full_svg-tex.pdf}}%
\end{picture}%
\endgroup%

Binary file not shown.

View File

@ -0,0 +1,66 @@
%% Creator: Inkscape 1.2.1 (9c6d41e4, 2022-07-14), www.inkscape.org
%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
%% Accompanies image file 'jc-03-class-obj-nostatic_svg-tex.pdf' (pdf, eps, ps)
%%
%% To include the image in your LaTeX document, write
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics{<filename>.pdf}
%% To scale the image, write
%% \def\svgwidth{<desired width>}
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics[width=<desired width>]{<filename>.pdf}
%%
%% Images with a different path to the parent latex file can
%% be accessed with the `import' package (which may need to be
%% installed) using
%% \usepackage{import}
%% in the preamble, and then including the image with
%% \import{<path to file>}{<filename>.pdf_tex}
%% Alternatively, one can specify
%% \graphicspath{{<path to file>/}}
%%
%% For more information, please see info/svg-inkscape on CTAN:
%% http://tug.ctan.org/tex-archive/info/svg-inkscape
%%
\begingroup%
\makeatletter%
\providecommand\color[2][]{%
\errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
\renewcommand\color[2][]{}%
}%
\providecommand\transparent[1]{%
\errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
\renewcommand\transparent[1]{}%
}%
\providecommand\rotatebox[2]{#2}%
\newcommand*\fsize{\dimexpr\f@size pt\relax}%
\newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}%
\ifx\svgwidth\undefined%
\setlength{\unitlength}{237.00155419bp}%
\ifx\svgscale\undefined%
\relax%
\else%
\setlength{\unitlength}{\unitlength * \real{\svgscale}}%
\fi%
\else%
\setlength{\unitlength}{\svgwidth}%
\fi%
\global\let\svgwidth\undefined%
\global\let\svgscale\undefined%
\makeatother%
\begin{picture}(1,0.44620459)%
\lineheight{1}%
\setlength\tabcolsep{0pt}%
\put(0.17332677,0.38199245){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}class\end{tabular}}}}%
\put(0.01740745,0.28639306){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}fields\end{tabular}}}}%
\put(0.01740745,0.22310236){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}methods\end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=1]{jc-03-class-obj-nostatic_svg-tex.pdf}}%
\put(0.72942805,0.34968375){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}object1\end{tabular}}}}%
\put(0.66613736,0.28639297){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}field values\end{tabular}}}}%
\put(0.72942805,0.12816619){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}object2\end{tabular}}}}%
\put(0.66613736,0.0648754){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}field values\end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=2]{jc-03-class-obj-nostatic_svg-tex.pdf}}%
\end{picture}%
\endgroup%