Kamil Tkaczyk
gr. 16 - Automatyka i Robotyka
Sprawozdanie z laboratorium. Programowanie
obiektowe- JAVA 21.10.14
KLASA kula
public class
kula
extends
punkt {
private
double
promien
;
public
void
setpromien(
double
promien
){
if
(
promien
<=0)
this
.
promien
= 1;
else
this
.
promien
=
promien
;
}
double
getpromien(){
return
promien
;
}
kula (){
super();
promien
=5;
}
kula (
double
masa
,
double
promien
) {
super(
masa
);
setpromien(
promien
);
}
public double
moment() {
double
j
=0.4*
promien
*
promien
* getmasa();
return
j
;
}
public
String toString(){
return"Kula: ";
}
}
Klasa walec
public class
walec
extends
punkt {
private double
promien
;
public void
setpromien(
double
promien
){
if
(
promien
<=0)
this
.
promien
= 1;
else
this
.
promien
=
promien
;
}
double
getpromien(){
return
promien
;
}
walec(){
super();
promien
=5;
}
walec(
double
masa
,
double
promien
) {
super(
masa
); setpromien(promien);
}
public double
moment() {
double
j=0.5*
promien
*
promien
* getmasa();
return
j;
}
public
String toString(){
return
"Walec: ";
}
}
Klasa pret
public class
pret
extends
punkt {
private double
l
;
private double
bp
;
public void
setl(
double
l
){
if
(
l
<=0)
this
.
l
= 1;
else
this
.
l
=
l
;
}
double
getl(){
return
l
;
}
public void
setbp(
double
bp
){
if
(
bp
<=0)
this
.
bp
= 1;
else
this
.
bp
= l;
}
double
getbp(){
return
bp
;
}
pret (){
super();
l
=5;
}
pret (
double
masa
,
double
l
,
double
bp
) {
super(
masa
);
setl(
l
);
setbp(
bp
);
}
public double
moment() {
double
j
=(1/12)*
l
*
l
* getmasa()+
bp
;
return
j
;
}
public
String toString(){
return
"Pret: ";
}
}
Klasa test
public class
test {
public static void
main(String[] args) {
System.
out
.println("Test:");
kula o1= new kula(3,6);
System.
out
.println( o1+"O masie 3 kg i promieniu 6 m posiada
moment"+o1.moment());
walec o2= new walec(3,6);
System.
out
.println( o2+"O masie 3 kg i promieniu 6 m posiada
moment"+o2.moment());
pret o3= new pret(3,6,2);
System.
out
.println( o3+"O masie 3 kg i promieniu 6 m i momencie
bezwladnosci przekroju 2 m^4 posiada moment "+o3.moment());
punkttab[]=newpunkt[8];
tab[0]=newpunkt(1);
tab[1]=newpunkt(2);
tab[2]=newkula(7,20);
tab[3]=newkula(14,40);
tab[4]=newwalec(7,20);
tab[5]=newwalec(14,40);
tab[6]=newpret(7,20,1);
tab[7]=newpret(14,40,2);
for
(
int
i=0; i<8; i++)
System.
out
.println(tab[i]+"o momencie bezwladnosci przekroju 1
m^4 posiada moment "+ tab[i].moment()+ " oraz moment wzgledem
osi odleglej o 5: "+ tab[i].momentst(5));
}
}
Wynik działania programu testowego
Test:
Kula: O masie 3 kg i promieniu 6 m posiada moment 43.2
Walec: O masie 3 kg i promieniu 6 m posiada moment 54.0
Pret: O masie 3 kg i promieniu 6 m i momencie bezwladnosci przekroju 2 m^4 posiada moment 11.0
Punkt materialany: o momencie bezwladnosci przekroju 1 m^4 posiada moment 0.0 oraz moment
wzgledem osi odleglej o 5: 25.0
Punkt materialany: o momencie bezwladnosci przekroju 1 m^4 posiada moment 0.0 oraz moment
wzgledem osi odleglej o 5: 50.0
Kula: o momencie bezwladnosci przekroju 1 m^4 posiada moment 1120.0 oraz moment wzgledem
osi odleglej o 5: 1295.0
Kula: o momencie bezwladnosci przekroju 1 m^4 posiada moment 8960.0 oraz moment wzgledem
osi odleglej o 5: 9310.0
Walec: o momencie bezwladnosci przekroju 1 m^4 posiada moment 1400.0 oraz moment wzgledem
osi odleglej o 5: 1575.0
Walec: o momencie bezwladnosci przekroju 1 m^4 posiada moment 11200.0 oraz moment
wzgledem osi odleglej o 5: 11550.0
Pret: o momencie bezwladnosci przekroju 1 m^4 posiada moment 20.0 oraz moment wzgledem osi
odleglej o 5: 195.0
Pret: o momencie bezwladnosci przekroju 1 m^4 posiada moment 40.0 oraz moment wzgledem osi
odleglej o 5: 390.0
Odpowiedzi na pytania:
1. Co zmienia zastąpienie pól prywatnych polami chronionymi w dziedziczeniu?
Zmienia dostęp do pól. Pola chronione mogą byd użyte w innej klasie, natomiast prywatne
pole nie są dostępne w dziedziczonych klasach.
2. W jaki sposób i kiedy są wywołuje się konstruktorysuperklasy?
Konstruktory superklasy wywołujemy gdy chcemy odwoład się do zdeklarowanych
prywatnych pól. Służy ona do wywoływania konstruktorów klasy nadrzędnej (tej, z której
dziedziczymy) o podanych parametrach, lub w przypadku metod – odpowiedników o takiej
samej nazwie i podanych parametrach.
3. W jaki sposób uzyskuje się dostęp do pól i metod superklasy?
Na początku danej klasy, musimy zaznaczyd, że dana klasa jest dziedziczona.
Wtedy możemy wykorzystywad przeciążanie metod. Przeciążanie metod polega na
ponownym użyciu danych zmiennych ale innego typu(np. w superklasie mieliśmy
zdefiniowany int r=5. Teraz możemy zdefiniowad float r=0.5. Przeciążanie możemy
wykorzystywad również w jednej klasie). Inną metodą jest odwołanie się wprost do pól i
metod (działa to tylko gdy nie są one prywatne).Ostatnią sposobem jest sposób opisany
powyżej w pkt. III.
4. W jakim celu stosuje się przeciążenie metod?
Przeciążaniem metod pozwala na tworzenie metod o takich samych nazwach, ale różnych
parametrach. Analogicznie nieprawidłowe jest utworzenie w jednej klasie dwóch metod o
identycznej nazwie i przyjmującej takie same parametry, a także metody o takiej samej
nazwie i parametrach, ale różniące się tylko zwracanym typem.