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.
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));
}
}
}
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"
;
}
}
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"
;
}
}
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"
;
}
}
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"
;
}
}
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.
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
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();
}
}
}