У меня есть сделанный код., но в нем у меня выходят 2 сомнения.
Будь хорошо? Это моя первая программа, ориентируемая на объекты и я не знаю, ли он 100 % правильных.
Мне хотелось бы мочь создавать некоторые Nurses
, не только 1, но я не знаю, как он делается. Прямо сейчас сохранял бы только 1 и я нуждаюсь в том, чтобы сохранять некоторые, не зная сколькие.
Далее, код:
package principal;
import java.util.ArrayList;
import java.util.Scanner;
/**
*
* @author MiguelAngel
*/
public class Nurse {
private String nif;
private String name;
private String lastname;
/*
TODO Constructor
Paràmetres: String nif, String name, String lastname
Accions:
- actualitzar les propietats que ens han passat per paràmetre
*/
public Nurse(String nif, String name, String lastname) {
this.nif = nif;
this.name = name;
this.lastname = lastname;
}
public String getNif(){ return nif; }
public String getName(){ return name; }
public String getLastname(){ return lastname ; }
public void setNif(String Nif){ this.nif = Nif;}
public void setName(String Name){ this.name = Name;}
public void setLastname(String Lastname){ this.lastname = Lastname ;}
/*
TODO Mètodes accessors
*/
public static Nurse addNurse() {
/*
TODO
Paràmetres: sense
Accions:
- demanar les dades per consola per crear un nou infermer (són les dades que demana el constructor)
Retorneu: L'infermer creat
*/
// carreguem
int contUser=0, cod=1; //variable llevar control usuarios ingresados
Nurse Nurse1 = new Nurse("Nif", "Name", "Lastname");
String nif = Nurse1.getNif();
String name = Nurse1.getName();
String lastname = Nurse1.getLastname();
// creem a sobre
Scanner lector = new Scanner(System.in);
System.out.println("Nif nurse??");
nif = lector.next();
Nurse1.setNif(nif);
System.out.println("Nom Nurse??");
name = lector.next();
Nurse1.setName(name);
System.out.println("Cognom Nurse???");
lastname = lector.next();
Nurse1.setLastname(lastname);
return Nurse1;
}
public void updateNurse() {
/*
TODO
Paràmetres: sense
Accions:
- demanar les dades de l'infermer per consola i modifiqueu la propietat corresponent
Nota: penseu que estem modificant l'objecte actual ...
Retorneu: no hi ha retorn
*/
Nurse Nurse1 = new Nurse("Nif", "Name", "Lastname");
System.out.println("Modifiquem Nurse ");
Scanner lector = new Scanner(System.in);
System.out.println("Nif nurse??");
String code = lector.next();
Nurse1.setNif(code);
System.out.println("Nom Nurse??");
String nom = lector.next();
Nurse1.setName(nom);
System.out.println("Cognom Nurse???");
String cognom = lector.next();
Nurse1.setLastname(cognom);
}
public void showNurse() {
System.out.println("\nLes dades de l'infermer amb nif " + this.getNif() + " són:");
System.out.println("\nNom:" + this.getName());
System.out.println("\nCognom:" + this.getLastname());
}
}
Я считаю как классы, так и java doc обязанными. а именно не возможно изменять никакого класса.
ОБНОВЛЕНИЕ!!
Перед сомнениями, я комментирую вам.
Я обязана иметь эту часть кода:
public class Nurse {
private String nif;
private String name;
private String lastname;
/*
TODO Constructor
Paràmetres: String nif, String name, String lastname
Accions:
- actualitzar les propietats que ens han passat per paràmetre
*/
/*
TODO Mètodes accessors
*/
public static Nurse addNurse() {
/*
TODO
Paràmetres: sense
Accions:
- demanar les dades per consola per crear un nou infermer (són les dades que demana el constructor)
Retorneu: L'infermer creat
*/
return ............
}
public void updateNurse() {
/*
TODO
Paràmetres: sense
Accions:
- demanar les dades de l'infermer per consola i modifiqueu la propietat corresponent
Nota: penseu que estem modificant l'objecte actual ...
Retorneu: no hi ha retorn
*/
}
public void showNurse() {
System.out.println("\nLes dades de l'infermer amb nif " + this.getNif() + " són:");
System.out.println("\nNom:" + this.getName());
System.out.println("\nCognom:" + this.getLastname());
}
}
Что я должен делать? Функция AddNurse()
Создавать X санитаров (nombre
, apellido
и Nif
) из-за клавиатуры.
Функция updateNurse()
Изменять санитары.
Я не знаю, - 100 % ли правильных мой код, любая помощь я пойдет гениально!
спасибо!
КОНЕЦ
Проблема, которая у него была, состоит в том, что он не мог создавать список, так как он не вышел в тематике. Конечный код остался таким:
package principal;
import java.util.Scanner;
/**
*
* @author Montse
*/
public class Nurse {
private String nif;
private String name;
private String lastname;
/*
TODO Constructor
Paràmetres: String nif, String name, String lastname
Accions:
- actualitzar les propietats que ens han passat per paràmetre
*/
public Nurse(String nif, String name, String lastname) {
this.nif = nif;
this.name = name;
this.lastname = lastname;
}
public String getNif(){ return nif; }
public String getName(){ return name; }
public String getLastname(){ return lastname ; }
public void setNif(String Nif){ this.nif = Nif;}
public void setName(String Name){ this.name = Name;}
public void setLastname(String Lastname){ this.lastname = Lastname ;}
/*
TODO Mètodes accessors
*/
public static Nurse addNurse() {
/*
TODO
Paràmetres: sense
Accions:
- demanar les dades per consola per crear un nou infermer (són les dades que demana el constructor)
Retorneu: L'infermer creat
*/
// carreguem
Nurse Nurse1 = new Nurse("Nif", "Name", "Lastname");
String nif = Nurse1.getNif();
String name = Nurse1.getName();
String lastname = Nurse1.getLastname();
// creem a sobre
Scanner lector = new Scanner(System.in);
System.out.println("Nif nurse??");
nif = lector.next();
Nurse1.setNif(nif);
System.out.println("Nom Nurse??");
name = lector.next();
Nurse1.setName(name);
System.out.println("Cognom Nurse???");
lastname = lector.next();
Nurse1.setLastname(lastname);
return Nurse1;
}
public void updateNurse() {
/*
TODO
Paràmetres: sense
Accions:
- demanar les dades de l'infermer per consola i modifiqueu la propietat corresponent
Nota: penseu que estem modificant l'objecte actual ...
Retorneu: no hi ha retorn
*/
Nurse Nurse1 = new Nurse("Nif", "Name", "Lastname");
System.out.println("Modifiquem Nurse ");
Scanner lector = new Scanner(System.in);
System.out.println("Nif nurse??");
String code = lector.next();
Nurse1.setNif(code);
System.out.println("Nom Nurse??");
String nom = lector.next();
Nurse1.setName(nom);
System.out.println("Cognom Nurse???");
String cognom = lector.next();
Nurse1.setLastname(cognom);
}
public void showNurse() {
System.out.println("\nLes dades de l'infermer amb nif " + this.getNif() + " són:");
System.out.println("\nNom:" + this.getName());
System.out.println("\nCognom:" + this.getLastname());
}
}
Потом, я создал в главном классе:
static private Nurse[] nurses = new Nurse[100];
static private int contador = 0;
И в призыве к функции:
case 1:
System.out.println("has escollit Alta");
Nurse n = Nurse.addNurse();
nurses[contador] = n;
contador ++;
break;
- Я gustarГ, - чтобы мочь создавать, ты изменяешь не одинокую Nurses 1., но не sГ©, как делается. а именно прямо сейчас я guardarГ - только 1. И я нуждаюсь в том, чтобы сохранять некоторые так, что все те не знают.
как ты говоришь, что так, что все те не знают , ты должен создавать одну List
чтобы для хранить каждую инстанцию, в которую ты веришь:
List<Nurse> nurses = new ArrayList<Nurse>();
, Когда ты веришь новая медицинская сестра:
Nurse nurseA = new Nurse("333444555", "Nom", "Cognom");
Она aГ±ades так:
nurses.add(nurseA);
Также ты можешь использовать статический метод addNurse()
, которые ты создал:
Nurse nurseB = Nurse.addNurse();
nurses.add(nurseB);
Или то, что является тем же самым:
nurses.add(Nurse.addNurse());
Какие-то aГ±adidos наблюдая твой код:
ArrayList
, потому что, хотя ты это не используешь ты это считаешь импортируемыми Nurse nurseA
Nurse
, что aГ±adas Удали nurses.size()
, чтобы не иметь проблемы отсутствия контроля Смотрит этот demo в ideone с методом main и списки примера, ты можешь копировать это себе в твой IDE, чтобы санитары выполняют в помещении descomentando линии, чтобы создавать из-за консоли:
public static void main (String[] args) throws java.lang.Exception
{
// creem la llista per afegir infermers
List<Nurse> nurses = new ArrayList<Nurse>();
// creem un infermer
Nurse nurseA = new Nurse("333444555", "Joan", "Casademunt");
// afegim un infermer
nurses.add(nurseA);
// creem un infermer
nurseA = new Nurse("654987", "Maria", "Serra");
// afegim un infermer
nurses.add(nurseA);
// creem unaltra infermer (al ideone no es pot fer)
//Nurse nurseB = Nurse.addNurse();
// l'afegim
//nurses.add(nurseB);
// tambe es pot fer aixi
// nurses.add(Nurse.addNurse());
// recorrem tots els infermers i els ensenyem
for (Nurse n : nurses) {
n.showNurse();
}
// si tens mes dubtes, pregunta! ;)
}
PD: удача и вопрос то, что necessites;)
Я был должен удалять часть ответа, потому что Ариэль Октавио Д'Альфео был быстрее, кажется, что Вы используете Nurse такого способа как узел / дерево, который создает aГ±ade узлы, гораздо более простой формы и который не равный, но, для того, чтобы был понятен пример, применяя Ваш ответ Ариэля Вы можете делать что-либо подобное:
будьте Взят как pseudo code:
Main
ArrayList <Nurse> nurseArrayList= new ArrayList <Nurse> ();
//esto añade tantas como dure el for
for(int a = 0; a < 10; a++){
nurseArrayList.add(Nurse.addNurse());
}
Usted он говорит, что он не знает все те, но не, если он относится, которого он не имеет вкус все те, он будет хранить на протяжении Вашей программы, или к которому он относится, если это, у которого пользователь из-за CLI (из-за консоли) Вы просите число, и это те, которые aГ±adira, если он так одинокий, он должен менять 10 на стоимость, которую его перемещает пользователь.
Update:
................................ проблема состоит в том, что у меня есть главный класс (что я способствую тому, чтобы пользователь выбрал, если он хочет выписать медицинских сестер) переключатель (opcio) {я женил 0: break; жените 1: System.out.println ("ты существуешь escollit Высокая"); Nurse.addNurse (); break; И это это приносит в AddNurse () Тогда не sГ©, где помещать эту часть:
switch (opcio) {
case 0:
break;
case 1:
System.out.println("has escollit Alta");
puedeLlamarAUnMetodo(); //Llama al metodo "asumiendo que este este disponible desde aqui"
break;
..//
ArrayList <Nurse> nurseArrayList= new ArrayList <Nurse> ();
..//
void puedeLlamarAUnMetodo(){
nurseArrayList.add(Nurse.addNurse());
}
public static Nurse addNurse() {
/*
TODO
Paràmetres: sense
Accions:
- demanar les dades per consola per crear un nou infermer (són les dades que demana el constructor)
Retorneu: L'infermer creat
*/
// carreguem
int contUser=0, cod=1; //variable llevar control usuarios ingresados
Nurse Nurse1 = new Nurse("Nif", "Name", "Lastname");
String nif = Nurse1.getNif();
String name = Nurse1.getName();
String lastname = Nurse1.getLastname();
// creem a sobre
Scanner lector = new Scanner(System.in);
System.out.println("Nif nurse??");
nif = lector.next();
Nurse1.setNif(nif);
System.out.println("Nom Nurse??");
name = lector.next();
Nurse1.setName(name);
System.out.println("Cognom Nurse???");
lastname = lector.next();
Nurse1.setLastname(lastname);
return Nurse1;
}
, как я читаю, ты должен использовать showNurse
простой серьезный способ перемещать его Array:
public void showNurse(ArrayList <Nurse> nurseArrayList) {
//para mostrar todas
for(int a = 0; a < nurseArrayList.size(); a++){
System.out.println("\nLes dades de l'infermer amb nif " + nurseArrayList.get(a).getNif() + " són:");
System.out.println("\nNom:" + nurseArrayList.get(a).getName());
System.out.println("\nCognom:" + nurseArrayList.get(a).getLastname());
}
}
Для другого updateNurse
, ты перемещаешь его Array и string, который соответствует с nif:
public void updateNurse(ArrayList <Nurse> nurseArrayList, string actualizarPorNif) {
//en este caso igual te podria ser util usar algun map
for(int a = 0; a < nurseArrayList.size(); a++){
if(nurseArrayList.get(a).getNif().equals(actualizarPorNif){
System.out.println("Modifiquem Nurse ");
Scanner lector = new Scanner(System.in);
System.out.println("Nif nurse??");
String code = lector.next();
nurseArrayList.get(a).setNif(code);
System.out.println("Nom Nurse??");
String nom = lector.next();
nurseArrayList.get(a).setName(nom);
System.out.println("Cognom Nurse???");
String cognom = lector.next();
nurseArrayList.get(a).setLastname(cognom);
}
}
}
Замечания: Будьте взят все это, как pseudo code не в бывший testeado ни в созданный ни в каком ide (syntax), также очень возможно, что это не самая работоспособная форма ни правильная, но я думаю, что он может использовать это как основание.
PodrГ-схвати создавать ArrayList типа Nurse
ArrayList <Nurse> NurseArrayList= new ArrayList <Nurse> ();
NurseArrayList.add(new Nurse("Nif", "Name", "Lastname"))
NurseArrayList.add(new Nurse("Nif2", "Name2", "Lastname2"))
NurseArrayList.add(new Nurse("Nif3", "Name3", "Lastname3"))
и asГ - последовательно
Мас Инфо:
Синтаксис, чтобы создавать ArrayList Объектов, - следующий:
ArrayList <ClaseDelObjeto> NombreArrayList= new ArrayList <ClaseDelObjeto> ();
ClaseDelObjeto
=> Класс, который мы будем использовать для управления данных об объекте. NombreArrayList
=> Имя ArrayList, которым мы будем манипулировать.
Предыдущие - данные, которые заменяются именами, которые мы желаем и должны использовать. Чтобы использовать этот синтаксис мы, должно быть, импортируем необходимые книжные магазины, чтобы использовать ArrayList:
import java.util.ArrayList;
MГ‰TODOS ГљTILES ДЛЯ ARRAYLIST В JAVA
, Чтобы реализовывать такие общие операции, как ввождение информацию в компьютер, удалять, искать, изменять данные в ArrayList мы найдем какие-то mГ©todos Гєtiles для такой цели:
add(X)
-> AГ±ade стоимость или объект в конце ArrayList. size()
-> Возвращается tamaГ±o ArrayList. contains(X)
-> Возвращается true, если существует элемент X в ArrayList. set(i, X)
-> Изменяет элемент, который в ней posiciГіn i, из-за нового элемента X. remove(X)
год-> Удаляет элемент X или в Вашем недостатке элемент в posiciГіn X. get(i)
год-> Получает элемент в ней posiciГіn i от Арраи Лист. 1) правилен ты cГіdigo в большие черты (serГ - в хороший применять к нему формат), но он зависит от, у которого должны быть требования, должен иметь три свойства?, один mГ©todo, чтобы показывать данные?, один mГ©todo, чтобы обновлять?. Чего он требует ты cГіdigo? на основании этого возможно определять, если он хорошо и выполняет цели.
2) , Чтобы создавать несколько "Nurse", просто ты должен создавать новую инстанцию, что ты реализуешь в твоей программе посредством: new Nurse()
.
Nurse Nurse1 = new Nurse("Nif", "Name", "Lastname");
например мы будем добавлять 3 инстанции "Nurse": Сначала ты создаешь список объектов тип Nurse:
List<Nurse> nurses = new ArrayList<Nurse>();
Ты Создаешь инстанции Nurse:
Nurse nurseA = new Nurse("123", "Maria", "abc");
Nurse nurseB = new Nurse("456", "Montse", "def");
Nurse nurseC = new Nurse("789", "Alba", "ghi");
и ты добавляешь к списку посредством mГ©todo add()
asГ-:
nurses.add(nurseA);
nurses.add(nurseB);
nurses.add(nurseC);
Если программа хорошо, если он составляет технически, будь хорошо. Если он работает как это ждет, будь еще лучше. Если вопрос ссылается на, если он хорошо согласно методологии анализа, рисунка и программирования, ориентируемого на объекты, он относительный. Ни в той же литературе есть согласие по поводу, каким характеристикам удается приспособиться к этим обязательным условиям. Все же, я буду стараться упоминать о классических чертах:
null
, ""
, " "
они могут быть seteadas в эти признаки. Это было бы совсем не хорошим иметь медицинскую сестру с именем Диана и фамилия null
например. Encapsulamiento обрабатывает информацию, сначала, от как мы скрываем представление данных и секунду, как мы санкционируем, что эти данные были правильны. Свойство nif
она не является ясной, предполагаю я, что он представляет число идентификации: функциональная возможность encapsulamiento состоит в том, что это его решение, что это свойство было типа целая или String, у одной есть преимущества на других, в зависимости от использования, которое выходит ему на эту информацию. Предполагаю я, что нет никакого ограничения для этой стоимости а следовательно в последних он выполняет намерение.Nurse
будьте строго необходимы, чтобы работать. В этом моменте он обязательный, что каждый объект типа Nurse
будьте созданы этими полями. Это строгое, но такое правило это Вы решили, нет никакой ошибки в этом.Nurse
обладай методом, чтобы создавать объект Вашего типа, используя методы static
доступные в Java. Для каких-то авторов эти методы ломают начало, ориентируемое на объекты (он reponsabilidad класса Nurse
создавать объекты Вашего типа? (отличные от строителя, очевидно)). Другие авторы наоборот заявляют, что он правилен (главный файл рисунка Builder или Factory). Мое личное мнение состоит в том, что эти должны бы быть разработанными единственной целью создавать объекты, уполномочивая ввод информации данных на вспомогательные классы. Ваш класс addNurse
не только он берется за то, чтобы создавать объект, а за то, чтобы работать с методами класса, которые служат для того, чтобы попросить у пользователя данные (Scanner
).Nurse
должен будь быть предоставленным во вспомогательный класс (обычно она была бы той, которую он использует, чтобы призывать методы этого класса или строить объекты этого типа)Метод addNurse
он мог бы быть осуществленным так:
public static Nurse createNurse(String nif, String name, String lastName) {
return new Nurse(nif,name,lastName);
}
помимо меняния имени (так как в действительности этот метод только создает объекты этого типа) ему помогают в строителе, чтобы возвращать объект с посланными данными. Это ответственность класса, который призывает этот метод просить данные (nif
, name
, lastName
) чтобы строить объект и даже, санкционировать, если они правильны, так как класс Nurse
он это не делает.
Я думаю, что метод update
он избыточный. Чтобы обновлять объект мы используем Ваши методы seters публичные, а следовательно мы уполномочиваем ответственность обновления стоимости каждого объекта в класс, который призывает их.
Метод showNurse
он правилен. Однако (больше практика Java что ориентируемый на объекты) очень хорошо осуществлять так называемый метод toString()
что реализует точно то же самое, что и этот метод: различие коренится, в котором, напечатав объект типа Nurse
призывается автоматически метод toString()
с форматом, который он разработал, например:
@Override
public String toString() {
return "\nLes dades de l'infermer amb nif " + this.getNif() + " són:" + "\nNom:" + this.getName() + "\nCognom:" + this.getLastname();
}
Хотя уже они ответили ему, он может создавать несколько объектов типа Nurse
нескольких форм. Если он знает заранее, в скольких объектах нуждайся, используйте договоренность:
//Crea un arreglo de 10 objetos de tipo `Nurse`
Nurse[] nurses = new Nurse[10]
если он не знает, сколько объектов и нуждайся в том, чтобы создать так же как программу, он работает, думает Array:
ArrayList<Nurse> nurses = new ArrayList<>();
и введи в этой договоренности каждый объект, который он хочет создать:
nurses.add(new Nurse("1","Diana","Salinas"));
nurses.add(new Nurse("2","Esperanza","Acosta"));