Открыть список
Как стать автором
Обновить

Книга «Java: быстрый старт»

Блог компании Издательский дом «Питер»JavaПрофессиональная литература
image Привет, Хаброжители! Всегда хотели научиться программировать на Java, но не знаете, с чего начать? Или хотите быстро перейти с другого языка на Java?

Уже перепробовали множество книг и курсов, но ничего не подходит?

Серия «Быстрый старт» — отличное решение, и вот почему: сложные понятия разбиты на простые шаги — вы сможете освоить язык Java, даже если никогда раньше не занимались программированием; все фундаментальные концепции подкреплены реальными примерами; вы получите полное представление о Java: концепции объектно-ориентированного программирования, средства обработки ошибок, работа с файлами, лямбда-выражения и т. д.; в конце книги вас ждет интересный проект, который поможет усвоить полученные знания.

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ, ЧАСТЬ I


В этой главе будет рассмотрена очень важная концепция программирования на языке Java — концепция объектно-ориентированного программирования.

Вы узнаете, что такое объектно-ориентированное программирование, научитесь писать собственные классы и создавать объекты на их основе. Кроме того, также будут рассмотрены концепции полей, get- и set-методов, конструкторов и методов.

7.1. ЧТО ТАКОЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ?

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

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

7.2. НАПИСАНИЕ СОБСТВЕННЫХ КЛАССОВ

Синтаксис объявления класса:

AccessModifier class ClassName {
// Содержимое класса
// с полями, конструкторами и методами
}

Пример:

public class ManagementStaff{
}

В этом примере сначала указывается уровень доступа класса, для чего используется модификатор доступа. Модификаторы доступа класса напоминают привратников, управляющих тем, кому разрешен доступ к этому классу. Другими словами, они управляют тем, могут ли другие классы использовать некоторое поле или метод класса.

Класс может быть либо открытым (public), либо пакетным. В приведенном примере определяется открытый класс. Модификатор public означает, что класс доступен для любого класса в программе.

С другой стороны, пакетный уровень доступа означает, что класс доступен только для других классов того же пакета. В одном приложении Java может использоваться несколько пакетов. Если вы забыли, что такое пакет, вернитесь к подразделу 2.4.1. По умолчанию используется пакетный уровень доступа. Если модификатор доступа не указан, это означает, что класс будет иметь пакетный уровень доступа. Модификаторы доступа более подробно рассматриваются в разделе 8.5.

После объявления уровня доступа класса следует ключевое слово class — признак того, что мы объявляем класс. За ним идет имя класса (ManagementStaff).

В именах классов принято использовать Схему Pascal. Этим термином обозначается практика, при которой каждое слово (включая первое) начинается с символа верхнего регистра — например, ThisIsAClassName. Эта схема будет использоваться в книге.

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

А теперь попробуем построить класс с самого начала.

Запустите NetBeans и создайте новое приложение Java с именем ObjectOrientedDemo.

Проанализируйте код, который был сгенерирован за вас. Заметили, что среда NetBeans автоматически создала открытый класс за вас?

Открытый класс назывался ObjectOrientedDemo; его имя совпадает с именем файла (ObjectOrientedDemo.java). В языке Java в каждом файле Java может быть только один открытый класс, имя которого должно совпадать с именем файла. Метод main() находится в этом открытом классе.

В данном примере мы создадим второй класс Java, который взаимодействует с классом ObjectOrientedDemo. Этот класс будет создан в пакете objectorienteddemo. Для этого щелкните правой кнопкой мыши на имени пакета на панели Project Explorer и выберите команду New -> Java Class. При создании нового класса очень важно щелкнуть на правильном элементе Project Explorer. Например, если вы добавляете новый класс в пакет objectorienteddemo, при создании класса необходимо щелкнуть на имени пакета, как показано на иллюстрации.

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

public class Staff {
//Содержимое класса
}

Очень важно, чтобы содержимое класса вводилось между открывающей и закрывающей фигурными скобками. В противном случае программа работать не будет. Полный код для этой главы можно загрузить по адресу: www.learncodingfast.com/java.

7.2.1. ПОЛЯ


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

private String nameOfStaff;
private final int hourlyRate = 30;
private int hoursWorked;

Здесь объявляется одна переменная типа String (nameOfStaff) и две переменные типа int (hourlyRate и hoursWorked). Эти переменные называются полями класса. Поле — переменная, объявленная внутри класса. Как и другие переменные, они предназначены для хранения данных. Все три поля объявлены приватными (private).

Поле может быть объявлено как приватное (private), открытое (public) или защищенное (protected). Если уровень доступа для компонента класса не указан, то он по умолчанию считается пакетным (т. е. доступным только для других классов того же пакета). В нашем случае три поля объявлены приватными. Это означает, что к ним можно обращаться только из самого класса Staff. Другие классы (такие, как класс ObjectOrientedDemo) к этим полям обращаться не могут.

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

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

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

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

Кроме ключевого слова private при объявлении поля hourlyRate также было добавлено ключевое слово final:

private final int hourlyRate = 30;

Ключевое слово final означает, что значение не может быть изменено после создания. Любая переменная, объявленная с ключевым словом final, должна быть инициализирована в точке объявления или внутри конструктора (о конструкторах речь пойдет позднее). В нашем примере поле hourlyRate инициализируется значением 30 при объявлении. В дальнейшем вы уже не сможете изменить это значение.

7.2.2. МЕТОДЫ


А теперь перейдем к методам.

Метод представляет собой блок кода для выполнения некоторой задачи.

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

public void printMessage()
{
System.out.println("Calculating Pay…");
}

Метод объявляется так:

public void printMessage()
{
}

Объявление метода начинается с уровня доступа. Здесь метод объявляется открытым (public), так что метод доступен в любой точке программы (не только в классе Staff).

Затем указывается возвращаемый тип метода. Метод может вернуть некоторый результат после выполнения своей задачи. Если метод не возвращает никакого результата, используется ключевое слово void, как в приведенном примере.

После этого указывается имя метода (printMessage в данном примере).

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

После объявления метода мы определяем, что делает метод, в паре фигурных скобок. Это называется реализацией метода. В нашем примере метод printMessage() просто выводит строку «Calculating Pay…».

Собственно, ничего больше printMessage() не делает.

Перейдем к более сложному методу. Второй метод вычисляет оплату каждого работника и возвращает результат вычисления. Добавьте следующий фрагмент в класс Staff:

public int calculatePay()
{
printMessage();
int staffPay;
staffPay = hoursWorked * hourlyRate ;
if (hoursWorked > 0)
    return staffPay;
else
    return -1;
}

Объявление метода:

public int calculatePay()
{
}


Ключевое слово int означает, что метод возвращает значение, относящееся к типу int.

В фигурные скобки заключена команда

printMessage();

Эта конструкция называется вызовом метода printMessage(). Когда программа достигает этой команды, она выполняет метод printMessage(), написанный нами ранее, и выводит строку «Calculating Pay…» перед выполнением оставшейся части метода calculatePay(). Пример показывает, как вызвать один метод из другого метода.

Затем объявляется локальная переменная staffPay, которой присваивается произведение приватных полей hourlyRate и hoursWorked.

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

После присваивания переменной staffPay метод calculatePay() использует команду if для определения того, какой результат должен быть возвращен методом.

Обычно метод содержит как минимум одну команду return. Ключевое слово return используется для возвращения результата из метода. Метод может содержать несколько команд return. Тем не менее, как только в методе будет выполнена команда return, его выполнение будет завершено.

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

return staffPay;

и выйдет из метода. Возвращаемое значение может быть присвоено переменной. Вскоре вы увидите, как сделать это в методе main().

С другой стороны, если значение hoursWorked меньше или равно 0, то программа выполнит команду

return -1;

и выйдет из метода.

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

Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок

Для Хаброжителей скидка 25% по купону — Java

По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Теги:java
Хабы: Блог компании Издательский дом «Питер» Java Профессиональная литература
Всего голосов 7: ↑5 и ↓2 +3
Просмотры2.4K

Похожие публикации

Лучшие публикации за сутки

Информация

Дата основания
Местоположение
Россия
Сайт
piter.com
Численность
201–500 человек
Дата регистрации

Блог на Хабре