background image

Sprawozdanie 1 – Programowanie Obiektowe 

------------------------ 

Automatyka i Robotyka    

Gr. 1 

1. Kod programu: 

brylaSim.java 

public

 

class

 brylaSim { 

 
 
 

public

 

static

 

void

 main(String[] 

args

) { 

 

 

//Inicjacja obiektow

 

 

 

punktM 

A

=

new

 punktM(); 

 

 

punktM 

B

=

new

 punktM(100); 

 

 

punktM[] 

E

=

new

 punktM[11]; 

 

 

for

 (

int

 

i

=0;

i

<=10;

i

++) 

//Petla generujaca tablice obiektów

 

 

 

 

 

 

E

[

i

]=

new

 punktM(10+

i

); 

 

 

}; 

 

 

A

.setMass(50); 

 

 

//Komunikaty:

 

 

 

System.

out

.println(

"A to: "

+

A

+

". Masa A wynosi "

+

A

.getMass()+

", a 

moment bezwladnosci "

+

A

.moment()+

". B to: "

+

B

+

". Masa B wynosi 

"

+

B

.getMass()+

", a moment bezwladnosci "

+

B

.moment()); 

 

 

System.

out

.println(

"Moment bezwladnosci A wgledem osi rownoleglej 

o 10 wynosi "

+

A

.momentSteiner(10));  

 

 

 

for

 (

int

 

i

=0;

i

<=10;

i

++) 

 

 

 

 

 

System.

out

.println(

"Masa punktu E["

+

i

+

"] wynosi 

"

+

E

[

i

].getMass()+

", glowny moment bezwlandosci wynosi "

+

E

[

i

].moment()+

", a 

moment bezwladnosci wzgledem osi odległej o 5 wynosi 
"

+

E

[

i

].momentSteiner(5)+

". Opis obiektu to: "

+

E

[

i

]); 

 

 

}; 

 
 

 

punktM.java 

public

 

class

 punktM { 

 

//pola

 

 

private

 

double

 

mass

 

//konstruktory

 

 

public

 punktM (){

mass

=0;};

//konstruktor domyslny

 

 

public

 punktM (

double

 

mass

)

//konstruktor zwykly - uniemozliwia nadanie 

ujemnej masy

 

 

 

if

 (

mass

>0)  

 

 

 

 

 

this

.

mass

=

mass

 

 

 

 

else

 

 

 

 

 

 

this

.

mass

=0; 

 

 

 

 

//akcesory

 

 

public

 

double

 getMass(){

return

 

mass

;}

//akcesor czytajacy

 

 

public

 

void

 setMass(

double

 

mass

//akcesor piszacy - uniemozliwia 

nadanie ujemnej masy

 

 

background image

 

 

if

 (

mass

>0)  

 

 

 

 

 

this

.

mass

=

mass

 

 

 

 

else

 

 

 

 

 

 

this

.

mass

=0; 

 

 

 

 

 

//metody

 

 

public

 

double

 moment(){

return

 0;}

//Oblicznie momentu bezwladnosci

 

 

public

 

double

 momentSteiner(

float

 

a

){

return

 

moment()+

mass

*

a

*

a

;}

//Oblicznie momentu z tw. Steinera

 

 

public

 String toString(){

return

 

"Punkt Materialny"

;}

//opis obiektu

 


 

2. Wynik działania programu:  

A to: Punkt Materialny. Masa A wynosi 50.0, a moment bezwladnosci 0.0. B to: Punkt 
Materialny. Masa B wynosi 100.0, a moment bezwladnosci 0.0 
Moment bezwladnosci A wgledem osi rownoleglej o 10 wynosi 5000.0 
Masa punktu E[0] wynosi 10.0, glowny moment bezwlandosci wynosi 0.0, a moment 
bezwladnosci wzgledem osi odległej o 5 wynosi 250.0. Opis obiektu to: Punkt Materialny 
Masa punktu E[1] wynosi 11.0, glowny moment bezwlandosci wynosi 0.0, a moment 
bezwladnosci wzgledem osi odległej o 5 wynosi 275.0. Opis obiektu to: Punkt Materialny 
Masa punktu E[2] wynosi 12.0, glowny moment bezwlandosci wynosi 0.0, a moment 
bezwladnosci wzgledem osi odległej o 5 wynosi 300.0. Opis obiektu to: Punkt Materialny 
Masa punktu E[3] wynosi 13.0, glowny moment bezwlandosci wynosi 0.0, a moment 
bezwladnosci wzgledem osi odległej o 5 wynosi 325.0. Opis obiektu to: Punkt Materialny 
Masa punktu E[4] wynosi 14.0, glowny moment bezwlandosci wynosi 0.0, a moment 
bezwladnosci wzgledem osi odległej o 5 wynosi 350.0. Opis obiektu to: Punkt Materialny 
Masa punktu E[5] wynosi 15.0, glowny moment bezwlandosci wynosi 0.0, a moment 
bezwladnosci wzgledem osi odległej o 5 wynosi 375.0. Opis obiektu to: Punkt Materialny 
Masa punktu E[6] wynosi 16.0, glowny moment bezwlandosci wynosi 0.0, a moment 
bezwladnosci wzgledem osi odległej o 5 wynosi 400.0. Opis obiektu to: Punkt Materialny 
Masa punktu E[7] wynosi 17.0, glowny moment bezwlandosci wynosi 0.0, a moment 
bezwladnosci wzgledem osi odległej o 5 wynosi 425.0. Opis obiektu to: Punkt Materialny 
Masa punktu E[8] wynosi 18.0, glowny moment bezwlandosci wynosi 0.0, a moment 
bezwladnosci wzgledem osi odległej o 5 wynosi 450.0. Opis obiektu to: Punkt Materialny 
Masa punktu E[9] wynosi 19.0, glowny moment bezwlandosci wynosi 0.0, a moment 
bezwladnosci wzgledem osi odległej o 5 wynosi 475.0. Opis obiektu to: Punkt Materialny 
Masa punktu E[10] wynosi 20.0, glowny moment bezwlandosci wynosi 0.0, a moment 
bezwladnosci wzgledem osi odległej o 5 wynosi 500.0. Opis obiektu to: Punkt Materialny 

 

Program wyświetla kolejno:  opis obiektu, masę i główny moment bezwładności dla punktu A, a dalej robi to samo 
dla punktu B. Później podaje wartość momentu bezwładności punktu A dla osi odległej o 50. 
Następnie  program  pokazuje  analogiczny  opis  dla  tablicy  E  złożonej  z  11  punktów  materialnych,  z  których  każdy 
kolejny ma masę o 1 większą. 

3. Odpowiedzi na pytania: 

1. W Javie istnieją 4 poziomy dostępu do pól i metod: 

 

public – dostępne dla wszystkich klas 

 

protected – dostępne dla klas w tej samej paczce lub w klasach dziedziczących 

 

domyślny  –  (używa  się  go  przez  niezapisywanie  modyfikatora  dostępu  przy  metodzie/klasie)  dostępne 
tylko dla klas w tej samej paczce 

 

private – dostępne tylko dla klasy, gdzie zostało zdefiniowane pole/metoda 

background image

2.  Aby  chronić  wartości  pól  przez  przyjęcie  nieodpowiedniej  wartości  (np.  przypisanie  zmiennej  masa  wartości 
ujemnej) pola klasy można oznaczyć jako private (z tym poziomem dostępu się wiąże) i umożliwia dostęp do nich 
przez  funkcje  wewnątrz  tej  klasy  –  czyli  akcesory.  Wyróżniamy  akcesory  piszące  (modyfikujące  wartość  pola)  i 
czytające (pobierające wartość pola). 

3.  Konstruktorem  nazywamy  funkcję,  która  inicjuje  się  przy  tworzeniu  obiektu.  Służą  np.  nadawaniu  wartości 
polom obiektów przy ich inicjacji. Istnieją konstruktory domyślne, zwykłe i kopiujące. 

Konstruktor domyślny nie przyjmuje żadnych argumentów np. 

nazwaKlasy() {instrukcje;} 

Konstruktor zwykły przyjmuje przynajmniej 1 argument np. 

nazwaKlasy(typ argument1, typ argument2,…) {instrukcje;} 

Konstruktor kopiujący przyjmuje za argument obiekt tej samej klasy np. 

nazwaKlasy(nazwaKlasy Obiekt) {instrukcje;} 

4. Metody służą ułatwieniu pisania programów – możemy zastąpić metodą wielokrotne powtarzanie takich samych 
linii  kodu  w  programie.  Ułatwia  to  też  modyfikację  kodu  –  zamiast  poprawiać  kod  w  wielu  powtarzających  się 
miejscach w programie – poprawiamy go w 1 miejscu. Metody możemy podzielić na 4 typy: 

Argumentowe zwracające wartość: 

typZwracanejWartości nazwaMetody (typArgumentu argument1,…) 
{instrukcje; 
return wartość;} 

Argumentowe bez zwracania wartości: 

void nazwaMetody (typArgumentu argument1,…) 
{instrukcje;} 

Bezargumentowe zwracające wartość: 

 typZwracanejWartości nazwaMetody () 
{instrukcje; 
return wartość;} 

Bezargumentowe niezwracające wartości: 

void nazwaMetody () 
{instrukcje;} 

Wyróżniamy jeszcze metody statyczne i niestatyczne. Metody statyczne, w przeciwieństwie do niestatycznych przy 
ich deklaracji zawierają słowo static przed typem zwracanej wartości. Metody statyczne należą do danej klasy i 
nie  modyfikują  obiektów  danej  klasy,  natomiast  metod  niestatycznych  możemy  użyć  tylko  razem  z  obiektem. 
Wywołanie metody niestatycznej: 

nazwaObiektu.nazwaMetody(argumenty,…); 

Wywołanie metody statycznej: 

nazwaKlasy.nazwaMetody(argumenty,…); 

background image

4. Program na ocenę bdb: 

brylaSim.java 

public

 

class

 brylaSim { 

 
 
 

public

 

static

 

void

 main(String[] 

args

) { 

 

 

brylaSztywna 

B

=

new

 brylaSztywna(3);  

 

 

 

//Przypisywanie wartosci punktom

 

 

 

B

.

P

[0].setX(0); 

 

 

B

.

P

[0].setY(1); 

 

 

B

.

P

[0].setZ(0); 

 

 

B

.

P

[0].setMass(1); 

 

 

B

.

P

[1].setX(1); 

 

 

B

.

P

[1].setY(0); 

 

 

B

.

P

[1].setZ(0); 

 

 

B

.

P

[1].setMass(2); 

 

 

B

.

P

[2].setX(0); 

 

 

B

.

P

[2].setY(-9); 

 

 

B

.

P

[2].setZ(1); 

 

 

B

.

P

[2].setMass(1); 

 

 

//Komunikaty

 

 

 

System.

out

.println(

"Srodek masy bryly ma wspolrzedne: 

("

+

B

.srodekX()+

";"

+

B

.srodekY()+

";"

+

B

.srodekZ()+

")"

); 

 

 

System.

out

.println(

"Moment bezwladnosci bryly wzgledem srodka masy 

rownolegly do OX wynosi: "

+

B

.momentX()+

", do OY: "

+

B

.momentY()+

", a do OZ: 

"

+

B

.momentZ()); 

 

 

 

 

 

punktM.java 

public

 

class

 punktM { 

 

//pola

 

 

private

 

double

 

mass

 

private

 

float

 

x

,

y

,

z

;

//Dodane na potrzeby bryly sztywnej

 

 

//konstruktory

 

 

public

 punktM (){

mass

=0;

x

=0;

y

=0;

z

=0;};

//konstruktor domyslny

 

 

public

 punktM (

double

 

mass

)

//konstruktor zwykly - uniemozliwia nadanie 

ujemnej masy

 

 

 

if

 (

mass

>0)  

 

 

 

 

 

this

.

mass

=

mass

 

 

 

 

else

 

 

 

 

 

 

this

.

mass

=0; 

 

 

 

 

//akcesory

 

 

public

 

double

 getMass(){

return

 

mass

;}

//akcesor czytajacy

 

 

public

 

void

 setMass(

double

 

mass

//akcesor piszacy - uniemozliwia 

nadanie ujemnej masy

 

 

 

 

if

 (

mass

>0)  

 

 

 

 

 

this

.

mass

=

mass

 

 

 

 

else

 

 

 

background image

 

 

 

this

.

mass

=0; 

 

 

 

 

//Modyfikacja i odczyt wspolrzednych

 

 

float

 getX(){

return

 

x

;} 

 

float

 getY(){

return

 

y

;} 

 

float

 getZ(){

return

 

z

;} 

 

void

 setX(

float

 

x

){

this

.

x

=

x

;} 

 

void

 setY(

float

 

y

){

this

.

y

=

y

;} 

 

void

 setZ(

float

 

z

){

this

.

z

=

z

;} 

 

//metody

 

 

public

 

double

 momentX(){

return

 

mass

*(

y

*

y

+

z

*

z

);}

//Oblicznie momentu 

bezwladnosci wzgledem osi OX

 

 

public

 

double

 momentY(){

return

 

mass

*(

x

*

x

+

z

*

z

);}

//Oblicznie momentu 

bezwladnosci wzgledem osi OY

 

 

public

 

double

 momentZ(){

return

 

mass

*(

x

*

x

+

y

*

y

);}

//Oblicznie momentu 

bezwladnosci wzgledem osi OZ

 

 

 

 

public

 

double

 momentSteinerX(

double

 

a

double

 

b

double

 

c

){

return

 

mass

*((

y

-

b

)*(

y

-

b

)+(

z

-

c

)*(

z

-

c

));}

//Oblicznie momentu wzgledem osi rownoleglej 

do OX

 

 

public

 

double

 momentSteinerY(

double

 

a

double

 

b

double

 

c

){

return

 

mass

*((

x

-

a

)*(

x

-

a

)+(

z

-

c

)*(

z

-

c

));}

//Oblicznie momentu wzgledem osi rownoleglej 

do OY 

 

 

public

 

double

 momentSteinerZ(

double

 

a

double

 

b

double

 

c

){

return

 

mass

*((

x

-

a

)*(

x

+

a

)+(

y

-

b

)*(

y

-

b

));}

//Oblicznie momentu wzgledem osi rownoleglej 

do OZ

 

 

public

 String toString(){

return

 

"Punkt Materialny"

;}

//opis obiektu

 

 

brylaSztywna.java 

public

 

class

 brylaSztywna { 

 

//Pola

 

 

private

 

int

 

iloscP

=0; 

 

punktM[] 

P

 

//Konstruktory

 

 

brylaSztywna (

int

 

ilosc

 

 

 

iloscP

=

ilosc

;  

 

 

P

=

new

 punktM[

iloscP

]; 

 

 

for

(

int

 

i

=0;

i

<

iloscP

;

i

++) 

 

 

 

 

 

P

[

i

]=

new

 punktM(); 

 

 

 

 

 

 

//Metody

 

 

//Wyznaczanie srodka ciezkosci

 

 

double

 srodekX() 

 

 

 

double

 

suma

=0; 

 

 

double

 

masa

=0; 

 

 

for

(

int

 

i

=0;

i

<

iloscP

;

i

++) 

 

 

 

 

 

suma

+=

P

[

i

].getMass()*

P

[

i

].getX(); 

 

 

 

masa

+=

P

[

i

].getMass(); 

 

 

 

 

return

 

suma

/

masa

 

 

double

 srodekY() 

background image

 

 

 

double

 

suma

=0; 

 

 

double

 

masa

=0; 

 

 

for

(

int

 

i

=0;

i

<

iloscP

;

i

++) 

 

 

 

 

 

suma

+=

P

[

i

].getMass()*

P

[

i

].getY(); 

 

 

 

masa

+=

P

[

i

].getMass(); 

 

 

 

 

return

 

suma

/

masa

 

 

 

double

 srodekZ() 

 

 

 

double

 

suma

=0; 

 

 

double

 

masa

=0; 

 

 

for

(

int

 

i

=0;

i

<

iloscP

;

i

++) 

 

 

 

 

 

suma

+=

P

[

i

].getMass()*

P

[

i

].getZ(); 

 

 

 

masa

+=

P

[

i

].getMass(); 

 

 

 

 

return

 

suma

/

masa

 

 

 

 

 

 

//Obliczanie momentow wzgledem srodka masy

 

 

double

 momentX() 

 

 

 

double

 

moment

=0; 

 

 

for

(

int

 

i

=0;

i

<

iloscP

;

i

++) 

 

 

 

 

 

moment

+=

P

[

i

].momentSteinerX(srodekX(),srodekY(),srodekZ()); 

 

 

 

 

return

 

moment

 

 

double

 momentY() 

 

 

 

double

 

moment

=0; 

 

 

for

(

int

 

i

=0;

i

<

iloscP

;

i

++) 

 

 

 

 

 

moment

+=

P

[

i

].momentSteinerY(srodekX(),srodekY(),srodekZ()); 

 

 

 

 

return

 

moment

 

 

double

 momentZ() 

 

 

 

double

 

moment

=0; 

 

 

for

(

int

 

i

=0;

i

<

iloscP

;

i

++) 

 

 

 

 

 

moment

+=

P

[

i

].momentSteinerZ(srodekX(),srodekY(),srodekZ()); 

 

 

 

 

return

 

moment

 

 

Wynik działania programu: 

Srodek masy bryly ma wspolrzedne: (0.5;-2.0;0.25) 
Moment bezwladnosci bryly wzgledem srodka masy rownolegly do OX wynosi: 
66.75, do OY: 1.75, a do OZ: 67.0 

Program najpierw podaje środek masy bryły o parametrach podanych wewnątrz programu, a następnie oblicza jej 
moment bezwładności względem tego środka masy równoległy do osi układu współrzędnych.