03 work+pics, compile
This commit is contained in:
parent
3199161d12
commit
f7c224692e
BIN
build/jc3-03.pdf
BIN
build/jc3-03.pdf
Binary file not shown.
Binary file not shown.
155
jc3-03.tex
155
jc3-03.tex
|
@ -1,6 +1,7 @@
|
||||||
\documentclass[j-spec.tex]{subfiles}
|
\documentclass[j-spec.tex]{subfiles}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
\setcounter{section}{2}
|
||||||
\pagestyle{plain}
|
\pagestyle{plain}
|
||||||
\sloppy
|
\sloppy
|
||||||
\tableofcontents
|
\tableofcontents
|
||||||
|
@ -13,7 +14,7 @@
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \nom{Класс}{определяет форму и сущность объекта и является логической конструкцией, на основе которой построен весь язык Java. Определяет новый тип данных};
|
\item \nom{Класс}{определяет форму и сущность объекта и является логической конструкцией, на основе которой построен весь язык Java. Определяет новый тип данных};
|
||||||
\item \nom{Объект}{конкретный экземпляр класса, созданный в программе};
|
\item \nom{Объект}{конкретный экземпляр класса, созданный в программе};
|
||||||
\item \nom{Статика}{(статический контекст) - };
|
\item \nom{Статика}{(статический контекст) static - (от греч. неподвижный) — раздел механики, в котором изучаются условия равновесия механических систем под действием приложенных к ним сил и возникших моментов. В языке программирования Java - принадлежность поля и его значения не объекту, а классу, и, как следствие, доступность такого поля и его значения в единственном экземпляре всем объектам класса.};
|
||||||
\item \nom{Стек}{- };
|
\item \nom{Стек}{- };
|
||||||
\item \nom{Куча}{- };
|
\item \nom{Куча}{- };
|
||||||
\item \nom{Сборщик мусора}{- };
|
\item \nom{Сборщик мусора}{- };
|
||||||
|
@ -93,10 +94,10 @@ public class Cat {
|
||||||
Для новичка важно не запутаться, класс кота мы описали в отдельном файле, а создавать объекты и совершать манипуляции следует в основном классе программы, не может же кот назначить имя сам себе.
|
Для новичка важно не запутаться, класс кота мы описали в отдельном файле, а создавать объекты и совершать манипуляции следует в основном классе программы, не может же кот назначить имя сам себе.
|
||||||
\end{frm}
|
\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]
|
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||||||
Сat cat0;
|
Cat cat0; // cat0 = null;
|
||||||
cat0 = new Cat();
|
cat0 = new Cat();
|
||||||
Cat cat1 = new Cat();
|
Cat cat1 = new Cat();
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
@ -145,9 +146,9 @@ Cat2 named: Murzik is Black has age: 6
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\def\svgscale{0.42}
|
\def\svgscale{1.01}
|
||||||
\fontsize{6}{1}\selectfont
|
\fontsize{12}{1}\selectfont
|
||||||
\input{pics/jc-03-class-obj-fields.svg}
|
\includesvg{pics/jc-03-class-obj-fields.svg}
|
||||||
\caption{Логическая структура отношения класс-объект}
|
\caption{Логическая структура отношения класс-объект}
|
||||||
\label{pic:class-obj-fields}
|
\label{pic:class-obj-fields}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
@ -164,7 +165,7 @@ Cat2 named: Murzik is Black has age: 6
|
||||||
Для непосредственного создания объекта применяется оператор \code{new}, который динамически резервирует память под объект и возвращает ссылку на него, в общих чертах эта ссылка представляет собой адрес объекта в памяти, зарезервированной оператором \code{new}.
|
Для непосредственного создания объекта применяется оператор \code{new}, который динамически резервирует память под объект и возвращает ссылку на него, в общих чертах эта ссылка представляет собой адрес объекта в памяти, зарезервированной оператором \code{new}.
|
||||||
|
|
||||||
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||||||
Сat cat1; // cat1 = null;
|
Cat cat1; // cat1 = null;
|
||||||
cat1 = new Cat();
|
cat1 = new Cat();
|
||||||
Cat cat2 = new Cat();
|
Cat cat2 = new Cat();
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
@ -205,10 +206,17 @@ Cat2 named: Murzik is Black has age: 6
|
||||||
|
|
||||||
Таким образом, любые изменения, внесённые в объект по ссылке \code{cat2}, окажут влияние на объект, на который ссылается переменная \code{cat1}, поскольку \textit{это один и тот же объект в памяти}. Поэтому результатом выполнения кода, где мы как будто бы указали возраст второго кота, равный шести годам, станут строки, показывающие, что по обеим ссылкам оказался кот возраста шесть лет с именем Мурзика.
|
Таким образом, любые изменения, внесённые в объект по ссылке \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
|
\begin{frm}\info
|
||||||
Множественные ссылки на один и тот же объект в памяти довольно легко себе представить как ярлыки для запуска одной и той же программы на рабочем столе и в меню быстрого запуска. Или если на один и тот же шкафчик в раздевалке наклеить два номера - сам шкафчик можно будет найти по двум ссылкам на него.
|
Множественные ссылки на один и тот же объект в памяти довольно легко себе представить как ярлыки для запуска одной и той же программы на рабочем столе и в меню быстрого запуска. Или если на один и тот же шкафчик в раздевалке наклеить два номера - сам шкафчик можно будет найти по двум ссылкам на него.
|
||||||
\end{frm}
|
\end{frm}
|
||||||
|
|
||||||
|
Важно всегда перепроверять, какие объекты созданы, а какие имеют множественные ссылки.
|
||||||
|
|
||||||
\subsubsection{Методы}
|
\subsubsection{Методы}
|
||||||
Ранее было сказано о том, что в языке Java любая программа состоит из классов и функций, которые могут описываться только внутри них. Именно поэтому все функции в языке Java являются методами. А метод - это функция, являющаяся частью некоторого класса, которая может выполнять операции над данными этого класса.
|
Ранее было сказано о том, что в языке Java любая программа состоит из классов и функций, которые могут описываться только внутри них. Именно поэтому все функции в языке Java являются методами. А метод - это функция, являющаяся частью некоторого класса, которая может выполнять операции над данными этого класса.
|
||||||
|
|
||||||
|
@ -220,36 +228,14 @@ Cat2 named: Murzik is Black has age: 6
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
\def\svgscale{0.42}
|
\def\svgscale{1.01}
|
||||||
\fontsize{6}{1}\selectfont
|
\fontsize{12}{1}\selectfont
|
||||||
\input{pics/jc-03-class-obj-nostatic.svg}
|
\includesvg{pics/jc-03-class-obj-nostatic.svg}
|
||||||
\caption{Логическая структура отношения класс-объект}
|
\caption{Логическая структура отношения класс-объект}
|
||||||
\label{pic:class-obj-nostatic}
|
\label{pic:class-obj-nostatic}
|
||||||
\end{figure}
|
\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]
|
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||||||
public class Cat {
|
public class Cat {
|
||||||
|
@ -267,6 +253,109 @@ public class Cat {
|
||||||
}
|
}
|
||||||
\end{lstlisting}
|
\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;
|
- Также, хотелось бы отметить, что мы можем использовать -Xms и -Xmx опции JVM, чтобы определить начальный и максимальный размер памяти в куче. Для стека определить размер памяти можно с помощью опции -Xss;
|
||||||
|
|
||||||
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
\documentclass[j-spec.tex]{subfiles}
|
\documentclass[j-spec.tex]{subfiles}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
\setcounter{section}{1}
|
||||||
\pagestyle{plain}
|
\pagestyle{plain}
|
||||||
\sloppy
|
\sloppy
|
||||||
\tableofcontents
|
\tableofcontents
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
viewBox="0 0 210 297"
|
viewBox="0 0 210 297"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg5"
|
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"
|
sodipodi:docname="jc-03-class-obj-fields.svg"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
@ -17,8 +17,8 @@
|
||||||
id="namedview7"
|
id="namedview7"
|
||||||
pagecolor="#ffffff"
|
pagecolor="#ffffff"
|
||||||
bordercolor="#666666"
|
bordercolor="#666666"
|
||||||
borderopacity="1.0"
|
borderopacity="0.25"
|
||||||
inkscape:showpageshadow="2"
|
inkscape:showpageshadow="false"
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pagecheckerboard="0"
|
inkscape:pagecheckerboard="0"
|
||||||
inkscape:deskcolor="#ffffff"
|
inkscape:deskcolor="#ffffff"
|
||||||
|
@ -26,14 +26,15 @@
|
||||||
showgrid="true"
|
showgrid="true"
|
||||||
showborder="false"
|
showborder="false"
|
||||||
inkscape:zoom="4"
|
inkscape:zoom="4"
|
||||||
inkscape:cx="174.5"
|
inkscape:cx="169.5"
|
||||||
inkscape:cy="366.875"
|
inkscape:cy="336.875"
|
||||||
inkscape:window-width="2560"
|
inkscape:window-width="1534"
|
||||||
inkscape:window-height="1387"
|
inkscape:window-height="837"
|
||||||
inkscape:window-x="-8"
|
inkscape:window-x="0"
|
||||||
inkscape:window-y="22"
|
inkscape:window-y="25"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="0"
|
||||||
inkscape:current-layer="layer1">
|
inkscape:current-layer="layer1"
|
||||||
|
borderlayer="false">
|
||||||
<inkscape:grid
|
<inkscape:grid
|
||||||
type="xygrid"
|
type="xygrid"
|
||||||
id="grid1775" />
|
id="grid1775" />
|
||||||
|
@ -85,24 +86,24 @@
|
||||||
id="layer1">
|
id="layer1">
|
||||||
<text
|
<text
|
||||||
xml:space="preserve"
|
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"
|
x="34.229366"
|
||||||
y="78.023079"
|
y="78.023079"
|
||||||
id="text2194"><tspan
|
id="text2194"><tspan
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan2192"
|
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"
|
x="34.229366"
|
||||||
y="78.023079">class</tspan></text>
|
y="78.023079">class</tspan></text>
|
||||||
<text
|
<text
|
||||||
xml:space="preserve"
|
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"
|
x="21.193127"
|
||||||
y="86.016037"
|
y="86.016037"
|
||||||
id="text2248"><tspan
|
id="text2248"><tspan
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan2246"
|
id="tspan2246"
|
||||||
style="stroke-width:0.264583"
|
style="stroke-width:0.264583;fill:#000000;fill-opacity:1"
|
||||||
x="21.193127"
|
x="21.193127"
|
||||||
y="86.016037">fields</tspan></text>
|
y="86.016037">fields</tspan></text>
|
||||||
<rect
|
<rect
|
||||||
|
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.4 KiB |
|
@ -7,7 +7,7 @@
|
||||||
viewBox="0 0 210 297"
|
viewBox="0 0 210 297"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg5"
|
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"
|
sodipodi:docname="jc-03-class-obj-full.svg"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
pagecolor="#ffffff"
|
pagecolor="#ffffff"
|
||||||
bordercolor="#666666"
|
bordercolor="#666666"
|
||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:showpageshadow="2"
|
inkscape:showpageshadow="false"
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pagecheckerboard="0"
|
inkscape:pagecheckerboard="0"
|
||||||
inkscape:deskcolor="#ffffff"
|
inkscape:deskcolor="#ffffff"
|
||||||
|
@ -27,13 +27,14 @@
|
||||||
showborder="false"
|
showborder="false"
|
||||||
inkscape:zoom="4"
|
inkscape:zoom="4"
|
||||||
inkscape:cx="174.5"
|
inkscape:cx="174.5"
|
||||||
inkscape:cy="366.875"
|
inkscape:cy="367"
|
||||||
inkscape:window-width="2560"
|
inkscape:window-width="1534"
|
||||||
inkscape:window-height="1387"
|
inkscape:window-height="456"
|
||||||
inkscape:window-x="-8"
|
inkscape:window-x="0"
|
||||||
inkscape:window-y="22"
|
inkscape:window-y="25"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="0"
|
||||||
inkscape:current-layer="layer1">
|
inkscape:current-layer="layer1"
|
||||||
|
borderlayer="false">
|
||||||
<inkscape:grid
|
<inkscape:grid
|
||||||
type="xygrid"
|
type="xygrid"
|
||||||
id="grid1775" />
|
id="grid1775" />
|
||||||
|
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.9 KiB |
|
@ -7,7 +7,7 @@
|
||||||
viewBox="0 0 210 297"
|
viewBox="0 0 210 297"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg5"
|
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"
|
sodipodi:docname="jc-03-class-obj-nostatic.svg"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
pagecolor="#ffffff"
|
pagecolor="#ffffff"
|
||||||
bordercolor="#666666"
|
bordercolor="#666666"
|
||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:showpageshadow="2"
|
inkscape:showpageshadow="false"
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pagecheckerboard="0"
|
inkscape:pagecheckerboard="0"
|
||||||
inkscape:deskcolor="#ffffff"
|
inkscape:deskcolor="#ffffff"
|
||||||
|
@ -27,13 +27,14 @@
|
||||||
showborder="false"
|
showborder="false"
|
||||||
inkscape:zoom="4"
|
inkscape:zoom="4"
|
||||||
inkscape:cx="174.5"
|
inkscape:cx="174.5"
|
||||||
inkscape:cy="366.875"
|
inkscape:cy="367"
|
||||||
inkscape:window-width="2560"
|
inkscape:window-width="1534"
|
||||||
inkscape:window-height="1387"
|
inkscape:window-height="456"
|
||||||
inkscape:window-x="-8"
|
inkscape:window-x="0"
|
||||||
inkscape:window-y="22"
|
inkscape:window-y="25"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="0"
|
||||||
inkscape:current-layer="layer1">
|
inkscape:current-layer="layer1"
|
||||||
|
borderlayer="false">
|
||||||
<inkscape:grid
|
<inkscape:grid
|
||||||
type="xygrid"
|
type="xygrid"
|
||||||
id="grid1775" />
|
id="grid1775" />
|
||||||
|
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 7.7 KiB |
Binary file not shown.
|
@ -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.
|
@ -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.
|
@ -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%
|
Loading…
Reference in New Issue