printf, говоря, getName setName - PullRequest
2 голосов
/ 28 июля 2011

Я только что посмотрел учебник на YouTube, который называется "много методов и экземпляров". Он создал программу, в которой вы что-то вводите, и там написано "ваш первый gf был _ ". Но это было слишком сложно. Первый основной класс:

import java.util.Scanner;

public class MethodsInstances2 {
    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        MethodsInstances object = new MethodsInstances();
        System.out.println("Enter name of first gf here: ");
        String temp = input.nextLine();
        object.setName(temp);
        object.saying();
    }
}

Следующий класс, из которого он делает объект:

public class MethodsInstances {
    private String girlName;
    public void setName (String name){
        girlName=name;
    }
    public String getName (){
        return girlName;
    }
    public void saying(){
        System.out.printf("Your first gf was %s", getName());
    }
}

Казалось, СЛИШКОМ слишком сложно, и название - это все то, чего я не понимал, учитывая, что я все еще новичок в Java. Вот что я набрал, что заняло в 4 раза быстрее:

import java.util.Scanner;
public class programtest {
    public static void main(String args[]){
        Scanner test = new Scanner(System.in);
        String name;
        System.out.println("Enter the name of your first girfriend: ");
        name = test.next();
        System.out.println("Your first girlfriend was " + name);
    }
}

Может кто-нибудь сказать мне смысл делать то, что сказал, что делать, и что означают заглавные слова?

Большое спасибо, Дэн

Ответы [ 4 ]

4 голосов
/ 28 июля 2011

Учебное пособие называется "много методов и экземпляров", и из моего POV очень просто показано, как создать класс, создать его экземпляр и вызвать его методы. Он был бы назван «получить какой-нибудь консольный ввод и выплюнуть его обратно», если бы он предназначался для того, чтобы делать вещи как можно проще.

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

У вас есть класс с именем MethodInstances (не очень хорошее имя примера, кстати), который вы создаете, а затем вызываете для него методы для сохранения состояния (имя gf) и получения его обратно и отображения. (Я бы предложил рефакторинг примера, чтобы он имел больше смысла. Глагол как таковой вызывает путаницу.)

Попробуйте это на:

import java.util.Scanner;

public class ObjectInstanceMethodExample {
    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        FirstGirlfriend firstGF = new FirstGirlfriend();
        System.out.println("Enter name of first gf here: ");
        String temp = input.nextLine();
        firstGF.setName(temp);
        firstGF.sayFirstGirlfriendName();
    }
}

class FirstGirlfriend {
    private String girlName;
    public void setName (String name){
        girlName=name;
    }
    public String getName (){
        return girlName;
    }
    public void sayFirstGirlfriendName(){
        System.out.printf("Your first gf was %s", getName());
    }
}

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

Я предлагаю найти еще более простые примеры для начинающих, прежде чем углубляться в ООП или ... принять ООП и работать с ним.

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

1 голос
/ 28 июля 2011

Для начала ваш код использует test.next ();вместо исходного input.nextLine ();

printf - одна из старейших функций, известных программистам, ей около 30 лет!

В ней используется широко известный универсальный стильпараметры форматирования для «предварительного преобразования» текстового вывода и вставки различных типов в строку.

1 голос
/ 28 июля 2011

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

И да, это слишком сложно.Но методика очень полезна для более крупных и реальных проблем.

0 голосов
/ 28 июля 2011

Второй класс содержит только строку с именем girlName.Поскольку это поле имеет частный доступ, к нему нельзя получить доступ из-за пределов своего собственного класса (см. Сокрытие данных).

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

Вы пишете вместо:

MethodsInstances.girlName = "myGirlsName";
MethodsInstances.setName("myGirlName");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...