diff --git a/build/jc3-03.pdf b/build/jc3-03.pdf index 9540506..7c1a103 100644 Binary files a/build/jc3-03.pdf and b/build/jc3-03.pdf differ diff --git a/build/jtc2-02a.pdf b/build/jtc2-02a.pdf index 40378c4..d835a4e 100644 Binary files a/build/jtc2-02a.pdf and b/build/jtc2-02a.pdf differ diff --git a/jc3-03.tex b/jc3-03.tex index a78712a..e8403bd 100644 --- a/jc3-03.tex +++ b/jc3-03.tex @@ -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; diff --git a/jtc2-02a.tex b/jtc2-02a.tex index 3abcbb9..0caeb97 100644 --- a/jtc2-02a.tex +++ b/jtc2-02a.tex @@ -1,6 +1,7 @@ \documentclass[j-spec.tex]{subfiles} \begin{document} +\setcounter{section}{1} \pagestyle{plain} \sloppy \tableofcontents diff --git a/pics/jc-03-class-obj-fields.svg b/pics/jc-03-class-obj-fields.svg index b688795..92091d3 100644 --- a/pics/jc-03-class-obj-fields.svg +++ b/pics/jc-03-class-obj-fields.svg @@ -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"> @@ -85,24 +86,24 @@ id="layer1"> class fields + 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"> diff --git a/pics/jc-03-class-obj-nostatic.svg b/pics/jc-03-class-obj-nostatic.svg index 7e63490..e9cf4b0 100644 --- a/pics/jc-03-class-obj-nostatic.svg +++ b/pics/jc-03-class-obj-nostatic.svg @@ -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"> diff --git a/svg-inkscape/jc-03-class-obj-fields_svg-tex.pdf b/svg-inkscape/jc-03-class-obj-fields_svg-tex.pdf new file mode 100644 index 0000000..d7ae25c Binary files /dev/null and b/svg-inkscape/jc-03-class-obj-fields_svg-tex.pdf differ diff --git a/svg-inkscape/jc-03-class-obj-fields_svg-tex.pdf_tex b/svg-inkscape/jc-03-class-obj-fields_svg-tex.pdf_tex new file mode 100644 index 0000000..1b45307 --- /dev/null +++ b/svg-inkscape/jc-03-class-obj-fields_svg-tex.pdf_tex @@ -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{.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.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{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% 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% diff --git a/svg-inkscape/jc-03-class-obj-full_svg-tex.pdf b/svg-inkscape/jc-03-class-obj-full_svg-tex.pdf new file mode 100644 index 0000000..f3c8344 Binary files /dev/null and b/svg-inkscape/jc-03-class-obj-full_svg-tex.pdf differ diff --git a/svg-inkscape/jc-03-class-obj-full_svg-tex.pdf_tex b/svg-inkscape/jc-03-class-obj-full_svg-tex.pdf_tex new file mode 100644 index 0000000..c06a208 --- /dev/null +++ b/svg-inkscape/jc-03-class-obj-full_svg-tex.pdf_tex @@ -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{.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.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{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% 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% diff --git a/svg-inkscape/jc-03-class-obj-nostatic_svg-tex.pdf b/svg-inkscape/jc-03-class-obj-nostatic_svg-tex.pdf new file mode 100644 index 0000000..45d884b Binary files /dev/null and b/svg-inkscape/jc-03-class-obj-nostatic_svg-tex.pdf differ diff --git a/svg-inkscape/jc-03-class-obj-nostatic_svg-tex.pdf_tex b/svg-inkscape/jc-03-class-obj-nostatic_svg-tex.pdf_tex new file mode 100644 index 0000000..800eb95 --- /dev/null +++ b/svg-inkscape/jc-03-class-obj-nostatic_svg-tex.pdf_tex @@ -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{.pdf_tex} +%% instead of +%% \includegraphics{.pdf} +%% To scale the image, write +%% \def\svgwidth{} +%% \input{.pdf_tex} +%% instead of +%% \includegraphics[width=]{.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{}{.pdf_tex} +%% Alternatively, one can specify +%% \graphicspath{{/}} +%% +%% 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%