• 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

Object Storage Arubacloud
0 głosów
1,994 wizyt
pytanie zadane 4 grudnia 2018 w Java przez mn130496 Gaduła (3,530 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,530 p.)
ok dziękuję ci bardzo za pomoc , biorę się za poprawki.Pozdrawiam

Podobne pytania

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

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...