Что из себя представляет программа с линейной структурой на языке java

Обновлено: 04.07.2024

В предыдущем уроке мы немного исправили наш код. Вот как теперь должно выглядеть ваше окно с кодом:

Вы можете заметить, что первая строка у нас - это имя пакета.

Обратите внимание, что строка заканчивается точкой с запятой. Если вы пропустите точку с запятой, программа не будет компилироваться:

Имя класса будет следующим:

Класс является сегментом кода и относится к структуре программы Java.

Важно указать программе, где сегменты кода начинаются, а где заканчиваются.

Это можно сделать с помощью фигурных скобок.

Начало сегмента кода выполняется с помощью левой фигурной скобки

Все, что находится внутри левой и правой фигурных скобок, принадлежит этому сегменту кода.

Внутри левых и правых фигурных скобок в классе находится еще один сегмент кода. Вот этот:

Слово «main» является важной частью. Всякий раз, когда Java-программа запускается, она ищет в своей структуре метод с именем main. (Метод - это просто кусок кода. Вы узнаете об этом позже.)

Синие части перед словом «main» пока можно игнорировать.

Остальные части кода общей структуры Java программы:

  • public означает, что метод можно увидеть за пределами этого класса;
  • static означает, что вам не нужно создавать новый объект;
  • void означает, что метод не возвращает никакого значения;
  • части между круглыми скобками main - это то, что называется аргументами командной строки.

Не беспокойтесь, если вы чего-то не понимаете.

Важно помнить основную структуру программы Java: то, что у нас есть класс MyProject. Этот класс содержит метод с именем main. У обоих есть свои наборы фигурных скобок. Но основной кусок кода принадлежит классу MyProject.

Вы можете запустить этот код и превратить его в программу. Он ничего не делает, но все равно будет компилироваться. Итак, давайте добавим одну строку кода, чтоб увидеть, как он работает. Мы сделаем это в следующем уроке.

Исходные коды программ, написанных на языке Java, должны иметь определенную структуру. Это создает сложности при изучении языка, компиляции, создании исполняемых архивов. Правила касаются как организации кода внутри одного файла, так распределения кода по разным файлам, объединения файлов в пакеты.

Язык Java настолько объектно-ориентированный насколько возможно. Не считая импортов и указания имен пакетов, весь рабочий код находится внутри классов. При этом, за редким исключением, каждый класс должен описываться в отдельном файле, имя файла должно совпадать с именем класса. Например, если создается класс HelloWorldApp, то он сохраняется в файле HelloWorldApp.java.

Один из классов обязательно должен содержать метод-функцию main(), которая является точкой входа в java-программу. В случае однофайловой программы, метод main() должен быть в этом единственном файле. Как называется класс, содержащий main(), не важно.

Определение метода main() выглядит так:

Допустимо лишь изменение имени переменной args.

Группируя файлы программы по подкаталогам, мы тем самым создаем подпакеты. Самый верхний уровень, т. е. программа, будет пакетом. В тексте файла первой строкой пишется имя пакета или подпакета. Например:

Здесь файл, содержащий данную инструкцию, находится в каталоге pythonexercises, который вложен в каталог younglinux, который вложен в каталог info. Директория info – это пакет. Компиляция производится из родительского по отношению к info каталога.

Если все файлы программы находятся в одном каталоге и компиляция будет происходить из этого каталога, то инструкция package не нужна. Однако остается необходимой для файлов подкаталогов, т. е. подпакетов.

Рассмотрим пример программы, состоящей из трех файлов, один из которых вложен в подкаталог.

Файл 3 (вложен в подкаталог utils):

В классе Start на экран выводятся значение переменной var2 из класса Second, и переменной var3 из класса Third. Обращаясь к переменной третьего класса, мы должны указать имя пакета. В то же время переменная второго класса доступна через указание только самого класса, как будто он находится в том же файле, что и первый класс.

Компиляция в данном случае будет выполняться из каталога, где лежат файлы Start.java и Second.java. Компилятору не обязательно передавать все файлы с исходниками, достаточно передать стартовый. Остальные будут скомпилированы, так как из первого файла к ним происходит обращение.

Однако можно компилировать все файлы, в том числе передавая шаблон, например, *.java.

Заметим, компилятор javac не компилирует все классы в одну программу из байт-кодов. Вместо этого он компилирует каждый класс по отдельности.

Теперь представим, что мы хотим сделать пакетом каталог, в котором находятся первый и второй файлы. Тогда код будет выглядеть следующим образом.

Компиляция и передача пакета виртуальной машине будут выполняться из каталога на уровень выше lesson2:

Одним из самых популярных и востребованных языков программирования считается Java. Давайте посмотрим, какова структура программ на Java, и напишем свою первую программу на этом языке.

Итак, в первую очередь вам понадобится установить JDK (Java Development Kit) — комплект средств разработки приложений на Java. Это софт от Oracle, включающий в себя: — среду выполнения (Java Runtime Environment); — компилятор (javac); — стандартную библиотеку Java; — примеры, техническую документацию.

Устанавливаем JDK

Чтобы установить Java Development Kit: 1. Переходим по ссылке и загружаем JDK для нужной платформы. 2. Извлекаем архив, запускаем приложение. 3. Выбираем «Development Tool», нажимаем «Next». 4. Настраиваем JDK для своей системы. Если речь идёт Windows: — переходим в папку %ProgramFiles%\Java\%версия установленного jdk%\bin; — нажимаем на свойства файла в папке и копируем путь к нему; — переходим в свойства компьютера, открываем вкладку «Дополнительно»; — нажимаем «Переменные среды…»; — создаём в открывшемся окне новую переменную, называем её Path, в её значение вставляем скопированный ранее путь; — открываем командную строку, набираем javac, дабы удостовериться, что JRE установлен и настроен. Если к команде javac будет выдан список аргументов, то всё ок, можно приступать к написанию программ на Java.

Установка IDE

Установив JDK, не помешает установить и IDE (Integrated Development Environment) – комплекс программных средств, применяемых разработчиками для создания программного обеспечения. Среда разработки IDE позволит вам легко писать, запускать, тестировать и отлаживать Java-код.

IDE целесообразно использовать для написания сложных программ. Да, можно писать код даже в простом блокноте, но гораздо удобнее это делать, используя более профессиональные инструменты. Давайте посмотрим, какие IDE сегодня наиболее популярны для Java.

NetBeans

NetBeans выбирают профессиональные Java-разработчики. Среда предоставляет отличные возможности и инструменты, позволяющие сделать программу кроссплатформенной, а ваш код удобочитаемым. Поддерживается как Java, так и другие языки программирования. Среда бесплатна и имеет много плюсов, вот некоторые из них: — возможность форматирования кода; — простой графический интерфейс; — установка сторонних библиотек и многое другое.

Eclipse

Среда предоставляет впечатляющий интерфейс, который удобен и интуитивно понятен. Скачивается бесплатно, имеет ряд плюсов: — форматирование кода; — поддержка разбиения кода на модули; — перетаскивание (drag-and-drop); — просмотр содержимого библиотек; — простота применения одного и того же кода в различных проектах.

IntelliJ IDEA

Известнейшая IDE для Java, написана на Java. Комплектуется уникальными инструментами, позволяет находить ошибки, упрощает отладку кода и т. д. Многие начинающие программисты используют этот софт для создания своих первых программ на Java.

JCreator

Достаточно продвинутая IDE для Java, которая написана на C++ и считается самой быстрой.

Пишем первую программу на Java. Структура программ на Java

Итак, у вас установлено и настроено всё, что необходимо для работы с Java: JDK, JRE и IDE. Что дальше? Конечно же, надо написать первую программу, чтобы удостовериться, что всё в порядке, код работает, а вы готовы изучать язык. Кроме того, это позволит вам познакомиться с базовой структурой Java-кода (тут стоит учесть, что перед началом изучения Java будет нелишним ознакомиться и с основными принципами ООП (объектно-ориентированного программирования). Что касается структуры программ на Java, то её можно представить следующим образом:

javas1_1-20219-9a172c.jpg

Файл с исходным кодом включает несколько классов — это части программы на Java, имеющие определённые функции. Считается хорошей практикой разбивать программы на несколько файлов с кодом, причём каждый со своим назначением. Что касается классов, то в них содержатся методы — это, по сути, действия, которые могут выполнять объекты данного класса. Метод содержит команды, позволяющие получать необходимый результат.

Перед написанием первой программы, нужно создать проект, а в проекте — файл, где будет содержаться код. Вот, как это выглядит на IDE Eclipse (в других IDE процесс не сильно отличается): — сверху выбираем «File», наводим курсор на «New», в появившемся меню выбираем «Java Project»; — появится окно, где вводим имя проекта и прочие необходимые настройки (в первый раз можно оставить как есть), нажимаем «Next». Проект создан! — создаём в проекте класс, где будем писать первую программу. Для этого щёлкаем правой кнопкой мыши по своему проекту (он должен появиться справа), выбираем «New» → «Class» и присваиваем новому классу имя (в нашем примере – это First). Останется лишь нажать «Finish».

Вот мы и добрались до момента написания первой программы на Java. Не будем ломать традицию и напишем программу, выводящую на экран «Hello, world!».

Поздравляем, вы написали первую программу на Java, поэтому готовы к тому, чтобы начать погружаться в увлекательный мир Java-программирования! И делать это лучше с OTUS.

Сегодня вы узнаете немного о том, как устроена типичная программа на Java. И главная новость: каждая программа на Java состоит из классов и объектов.

Что такое классы, вы уже знаете, а что такое объекты?

Начну с аналогии. Представьте, что вы хотите сделать небольшой корабль. Сначала нужно сделать чертёж, затем отдать его на завод, где по этому чертежу соберут корабль. Или десяток. Да вообще, сколько угодно кораблей. По одному чертежу строятся десятки идентичных кораблей, вот что важно.

В программировании на Java все точно так же.

Чертежи

Программист — он как проектировщик. Только проектировщик рисует чертежи, а Java-программист пишет классы. Затем на основе чертежей создаются детали, а на основе классов — объекты.

Сначала мы пишем классы (делаем чертежи), а потом, во время исполнения программы, на основе этих классов Java-машина создает объекты. Точно так же, как корабли создаются на основе чертежей.

Чертёж один, но кораблей может быть много. Корабли разные, у них разные имена, они возят разные грузы. Но они очень похожие: они все — корабли с идентичной конструкцией, и могут выполнять аналогичные задачи.

Или вот еще аналогия.

Муравейник

Муравейник — это хороший пример взаимодействия объектов. В простейшем муравейнике есть три класса муравьёв: королева, воины и рабочие муравьи.

Количество муравьёв каждого класса — разное. Королева — одна на весь муравейник, воинов — десятки, а рабочих муравьёв — сотни. Три класса и сотни объектов. Муравьи взаимодействуют друг с другом, с такими же муравьями и муравьями других классов по жёстко заданным правилам.

Это просто идеальный пример. В типичной программе все точно так же. Есть главный объект, который создаёт объекты всех остальных классов. Объекты начинают взаимодействовать друг с другом и «внешним миром» программы. Внутри этих объектов жёстко запрограммировано их поведение.

Два этих пояснения — это две стороны одной медали. Истина посередине. Первый пример (про чертеж и корабли) показывает связь между классом и объектами этого класса. Аналогия очень сильная. Второй пример (про муравейник) показывает связь между объектами, которые существуют во время работы программы, и написанными классами.

Сначала вы должны написать классы для всех существующих в программе объектов, а потом ещё и описать их взаимодействие. Да, это так, но это легче, чем кажется.

В Java все сущности во время работы программы являются объектами, а написание программы сводится к описанию различных способов взаимодействия объектов. Объекты просто вызывают методы друг друга и передают в них нужные данные.

Документация

А как узнать, какие данные передавать в методы? Тут все уже придумано до вас.

Обычно у каждого класса есть описание, в котором говорится, для чего он создан. Также обычно и у каждого публичного метода есть описание: что он делает, и какие данные нужно в него передавать.

Чтобы использовать класс, нужно в общих чертах знать, что он делает. А также нужно точно знать, что делает каждый его метод. И совсем не обязательно знать, как он это делает. Такая себе волшебная палочка.

Давайте посмотрим на код — копирование файла:

Копирование файла c:\data.txt в файл c:\result.txt

Если прочитать это код построчно, можно догадаться, что он делает в общих чертах. Хотя тут нужен опыт и практика. Так что спустя некоторое время этот код вам покажется знакомым и понятным.

2. Проектирование программы

Проектирование программы — это целое искусство. Это и просто, и сложно одновременно. Просто, потому что никаких жестких законов нет: все, что не запрещено — разрешено. Ну а сложно тоже по этой причине: очень много способов что-то сделать и непросто найти самый лучший.

Главное — понимать, для кого вы пишете код. А код вы пишете для других программистов.

Разработка любого продукта — это внесение изменений: добавили здесь, удалили там, переделали тут. И так маленькими итерациями рождаются большие, огромные и гигантские проекты.

Так как же писать хороший и понятный код?

Для этого нужно делать три вещи:

  • Писать хороший и понятный код внутри методов — самое простое.
  • Решить, какие сущности должны быть в программе
  • Правильно разбивать программу на логические части

Что же стоит за этими понятиями?

Писать хороший код внутри методов

Если у вас хотя бы начальный уровень английского, возможно, вы обратили внимание, как легко иногда читается код: как предложения на английском языке:

Так сделано специально. Java — один из нескольких языков, в которых легко писать самодокументированный код: код, который понятен без комментариев. В хорошем коде в Java многие методы читаются просто как предложения на английском языке.

Ваша задача при написании кода — тоже делать его максимально простым и лаконичным. Просто думайте, а насколько ваш код будет легко читать, и вы начнете двигаться в правильном направлении.

В Java принято писать легко читаемый код. Желательно, чтобы каждый метод целиком помещался на экран (длина метода — 20-30 строк). Это норма для всего Java-комьюнити. Если код можно улучшить, его нужно улучшить.

Лучший способ научиться писать хороший код — постоянная практика. Пишите много кода, изучайте чужой код, просите более опытных коллег сделать ревью вашего кода.

И помните, что в тот момент, когда вы себе скажете «и так сойдет», ваше развитие остановится.

Решать, какие сущности должны быть в программе

Вам нужно писать код, понятный для других программистов. Если 9 из 10 программистов при проектировании программы сделают в ней классы A, B и С, то и вам тоже нужно сделать в вашей программе классы A, B, и C. Вы должны писать код, понятный для других.

Отличный, работающий, быстрый, нестандартный код — это плохой код.

Вам нужно изучать чужие проекты: это самый лучший, самый быстрый и самый легкий способ перенять всю мудрость, которая десятилетиями копилась в ИТ-индустрии.

И, кстати, у вас уже есть под рукой отличный, популярный, хорошо документированный проект — Java SDK. Начните с него.

Разбирайте классы и структуры классов. Думайте, почему одни методы сделаны статическими, а другие — нет. Почему у методов именно такие параметры, а не другие. Почему именно такие методы, почему классы называются именно так и находятся именно в таких пакетах.

Когда вы начнете понимать ответы на все эти вопросы, вы сможете писать код, понятный другим.

Однако хочу предостеречь вас от разбора кода в методах Java SDK. Код многих методов был переписан с целью максимизации скорости работы — его читабельность под большим вопросом.

Правильно разбивать программу на логические части

Любую программу обычно разбивают на части или модули. Каждая часть отвечает за свой аспект программы.

Вот у компьютера есть системный блок, монитор, клавиатуры, и это все отдельные, малозависимые части. Более того, их взаимодействие стандартизировано: USB, HDMI и т.п. Зато если вы прольете кофе на клавиатуру, вы можете просто помыть ее под краном, просушить и пользоваться дальше.

А вот ноутбук — это пример монолитной архитектуры: логические части вроде и есть, но интегрированы гораздо сильнее. У MacBookPro, чтобы почистить клавиатуру, нужно разобрать половину ноутбука. А пролитый на ноутбук кофе — повод заказать новый. Только не кофе.

3. Создание своих классов

Но т.к. вы только учитесь программировать, вам нужно начинать с малого — учиться создавать собственные классы.

Вы их, конечно же, уже создавали, но вам нужно учиться понимать, какие классы должны быть в программе, как они должны называться, какие у них должны быть методы. И как они должны друг с другом взаимодействовать.

Список сущностей

Если вы не знаете, с чего начать, начните с начала.

В самом начале проектирования программы вы можете просто выписать на листик список сущностей (объектов), которые должны быть в программе. А потом запрограммировать их по такому принципу: каждая сущность — отдельный класс.

Пример

Допустим, вы хотите написать игру в шахматы. Вам понадобятся такие сущности: шахматная доска и 6 типов фигур. Фигуры ходят по-разному, имеют разную ценность — логично, что это отдельные классы. И вообще, в самом начале, чем больше классов — тем лучше.

Встретить программиста-новичка, который вместо двух классов написал бы десять — большая редкость. Вот вместо десяти написать два, а то и один — это новички любят. Так что больше классов, господа программисты. И ваш код станет понятнее всем, кроме, возможно вас 😛

Шахматы

Допустим, мы решили писать классы для шахмат: как бы эти классы выглядели?

Шахматная доска — это просто массив 8 на 8? Лучше сделайте для нее отдельный класс, который внутри хранит ссылку на массив. Тогда в класс «шахматная доска» вы сможете добавить много полезных методов, которые, например, проверяют, что клетка пустая или занята

В общем, в начале всегда можно руководствоваться принципом: Программа имеет разные Сущности, а у Сущности есть тип. Вот этот тип — это и есть класс.

4. Статические переменные и методы

Также не забывайте пользоваться статическими переменными и методами. Если у вас одна шахматная фигура взаимодействует с другой на шахматной доске, значит, в коде у вас должен быть метод, в который передаются ссылки на первую фигуру, на вторую и на шахматную доску.

Чтобы постоянно не передавать ссылки на объекты, которые «существуют всегда», их обычно делают статическими переменными, и к ним можно обратиться из любого места программы.

Ну или вместо статической переменной можно сделать метод, который возвращает единственный объект. Например, так:

Читайте также: