Prosty program w Javie - podstawy klas - moje rozwiązanie

Prosty program w Javie - podstawy klas - moje rozwiązanie
BB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 80
0

Cześć!
Potrzebuję Waszej pomocy przy rozwiązaniu prostego zadania w Javie.
Poniżej zadanie i moje rozwiązanie.
Proszę o pomoc i wyjaśnienie kwestii zapisanych w komentarzach i wszelkich uwag o kodzie :)

Napisać klasę Student zawierającą

  1. pola** imię, nazwisko i wiek**,
  2. pole statyczne** nazwaSzkoły**,
  3. konstruktor bezargumentowy – ustawiający domyślne wartości
  4. konstruktor z trzema argumentami odpowiadającymi polom – ustawia wartości pól
  5. metodę **int ileLat() **zwracającą wiek,
  6. nadpisaną metodę **String toString() **zwracającą tekst informacyjny o studencie
    Napisać program wykorzystujący obiekty klasy student. W programie utworzyć kilka obiektów klasy
    Student. Zmienić wartości poszczególnych pól. Za każdy razem wypisywać informację o obiektach na
    ekran.

Moje rozwiązanie, main:

Kopiuj
package treningi;
public class Praktyczny_kurs 
{
	public static void main(String[] args) 
	{
		Student jasiek = new Student();
		// wyswietlenie aktualnej wartosci obiektu:
		jasiek.toString();
		
		Student krzysiek = new Student("Krzysio", "Malinowski", 23);
		// wyswietlenie aktualnej wartosci obiektu:
		krzysiek.toString();		
	}
}

Moja klasa:

Kopiuj
package treningi;
public class Student 
{
	String imie; //ponizej 3 pola
	String nazwisko;
	int wiek;
	
	String nazwaSzkoly; // to ma być pole statyczne - nie wiem o co chodzi :-( utworzylem zwykle.
	
	Student() // konstruktor bezargumentowy – ustawiający domyślne wartości
	{
		imie = "Jasio";
		nazwisko = "Kowalski";
		wiek = 21;
		nazwaSzkoly = "Wysza Szkola Nauki Javy"; // czy to też powinno być w tym konstruktorze?
	}

	Student(String i, String n, int w) // konstruktor z trzema argumentami odpowiadającymi polom – ustawia wartości pól
	{
		this.imie = i;
		this.nazwisko = n;
		this.wiek = w;
	}
	
	int ileLat()
	{
		return wiek; 
		// czy ta metoda zwroci wiek skoro nie przyjmuje zadnych argumentow? 
		//wg mnie tak, wg mnie zwroci aktualna wartosc pola "wiek" ale chce sie upewnic
	}
	
	String toString() // czy to jest metoda nadpisana?
	{
		System.out.println("Student ma na imię: " + imie);
		System.out.println("Student ma na nazwisko: " + nazwisko);
		System.out.println("Student ma : " + wiek);
		System.out.println("Student chodzi do szkoly: " + nazwaSzkoly);
	}	
}

Niestety program nie chce się skompilować, czepia się metody toString, że nie zwraca stringa ale jak te wszystkie informacje o studencie upakować w jednego stringa żeby przekazać go do maina i tam wywołać?

mefisto506
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
1

Jeżeli metoda toString() ma tylko wyrzucać dane studenta to nie ma sensu niczego zwracać do maina, czyli
void toString()

GC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 249
1
Kopiuj
 
	public String toString() // czy to jest metoda nadpisana?
	{
		return "Student ma na imię: " + imie + "Student ma na nazwisko: "
				+ nazwisko; // i tak dalej
	}
xorgx3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 134
1

Ja to bym zrobił tak:

Kopiuj
public String toString() // czy to jest metoda nadpisana?
    {
    	String xxx =  ("Student ma na imię: " + imie) + ("Student ma na nazwisko: " + nazwisko) +   ("Student ma : " + wiek)+  ("Student chodzi do szkoly: " + nazwaSzkoly);
		return xxx;
    }    

:D
A potem w mainie wywoływał

Kopiuj
System.out.println(costam.toString)

Co do pytań w kodzie: Pole statyczne to pole wspólne dla wszystkich obiektów tej klasy. Wystarczy napisać

Kopiuj
static String nazwaSzkoly;

Konstruktor domyslny tak na moje oko to powinien ustawiać jakieś puste wartości, ale to w sumie zależy od tego kto pisze/sprawdza. Nazwa szkoly też powinna być w konstruktorze.
Metoda ileLat zwróci aktualny wiek - masz rację.

BB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 80
0

Dzięki za odpowiedzi!
A o co chodzi z tym "nadpisaniem" metody?
Jakie to ma skutki w kodzie [w moim przypadku] i czym się różni od normalnej metody?
Muszę zrobić wszystkie warunki zadania...

xorgx3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 134
0

Chodzi o to, że nadpisujesz metodę toString z klasy Object. Po prostu istnieje już metoda o takiej nazwie, ale z innymi argumentami, a Ty ją swoim kodem przeładowujesz.
a jednak nie

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
1

@xorgx3, piszesz głupoty. Nadpisanie to napisanie w klasie pochodnej metody o takiej samej nazwie i takiej samej liście argumentów.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.