Статьи

NetBeans в классе: обязательные методы для бобов (часть 1)


колледже Доусон в Монреале, Канада. Он также является программным консультантом и по совместительству преподавателем в Школе расширенного обучения при Институте вычислительной техники Университета Конкордия . Он ведет блог на omniprogrammer.com и пишет в Твиттере @omniprof . Его регулярные колонки о NetBeans в образовании перечислены здесь .

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

На уроках первого уровня я знакомлю своих учеников с первыми двумя из пяти методов, которые должен иметь каждый компонент данных. Первый метод — конструктор. Его цель — установить начальное состояние объекта. NetBeans упрощает это с помощью меню «Источник» -> «Вставить код» Мы использовали его в предыдущей статье для создания геттеров и сеттеров . Теперь мы будем использовать его для конструктора.

По традиции конструктор обычно размещается сразу после переменных класса. Я помещаю курсор в пустую строку сразу после последней переменной, и NetBeans создает конструктор.

Появится диалоговое окно для выбора переменных класса для включения в конструктор. Если оставить их все неконтролируемыми, создается конструктор по умолчанию или без аргументов, который отвечает за свое начальное состояние. Выбор одного или нескольких элементов создаст конструктор, который позволяет объекту установить его состояние создателем объекта. Как только начинающие программисты начинают, я говорю своим ученикам создать конструктор по умолчанию и конструктор не по умолчанию со всеми выбранными переменными класса. Это означает, что они выполняют эту задачу дважды.

Это приводит к следующему коду:

public MyCarBean() {
}

public MyCarBean(String manufacturer, String model, int engineDisplacement,
        int cylinders, String transmission, String driveTrain, int weight,
        double cityConsumptionInLitres, double cityConsumptionInMilesPerGallon,
        double highwayConsumptionInLitres, double highwayConsumptionInMilesPerGallon,
        double estimatedAnnualFuelCost) {
    this.manufacturer = manufacturer;
    this.model = model;
    this.engineDisplacement = engineDisplacement;
    this.cylinders = cylinders;
    this.transmission = transmission;
    this.driveTrain = driveTrain;
    this.weight = weight;
    this.cityConsumptionInLitres = cityConsumptionInLitres;
    this.cityConsumptionInMilesPerGallon = cityConsumptionInMilesPerGallon;
    this.highwayConsumptionInLitres = highwayConsumptionInLitres;
    this.highwayConsumptionInMilesPerGallon = highwayConsumptionInMilesPerGallon;
    this.estimatedAnnualFuelCost = estimatedAnnualFuelCost;
}

Если объект создается без каких-либо аргументов, вызывается конструктор по умолчанию, а переменные класса принимают значения по умолчанию. Для примитивов это ноль, а для ссылок на объекты — ноль. По сути, любая переменная класса, которая не инициализирована явно, будет неявно инициализирована этими значениями.

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

public class Employee {
    private double wage = 10.0;
    private SkillSet skill = new SkillSet();

Я говорю своим ученикам, что приму простое задание, например, wage = 10, но не создание объекта с новым. Для этого вам нужен конструктор.

public class Employee {
    private double wage = 10;
    private SkillSet skill;

    public Employee() {
        super();
        skill = new SkillSet();
        }

Вы также заметите явный вызов конструктора суперкласса с помощью super (). Много было написано на эту тему. Мой подход для начинающих студентов к программированию на Java — требовать явного вызова конструктора по умолчанию. Это не может причинить вреда, но если вы используете super (), и это ошибка, потому что расширяемый класс не имеет конструктора по умолчанию, тогда это говорит вам кое-что важное о том, что вы расширяете. Что это будет предметом следующей статьи. Мои студенты пишут super () как первую строку каждого конструктора, который они пишут.

Следующим обязательным методом с двумя конструкторами является метод toString (). Это метод, который наследуется каждым объектом, который вы создаете из суперкласса в верхней части иерархии классов, называемой Object. Этот метод позволяет использовать ссылку на объект в тех местах, где ожидается ссылка на строку. Обычно состояние каждой переменной класса добавляется к строке, чтобы ее можно было использовать в операторе System.out.println.

Так же, как вы создали конструкторы, вы можете создать метод toString. Выберите «Источник» -> «Вставить код», а затем выберите toString (). Традиционное расположение для toString — после последнего метода в бине.

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

Полученный код выглядит так:

@Override
public String toString() {
    return "MyCarBean{" + 
       "manufacturer=" + manufacturer + 
       ", model=" + model + 
       ", engineDisplacement=" + engineDisplacement + 
       ", cylinders=" + cylinders + 
       ", transmission=" + transmission + 
       ", driveTrain=" + driveTrain + 
       ", weight=" + weight + 
       ", cityConsumptionInLitres=" + cityConsumptionInLitres + 
       ", cityConsumptionInMilesPerGallon=" + cityConsumptionInMilesPerGallon + 
       ", highwayConsumptionInLitres=" + highwayConsumptionInLitres + 
       ", highwayConsumptionInMilesPerGallon=" + highwayConsumptionInMilesPerGallon + 
       ", estimatedAnnualFuelCost=" + estimatedAnnualFuelCost + '}';
}

В моих начальных заданиях я требую, чтобы мои ученики составляли отчеты, состоящие из всех членов класса. Я показываю своим ученикам, как нарядиться для этой цели.

@Override
public String toString() {
   return "                       Manufacturer = " + manufacturer + 
        "\n                              Model = " + model + 
        "\n                Engine Displacement = " + engineDisplacement + 
        "\n                          Cylinders = " + cylinders + 
        "\n                       Transmission = " + transmission + 
        "\n                        Drive Train = " + driveTrain + 
        "\n                             Weight = " + weight + 
        "\n   City Consumption In Litres/100km = " + cityConsumptionInLitres + 
        "\n            City Consumption In MPG = " + cityConsumptionInMilesPerGallon + 
        "\nHighway Consumption In Litres/100km = " + highwayConsumptionInLitres + 
        "\n         Highway Consumption In MPG = " + highwayConsumptionInMilesPerGallon + 
        "\n         Estimated Annual Fuel Cost = " + estimatedAnnualFuelCost + "\n";
}

В следующей статье мы рассмотрим три последних обязательных метода.