background image

Karol Leszczyński gr.13 WIMIR

Sprawozdanie Lab2 Java

Odpowiedzi na pytania:

1.
Jeśli w superklasie pole jest chronione(protected) to klasa pochodna ma do niego 
bezpośredni dostęp

2.
super(); //konstruktor domyślny
super(argument 1, …, argument n); //konstruktor z parametrami

Konstruktor superklasy powinien być zawsze wykonany gdy wykonuję się 
konstruktor klasy pochodnej.

3.
Jeśli w superklasie pole/metoda ma dostęp public lub protected mamy do nich dostęp 
poprzez bezpośrednią nazwę nazwa_pola/metody() (o ile w naszej klasie pochodnej 
nie ma pola/metody o tej samej nazwie) lub poprzez super.nazwa_pola/metody().
W innym przypadku musimy użyć akcesora.

4.
Przeciążenie metody stosuję się w celu użycia tej samej nazwy metody.
Przeciążone metody różnią się między sobą ilością i typem argumentów.

Wynik z omówieniem:

k: Opis: Kula | Masa: 10.0 | Promień: 5.0 | Główny moment bezwładności: 100.0
w: Opis: Walec | Masa: 5.0 | Promień: 3.0 | Wysokość: 20.0 | Główny moment 
bezwładności: 22.5
p: Opis: Pręt | Masa: 5.0 | Promień: 2.0 | Długość: 50.0 | Główny moment bezwładności: 
1066.7994
t[0]: Opis: Kula | Masa: 1.0 | Promień: 5.0 | Główny moment bezwładności: 10.0
t[1]: Opis: Walec | Masa: 1.0 | Promień: 5.0 | Wysokość: 20.0 | Główny moment 
bezwładności: 12.5
t[2]: Opis: Pręt | Masa: 1.0 | Promień: 1.0 | Długość: 10.0 | Główny moment 
bezwładności: 9.90413
t[3]: Opis: Kula | Masa: 2.0 | Promień: 3.0 | Główny moment bezwładności: 7.2000003
t[4]: Opis: Walec | Masa: 2.0 | Promień: 1.0 | Wysokość: 5.0 | Główny moment 
bezwładności: 1.0
Momenty bezwładności względem osi oddalonej o 13:
t[0]:179.0
t[1]:181.5
t[2]:178.90413
t[3]:345.2
t[4]:339.0

Pierwsze 3 linijki pokazują informacje o utworzonych obiektach.
Kolejne 5 linijek  pokazuje informacje o obiektach z utworzonej tablicy. Wypisane są 
za pomocą pętli.
Ostatnie 5 linijek pokazuje momenty bezwładności względem osi oddalonej o 13 dla 
obiektów z tej samej tablicy. Wypisane są za pomocą pętli.

background image

Kod:

public

 

class

 Lab2 {

public

 

static

 

void

 main(String[] args) {

// 

TODO

 Auto-generated method stub

kula k  = 

new

 kula(5,10);

//Stworzenie nowych obiektów

walec w = 

new

 walec(3,20,5);

pret p = 

new

 pret(2,50,5);

System.

out

.println(

"k: Opis: "

+k+

" | Masa: "

+k.getMass()+

" | Promień: 

"

+k.getRadius()+

//Wyświetlenie w konsoli informacji o obiektach

" | Główny moment bezwładności: "

+k.cInertia());

System.

out

.println(

"w: Opis: "

+w+

" | Masa: "

+w.getMass()+

" | Promień: 

"

+w.getRadius()+

" | Wysokość: "

+w.getHeight()+

" | Główny moment bezwładności: "

+w.cInertia());

System.

out

.println(

"p: Opis: "

+p+

" | Masa: "

+p.getMass()+

" | Promień: 

"

+p.getRadius()+

" | Długość: "

+p.getLength()+

" | Główny moment bezwładności: "

+p.cInertia());

material_point[] t;
t = 

new

 material_point[5];

//Stworzenie tablicy obiektów

t[0] = 

new

 kula();

t[1] = 

new

 walec();

t[2] = 

new

 pret();

t[3] = 

new

 kula(3,2);

t[4] = 

new

 walec(1,5,2);

for

(

int

 i=0;i<5;i++)

//Wyświetlenie w konsoli informacji o obiektach 

z tablicy z wykorzystaniem pętli

{

if

(t[i] 

instanceof

 kula)

System.

out

.println(

"t["

+i+

"]: Opis: "

+t[i]+

" | Masa: 

"

+t[i].getMass()+

" | Promień: "

+((kula)t[i]).getRadius()+

" | Główny moment bezwładności: 

"

+t[i].cInertia());

else

 

if

(t[i] 

instanceof

 walec)

System.

out

.println(

"t["

+i+

"]: Opis: "

+t[i]+

" | Masa: 

"

+t[i].getMass()+

" | Promień: "

+((walec)t[i]).getRadius()+

" | Wysokość: "

+

((walec)t[i]).getHeight()+

" | Główny moment bezwładności: 

"

+t[i].cInertia());

else

 

if

(t[i] 

instanceof

 pret)

System.

out

.println(

"t["

+i+

"]: Opis: "

+t[i]+

" | Masa: 

"

+t[i].getMass()+

" | Promień: "

+((pret)t[i]).getRadius()+

" | Długość: "

+

((pret)t[i]).getLength()+

" | Główny moment bezwładności: 

"

+t[i].cInertia());

}
System.

out

.println(

"Momenty bezwładności względem osi oddalonej o 13:"

);

for

(

int

 i=0;i<5;i++)

//Wyświetlenie wartości momentów bezwładności 

względem nowej osi dla obiektów z tablicy z wykorzystaniem pętli

{

System.

out

.println(

"t["

+i+

"]:"

+t[i].inertia(13));

}

}

}

background image

public

 

class

 material_point {

private

 

float

 

mass

;

//Prywatne pole masy

public

 

float

 getMass()

//Akcesor służący do odczytu wartości masy

{

return

 

mass

;

}

public

 

void

 setMass(

float

 m)

//Akcesor służący do zmiany wartości masy

{

if

(m>0) 

mass

=m;

else

 

mass

=-m;

}
material_point()

//Konstruktor domyślny inicjujący masę stałą wartością

{

mass

=1.0f;

}
material_point(

float

 m)

//Konstruktor z parametrami pozwalający na nadanie 

dowolnej wartości masy

{

setMass(m);

}
material_point(

float

 m, 

float

 xx, 

float

 yy)

//Konstruktor z parametrami 

pozwalający na nadanie dowolnej wartości masy oraz współrzędnych

{

setMass(m);

}

public

 

float

 cInertia()

//Metoda bez parametrów, obliczająca główny moment 

bezwładności

{

return

 0;

}

public

 

float

 inertia(

float

 r)

//Metoda przyjmująca jeden parametr, obliczająca 

moment bezwładności z tw. Steinera

{

return

 (cInertia() + 

mass

*r*r);

}

public

 String toString()

//Metoda zwracająca stały opis obiektu

{

return

 

"Punkt materialny"

;

}

}

background image

public

 

class

 walec 

extends

 material_point {

private

 

float

 

radius

;

//Prywatne pole promienia

private

 

float

 

height

;

//Prywatne pole wysokości

public

 

float

 getRadius()

//Akcesor służący do odczytu wartości promienia

{

return

 

radius

;

}

public

 

void

 setRadius(

float

 r)

//Akcesor służący do zmiany wartości promienia

{

if

(r>=0) 

radius

 = r;

else

 

radius

 = -r;

}

public

 

float

 getHeight()

//Akcesor służący do odczytu wartości wysokości

{

return

 

height

;

}

public

 

void

 setHeight(

float

 h)

//Akcesor służący do zmiany wartości wysokości

{

if

(h>=0) 

height

 = h;

else

 

height

 = -h;

}
walec()

//Konstruktor domyślny

{

super

();

radius

 = 5;

height

 = 20;

}
walec(

float

 r, 

float

 h, 

float

 m)

//Konstruktor z parametrami

{

super

(m);

setRadius(r);
setHeight(h);

}

public

 

float

 cInertia()

//Metoda obliczająca główny moment bezwładności

{

return

 0.5f*getMass()*

radius

*

radius

;

}

public

 String toString()

//Metoda zwracająca stały opis obiektu

{

return

 

"Walec"

;

}

}

background image

public

 

class

 kula 

extends

 material_point {

private

 

float

 

radius

;

public

 

float

 getRadius()

//Akcesor służący do odczytu wartości promienia

{

return

 

radius

;

}

public

 

void

 setRadius(

float

 r)

//Akcesor służący do zmiany wartości promienia

{

if

(r>=0) 

radius

 = r;

else

 

radius

 = -r;

}
kula()

//Konstruktor domyślny

{

super

();

radius

 = 5;

}
kula(

float

 r, 

float

 m)

//Konstruktor z parametrami

{

super

(m);

setRadius(r);

}

public

 

float

 cInertia()

//Metoda obliczająca główny moment bezwładności

{

return

 0.4f*getMass()*

radius

*

radius

;

}

public

 String toString()

//Metoda zwracająca stały opis obiektu

{

return

 

"Kula"

;

}

}

background image

public

 

class

 pret 

extends

 material_point {

private

 

float

 

length

;

private

 

float

 

radius

;

public

 

float

 getRadius()

//Akcesor służący do odczytu wartości promienia

{

return

 

radius

;

}

public

 

void

 setRadius(

float

 r)

//Akcesor służący do zmiany wartości promienia

{

if

(r>=0) 

radius

 = r;

else

 

radius

 = -r;

}

public

 

float

 getLength()

//Akcesor służący do odczytu wartości długości

{

return

 

length

;

}

public

 

void

 setLength(

float

 l)

//Akcesor służący do zmiany wartości długości

{

if

(l>=0) 

length

 = l;

else

 

length

 = -l;

}
pret()

//Konstruktor domyślny

{

super

();

radius

 = 1;

length

 = 10;

}
pret(

float

 r, 

float

 l, 

float

 m)

//Konstruktor z parametrami

{

super

(m);

setRadius(r);
setLength(l);

}

public

 

float

 cInertia()

//Metoda obliczająca główny moment bezwładności

{

return

 ((1.0f/12.0f)*getMass()*

length

*

length

 + 

(

float

)Math.

PI

*

radius

*

radius

*

radius

*

radius

/2);

}

public

 String toString()

//Metoda zwracająca stały opis obiektu

{

return

 

"Pręt"

;

}

}

background image

Zadanie na ocenę bdb

Wynik z omówieniem:

---Obliczanie momentu bezwładności---

Wybierz bryłę dla której chcesz obliczyć moment:
Kula (Wpisz '1')
Walec ( Wpisz '2')
Pręt ( Wpisz '3')
Wpisz dowolny inny tekst by zakończyć program

1

Podaj masę:

4

Podaj promień:

2

Główny moment bezwładności wynosi: 6.4
Podaj odległość do nowej osi:

5

Moment bezwładności względem osi oddalonej o 5.0 wynosi: 106.4

Wybierz bryłę dla której chcesz obliczyć moment:
Kula (Wciśnij '1')
Walec (Wciśnij '2')
Pręt (Wciśnij '3')
Wciśnij dowolny inny klawisz by zakończyć program

5

Program najpierw pyta o typ bryły dla którego chcemy obliczyć moment 
bezwładności.
Należy wpisać „1” jeśli chcemy kulę, „2” jeśli walec, a „3” jeśli pręt. Wpisanie 
innego tekstu powoduje zamknięcie programu.
Po wybraniu bryły program pyta o jej parametry.
Po podaniu parametrów program oblicza i wypisuje główny moment bezwładności.
Następnie pyta o odległość od nowej osi względem której będzie obliczany nowy 
moment bezwładności.
Potem oblicza i wypisuje ten moment.
Następnie program wraca do początku i ponownie pyta o typ bryły.

background image

Kod:

import

 java.io.InputStreamReader;

import

 java.io.BufferedReader;

import

 java.io.IOException;

public

 

class

 program_bdb {

public

 

static

 

void

 main(String[] args){

// 

TODO

 Auto-generated method stub

try

 {

System.

out

.println(

"---Obliczanie momentu bezwładności---"

);

InputStreamReader ISR = 

new

 InputStreamReader(System.

in

);

//Zamiana 

strumienia bajtów w strumień znaków

BufferedReader BR = 

new

 BufferedReader(ISR);

//Buforowanie znaków

while

(

true

)

{

System.

out

.println(

"\nWybierz bryłę dla której chcesz 

obliczyć moment:\n"

"Kula (Wpisz '1')\n"

"Walec (Wpisz '2')\n"

"Pręt (Wpisz '3')\n"

"Wpisz dowolny inny tekst by zakończyć 

program"

);

String name = BR.readLine();

//Zczytanie tekstu na 

wejściu. Wybór bryły

if

(name.equals(

"1"

)){

//Sprawdzenie czy wprowadzono "1"

System.

out

.println(

"Podaj masę:"

);

name = BR.readLine();

//Pobranie masy

float

 m;

m = Float.parseFloat(name);

//Zamiana liczby z typu 

String na typ float

System.

out

.println(

"Podaj promień:"

);

name = BR.readLine();

//Pobranie promienia

float

 r;

r = Float.parseFloat(name);
kula k = 

new

 kula(r, m);

//Stworzenie obiektu

System.

out

.println(

"Główny moment bezwładności wynosi: 

"

+k.cInertia());

//Wypisane głównego momentu bezwładności

System.

out

.println(

"Podaj odległość do nowej osi:"

);

name = BR.readLine();

//Pobranie odległości od osi

float

 s;

s = Float.parseFloat(name);
System.

out

.println(

"Moment bezwładności względem osi 

oddalonej o "

+s+

" wynosi: "

+k.inertia(s));

//Wypisane momentu bezwładności względem 

nowej osi

}

else

 

if

(name.equals(

"2"

)){

//Sprawdzenie czy wprowadzono 

"2"

System.

out

.println(

"Podaj masę:"

);

name = BR.readLine();

//Pobranie masy

float

 m;

m = Float.parseFloat(name);
System.

out

.println(

"Podaj promień:"

);

name = BR.readLine();

//Pobranie promienia

float

 r;

r = Float.parseFloat(name);
System.

out

.println(

"Podaj wysokość:"

);

name = BR.readLine();

//Pobranie wysokości

float

 h;

h = Float.parseFloat(name);
walec w = 

new

 walec(r, h, m);

//Stworzenie obiektu

background image

System.

out

.println(

"Główny moment bezwładności wynosi: 

"

+w.cInertia());

//Wypisane głównego momentu bezwładności

System.

out

.println(

"Podaj odległość do nowej osi:"

);

name = BR.readLine();

//Pobranie odległości od osi

float

 s;

s = Float.parseFloat(name);
System.

out

.println(

"Moment bezwładności względem osi 

oddalonej o "

+s+

" wynosi: "

+w.inertia(s));

//Wypisane momentu bezwładności względem 

nowej osi

}

else

 

if

(name.equals(

"3"

)){

//Sprawdzenie czy wprowadzono 

"3"

System.

out

.println(

"Podaj masę:"

);

name = BR.readLine();

//Pobranie masy

float

 m;

m = Float.parseFloat(name);
System.

out

.println(

"Podaj promień:"

);

name = BR.readLine();

//Pobranie promienia

float

 r;

r = Float.parseFloat(name);
System.

out

.println(

"Podaj długość:"

);

name = BR.readLine();

//Pobranie długości

float

 l;

l = Float.parseFloat(name);
pret p = 

new

 pret(r, l, m);

//Stworzenie obiektu

System.

out

.println(

"Główny moment bezwładności wynosi: 

"

+p.cInertia());

//Wypisane głównego momentu bezwładności

System.

out

.println(

"Podaj odległość do nowej osi:"

);

name = BR.readLine();

//Pobranie odległości od osi

float

 s;

s = Float.parseFloat(name);
System.

out

.println(

"Moment bezwładności względem osi 

oddalonej o "

+s+

" wynosi: "

+p.inertia(s));

//Wypisane momentu bezwładności względem 

nowej osi

}

else

{

BR.close();
ISR.close();

break

;

//Zakończenie programu

}

}

catch

 (IOException e) {

//obsługa wyjątku

// 

TODO

 Auto-generated catch block

e.printStackTrace();

}

}

}