2017.12.17 - ProgramPojazdy + PojazdSilnikowy - wykład Gdynia

 

2017.12.17 - wykład Gdynia

ProgramPojazdy + PojazdSilnikowy

  • Klasa główna - jako program - klasa z metodą public static void main( String[] argumenty ) {...}
  • Użycie statycznego atrybutu out klasy System oraz jego metody print oraz println.
  • Klasa PojazdSilnikowy - atrybuty w klasie + metody w klasie.
  • Klasa jako "szablon" obiektów - atrybuty i metody static - dostępny dla szablonu - nawet zanim zostanie utworzony obiekt danej klasy (np. bez tworzenia obiektu możemy użyć atrybutu statycznego PojazdSilnikowy.liczbaPojazdówSpalinowych).
  • W kontekście klasy (szablonu) mamy dostęp wyłącznie do elementów statycznych, natomiast nie mamy dostępu do elementów nie-statycznych. Elementy nie-statyczne będą dostępne dopiero dla obiektów danej klasy.
  • tworzenie obiektów klasy PojazdSilnikowy - PojazdSilnikowy pojazd1 = new PojazdSilnikowy().
  • Obiekt klasy ma dostęp zarówno do atrybutów i metod statycznych jak i niestatycznych - pojazd1.wyświetlLiczęPojazdówSpalinowych();.
  • konstruktor - specjalna metoda public bez określonego zwracaneto typu ani słowa void, o nazwie identycznej z nazwą klasy - public PojazdSilnikowy() { … }
  • atrybuty statyczne są związane z klasą jako szablonem, a nie z konkretnymi obiektami - w konstruktorze modyfiujemy atrybut statyczny liczbaPojazdówSpalinowych i wartość ta zmienia się tylko w klasie jako szablonie, a nie w każdym obiekcie osobno. Czyli na końcu działania programu - oprócz klasy głównej ProgramPojazdy - mamy w rzeczywistości trzy struktury: klasę PojazdSilnikowy jako szablon oraz dwa obiekty tej klasy pojazd1 oraz pojazd2;
public class ProgramPojazdy {
	public static void main( String[] argumenty ) {
		System.out.println( "__________________________________________\nDziałam: \" ---" );

		System.out.println( "Wartość licznika liczbaPojazdów - atrybut w klasie PojazdSilnikowy: " + PojazdSilnikowy.liczbaPojazdów );

		PojazdSilnikowy.wyświetlLiczęPojazdów();

		PojazdSilnikowy pojazd1 = new PojazdSilnikowy();
		pojazd1.rejestracja = "GDA 1111";
		pojazd1.wyświetlLiczęPojazdów();
		System.out.println( "Moc silnika - atrybut obiektu pojazd1: " + pojazd1.mocSilnika );

		PojazdSilnikowy pojazd2 = new PojazdSilnikowy();
		pojazd2.rejestracja = "XPJ 3333";
		pojazd2.mocSilnika = 100;
		pojazd2.zapalŚwiatła();
		System.out.println( "Moc silnika - atrybut obiektu pojazd2: " + pojazd2.mocSilnika );

		PojazdSilnikowy.wyświetlLiczęPojazdów();

		System.out.println( "__________________________________________" );
	}	
}


class PojazdSilnikowy {	
	static int liczbaPojazdów;

	String rejestracja;

	float mocSilnika;
	int maksymalneObrotySilnika;

	public PojazdSilnikowy() {
		liczbaPojazdów++;	// liczbaPojazdów = liczbaPojazdów + 1
	}

	void wyłączSilnik() {
		System.out.println( "Włączono silnik" );
	}

	void zapalŚwiatła() {
		System.out.println( "Zapalono światła w pojeździe: " + rejestracja );
	}

	static void wyświetlLiczęPojazdów() {
		System.out.println( "Wartość licznika liczbaPojazdów - w metodzie wyświetlLiczęPojazdów(): " + liczbaPojazdów );		
	}

}