• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Listy obiektów Java ocena kodu

0 głosów
2,361 wizyt
pytanie zadane 4 grudnia 2018 w Java przez mn130496 Gaduła (3,640 p.)

Witam

Jestem studentem informatyki i ostatnio zacząłem naukę Javy. Ostatnio na zajęciach otrzymałem zadania o następujących treściach:

2. Stwórz klasę opisującą studenta (imię, nazwisko, numer indeksu), a następnie stwórz jej tablicę obiektów.
3. Podaj ile elementów zawiera lista z zadania 2, oraz co znajduje się w 3 elemencie tej listy.

Kod zadania 2 jest następujący:

package zadania_lab7;
import java.util.ArrayList;
public class Student {
	//deklaracja zmiennych.
	String name , pastName;
	int indexNumber;
	//stwożenie konstruktora.
	public Student(String name , String pastName , int indexNumber) {
		this.name = name;
		this.pastName = pastName;
		this.indexNumber = indexNumber;
	}
	//Metody ustawia i zwracania.
	public String getname()
	{
		return name;
	}
	public String getpastName()
	{
		return pastName;
	}    	
	public int getindexNumber()
	{
		return indexNumber;
	}			
	//metoda Main
	public static void main(String[] args) {
		//deklaracja ArrayList.
		ArrayList<Student> dane = new ArrayList<Student>();
		// Stworzenie i wyświetlenie listy obiektów klasy Student.
		dane.add(new Student (" Michał " , " Niedzielski " , 96148));
		dane.add(new Student (" Jan " , " Kowalski " , 96147));
		dane.add(new Student (" Jan " , " Nowak " , 96146));
		dane.add(new Student (" Adam " , " Mickiewicz " , 96145));
		dane.add(new Student (" Tomek " , " Kowalewski " , 96144));
		for(Student  x:dane) {
				System.out.println("Imię studenta to: " + x.getname() );
				System.out.println("Nazwisko studenta to: " + x.getpastName() );
				System.out.println("Numer indeksu to: " + x.getindexNumber() );
	}
	 }
	}

Natomiast zadania 3 taki:

package zadania_lab7;
import java.util.ArrayList;
public class Zad3 {
	String name , pastName;
	int indexNumber;
	public Zad3(String name , String pastName , int indexNumber) {
		this.name = name;
		this.pastName = pastName;
		this.indexNumber = indexNumber;
	}
	//Metoda Mein.
	public static void main(String[] args) {
		ArrayList<Student> list = new ArrayList<Student>();
		list.add(new Student ("Michał" , "Niedzielski" , 96148));
		list.add(new Student ("Jan" , "Kowalski" ,  96147));
		list.add(new Student (" Jan " , " Nowak " , 96146));
		list.add(new Student (" Adam " , " Mickiewicz " , 96145));
		list.add(new Student (" Tomek " , " Kowalewski " , 96144));
		
		System.out.println(" Długość tablicy wynosi:  " + list.size());
		System.out.println("Na trzecim elemęcie znajduje się: " + list.get(2).name + list.get(2).pastName+list.get(2).indexNumber);
	}
}
	

Czy ktoś może mi powiedzieć czy te zadania są dobrze rozwiązane (szczególnie 3 nie jestem pewien) i ewentualnie podpowiedzieć co mam zmienić?. Z góry dziękuję

Pozdrawiam

1 odpowiedź

+1 głos
odpowiedź 4 grudnia 2018 przez coderCpp93 Gaduła (4,200 p.)
wybrane 5 grudnia 2018 przez mn130496
 
Najlepsza

Zmień klasę Zad3 na potomną od klasy Student jest to sprawa oczywista. Druga sprawa to komentarze, nie są potrzebne, to nazwa metody ma obrazować co robi. Następna sprawa, kolejność elementów w klasie wygląda tak: pola, konstruktor, a potem mutatory i akcesory, czyli funkcje ustawiające i zwracające wartości pól. Jeśli będziesz stosować taką kolejność tworzenia elementów w klasie, to tym bardziej komentarze nie są potrzebne. Kolejna sprawa, nie oszukujmy się, kod trochę kuje w oczy. Jeśli chodzi o wcięcia to ok, ale popracuj nad odstępami między metodami. A jeszcze wspomnę, że pola w jakiejkolwiek klasie powinny być prywatne. Jeśli nie są, to po co tworzyć metodę getName() skoro można po prostu napisać x.name. Co gorsza, można z łatwością modyfikować zawartość pola obiektu z poziomu innej klasy. 

Wprowadził bym też pole statyczne inicjujące zmienną indexNumber. Dzięki temu nie musisz podawać indexNumber w konstruktorze, tylko automatycznie przypisuje mu wartość. Tu masz to co właśnie powiedziałem:

private String name;
private String pastName;
private int indexNumber;
static int id = 1;

public Student(String n, String pN) {
     this.name = n;
     this.pastName = pN;
     this.indexNumber = id;
     id++;
}

Pozdrawiam

komentarz 5 grudnia 2018 przez mn130496 Gaduła (3,640 p.)
ok dziękuję ci bardzo za pomoc , biorę się za poprawki.Pozdrawiam

Podobne pytania

0 głosów
0 odpowiedzi 869 wizyt
pytanie zadane 29 listopada 2018 w Java przez mn130496 Gaduła (3,640 p.)
0 głosów
1 odpowiedź 1,039 wizyt
pytanie zadane 18 grudnia 2018 w Java przez mn130496 Gaduła (3,640 p.)
0 głosów
1 odpowiedź 2,069 wizyt
pytanie zadane 24 maja 2018 w C i C++ przez mIKY Nowicjusz (120 p.)

93,766 zapytań

142,723 odpowiedzi

323,374 komentarzy

63,360 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...