diff --git a/build/j-spec.pdf b/build/j-spec.pdf index 2383a21..5c65019 100644 Binary files a/build/j-spec.pdf and b/build/j-spec.pdf differ diff --git a/j-spec.tex b/j-spec.tex index 4ecfdf4..8581231 100644 --- a/j-spec.tex +++ b/j-spec.tex @@ -221,8 +221,15 @@ Hello, world! \textbf{Обычный проект} состоит из пакетов, которые содержат классы, которые в свою очередь как-то связаны между собой и содержат код, который исполняется. \begin{itemize} -\item Пакеты. Классы, находящиеся в одном пакете доступны друг другу даже если находятся в разных проектах. Пакеты объединяют классы по смыслу. У пакетов есть правила именования: обычно это обратное доменное имя (например, для gb.ru это будет ru.gb), название проекта, и далее уже внутренняя структура. Чтобы явно отнести класс к пакету, нужно прописать в классе название пакета после оператора \code{package}. -\item Классы. Основная единица исходного кода программы. +\item Пакеты. Пакеты объединяют классы по смыслу. Классы, находящиеся в одном пакете доступны друг другу даже если находятся в разных проектах. У пакетов есть правила именования: обычно это обратное доменное имя (например, для gb.ru это будет ru.gb), название проекта, и далее уже внутренняя структура. Пакеты именуют строчными латинскими буквами. Чтобы явно отнести класс к пакету, нужно прописать в классе название пакета после оператора \code{package}. +\item Классы. Основная единица исходного кода программы. Одному файлу следует сопоставлять один класс. Название класса - это имя существительное в именительном падеже, написанное с заглавной буквы. Если требуется назвать класс в несколько слов, применяют UpperCamelCase. +\item \code{public static void main(String[] args)}. Метод, который является точкой входа в программу. Должен находиться в публичном классе. При создании этого метода важно полностью повторить его сигнатуру и обязательно написать его с название со строчной буквы. +\item Комментарии. Это часть кода, которую игнорирует компилятор при преобразовании исходного кода. Комментарии бывают: + \begin{itemize} + \item \code{// comment} - до конца строки. Самый простой и самый часто используемый комментарий. + \item \code{/* comment */} - внутристрочный или многострочный. Никогда не используйте его внутри строк, несмотря на то, что это возможно. + \item \code{/** comment */} - комментарий-документация. Многострочный. Из него утилитой Javadoc создаётся веб-страница с комментарием. + \end{itemize} \end{itemize} \subsubsection{Отложим мышки в сторону (CLI: сборка, пакеты, запуск)} diff --git a/scenarios/jc-1-c.tex b/scenarios/jc-1-c.tex index 8e1f3a5..2654db2 100644 --- a/scenarios/jc-1-c.tex +++ b/scenarios/jc-1-c.tex @@ -83,7 +83,18 @@ \showslide{build/jc-1-b.pdf} Как я сказал в начале этого блока, шаблонные проекты, создаваемые сборщиками мы обсудим на следующей лекции, поэтому осталось только поговорить о том, из чего состоит обычный простой проект. Итак чаще всего, это пакеты, классы, метод main, комментарии, ресурсы. Обо всём по порядку. Давайте сразу договоримся, что я сначала буду давать формальное понятие, а потом буду говорить, как его можно представить в более простом виде. -Пакет - это пространство имён языка. Теоретически, как мы видели на примере простейшего проекта, класс может не находиться в пакете, но на практике такого положения дел не встретить. Например, в проекте из нескольких модулей классы без пакетов просто не будут найдены. Пакет - это некоторое место хранения и создания иерархии классов проекта. Проще всего представить пакет как папку на диске, тем более, что в файловой системе пакеты так и показываются. Но пакет - это чуть более сложная сущность. Для пакетов существуют модификаторы доступа, классы, находящиеся в одном пакете доступны друг другу даже если находятся в разных проектах (это как раз и есть отличие пакетов от папок на диске). Для нас пока достаточно, что пакеты объединяют классы по смыслу. У пакетов есть правила именования: обычно это обратное доменное имя (например, для гб.ру это будет ру.гб), название проекта, и далее уже внутренняя структура. Чтобы явно отнести класс к пакету недостаточно его просто туда положить, нужно ещё прописать в классе название пакета после специального оператора package. +Пакет - это пространство имён языка. Теоретически, как мы видели на примере простейшего проекта, класс может не находиться в пакете, но на практике такого положения дел не встретить. Например, в проекте из нескольких модулей классы без пакетов просто не будут найдены. Пакет - это некоторое место хранения и создания иерархии классов проекта. Проще всего представить пакет как папку на диске, тем более, что в файловой системе пакеты так и показываются. Но пакет - это чуть более сложная сущность. Для пакетов существуют модификаторы доступа, классы, находящиеся в одном пакете доступны друг другу даже если находятся в разных проектах (это как раз и есть отличие пакетов от папок на диске). Для нас пока достаточно, что пакеты объединяют классы по смыслу. У пакетов есть правила именования: обычно это обратное доменное имя (например, для гб.ру это будет ру.гб), название проекта, и далее уже внутренняя структура. Пакеты следует писать латинскими строчными буквами. Чтобы явно отнести класс к пакету недостаточно его просто туда положить, нужно ещё прописать в классе название пакета после специального оператора package. + +Класс - это основная единица исходного кода программы. Без класса не может начаться никакое программирование на языке Java. Даже скомпилированные файлы исходного кода имеют расширение .class. Что такое классы в терминах ООП вы уже знаете, но в Java классы - это более широкое понятие. Сама программа - это тоже класс. У классов также есть модификаторы доступа. Важно про классы - это то, что в файл с расширением джава следует класть только один класс и делать его публичным. Формально, язык не запрещает иметь в файле другие, не публичные классы, но писать так свои программы - это не толкьо дурной тон, но и весьма сбивающая с толку практика. У классов также есть правила именования. Название класса - это имя существительное в именительном падеже, написанное с заглавной буквы. Если требуется назвать класс в несколько слов, применяют так называемый upper camel case, то есть пишут слова строчными буквами, делая заглавной первую букву каждого слова. + +Метод мейн - это единственный в своём роде метод, который является точкой входа в программу. Метод является публичным, и должен находиться в публичном классе, то есть он доступен для исполнения любому желающему. А желает его исполнить JVM. Метод именно с такой сигнатурой (публичный, статический, ничего не возвращающий, принимающий массив строк) - это конвенция, договорённость, об именовании. JVM при старте программы среди всех пакетов и классов будет искать именно этот метод и будет передавать ему именно массив строк в качестве параметра. При создании этого метода важно полностью повторить его сигнатуру и обязательно написать его с название со строчной буквы. + +Комментарии - это часть кода, которую игнорирует компилятор при преобразовании исходного кода. Комментарии бывают: + \begin{itemize} + \item \code{// comment} - до конца строки. Самый простой и самый часто используемый комментарий. Эти комментарии обычно поясняют неочевидные программные решения или сложные алгоритмы. + \item \code{/* comment */} - внутристрочный или многострочный. Никогда не используйте его внутри строк, несмотря на то, что это возможно. + \item \code{/** comment */} - комментарий-документация. Многострочный. Из него утилитой Javadoc создаётся веб-страница с комментарием. + \end{itemize} + -Класс - это основная единица \end{document} \ No newline at end of file