Sprawozdanie Lab 4, Studia i nauka, Sprawozdania i notatki, Informatyka, Jezyki obiektowe, Sprawozdania


0x01 graphic

SPRAWOZDANIE

Języki programowania obiektowego

ćwiczenie nr 4

Podstawy JAVA- „Dziedziczenie

Michał Grudziński

IMiR, Mechatronika gr.23

13.10.2010

Klasa punkt (super klasa)

package dane;

/**

* @author user

*

*/

public class punkt //deklaracja klasy(super)

{

private double m;

void setm(double mass) //Sprawdzenie i przypisanie

wartości do zmiennej

{

if(mass<0) m=0;

else m=mass;

}

double getm() //Zwrócenie wartości

{

return m;

}

punkt() //Konstruktor

{

m=0;

}

punkt(double a) //Konstruktor z parametrem

{

setm(a);

}

double moment() //Funkcja składowa licząca

moment bezwładności

{

return 0;

}

double st(double d)

{

return d*d*m+moment();

}

String opis()

{

return "Punkt materialny";

}

}

Klasa walec

package dane;

public class walec extends punkt //deklaracja podklasy

dziedziczącej z klasy

punkt

{

private double r ;

double getr(){

return r;

}

void setr(double a){ //sprwadzenie wartosci

zmiennej r

if(a<0) r=0;

else r=a;

}

walec(){

super(); //Konstruktor z odwołaniem do

kostruktora superklasy

r=0;

}

walec(double a ,double b){ //Konstruktor parametryczny

z odwołaniem do

kostruktora superklasy

super(a);

setr(b);

}

double moment(){ //obliczenie momentu

bezwladnosci

return 1/2*getm()*r*r;

}

String opis(){

return "walec";

}

}

Klasa kula

package dane;

public class kula extends punkt{ //Wszystkie deklaracje

konstruktory i funkcje

składowe są analogiczne do

klasy „walec”

private double r ;

double getr(){

return r;

}

void setr(double a){

if(a<0) r=0;

else r=a;

}

kula(){

super();

r=0;

}

kula(double a ,double b){

super(a);

setr(b);

}

double moment(){

return 2/5*getm()*r*r;

}

String opis(){

return "Kula";

}

}

Klasa pręt

package dane;

public class pret extends punkt { //Wszystkie deklaracje

konstruktory i funkcje

składowe są analogiczne do

klasy „walec”

private double r ;

protected double getr(){

return r;

}

void setr(double a){

if(a<0) r=0;

else r=a;

}

pret(){

super();

r=0;

}

pret(double a ,double b){

super(a);

setr(b);

}

double moment(){

return 1/12*getm()*r*r;

}

String opis(){

return "pret";

}

}

Program testowy

package dane;

/**

* @author user

*

*/

public class program {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

punkt obiekt_pkt= new punkt(5); //stworzenie obiektu dla

punktu i wyświetlenie

wartości obliczonych przez

funkcje składowe

System.out.println("Wartosc momentu: "+obiekt_pkt.moment() );

System.out.println("Wartosc steinera: "+obiekt_pkt.st(10) );

System.out.println(obiekt_pkt.opis() );

walec obiekt_walec= new walec(5, 6);

System.out.println("Wartosc momentu: "+obiekt_walec.moment());

System.out.println("Wartosc steinera: "+obiekt_walec.st(10) );

System.out.println(obiekt_walec.opis() );

kula obiekt_kula= new kula(5, 6);

System.out.println("Wartosc momentu: "+obiekt_kula.moment() );

System.out.println("Wartosc steinera: "+obiekt_kula.st(10) );

System.out.println(obiekt_kula.opis() );

pret obiekt_pret= new pret(5, 6);

System.out.println("Wartosc momentu: "+obiekt_pret.moment() );

System.out.println("Wartosc steinera: "+obiekt_pret.st(10) );

System.out.println(obiekt_pret.opis() );

punkt tablica[]= new punkt[4]; //deklaracja tablicy

tablica[0]= new punkt(2); //przypisanie nowych

wartosci tablicom

tablica[1]= new walec(2,3);

tablica[2]= new kula(2,3);

tablica[3]= new pret(2,3);

for (int n=0; n<=3;n++){ //pętla wyświetlająca wartości

zapisane w tablic

System.out.println("Wartosc momentu dla "+tablica[n].opis()+" wynosi: "+tablica[n].moment() );

System.out.println("Wartosc steinera dla "+tablica[n].opis()+" wynosi: "+tablica[n].st(10) );

}

}

}

Wynik programu

Wartosc momentu: 0.0

Wartosc steinera: 500.0

Punkt materialny

Wartosc momentu: 0.0

Wartosc steinera: 500.0

walec

Wartosc momentu: 0.0

Wartosc steinera: 500.0

Kula

Wartosc momentu: 0.0

Wartosc steinera: 500.0

pret

Wartosc momentu dla Punkt materialny wynosi: 0.0

Wartosc steinera dla Punkt materialny wynosi: 200.0

Wartosc momentu dla walec wynosi: 0.0

Wartosc steinera dla walec wynosi: 200.0

Wartosc momentu dla Kula wynosi: 0.0

Wartosc steinera dla Kula wynosi: 200.0

Wartosc momentu dla pret wynosi: 0.0

Wartosc steinera dla pret wynosi: 200.0

Odpowiedzi na pytania

1. Co zmienia zastąpienie pól prywatnych polami chronionymi w dziedziczeniu ?

Pola o charakterze prywatnym są dostępne jedynie wewnątrz danej klasy i nie ma do nich dostępu z poziomy innych klas. Co oznacza, że żadna inna klasa nie może ich ani odczytać ani zapisywać. Zmiana pól prywatnych na chronione zmienia możliwości dostępu do danych tej klasy. Pola chronione będą dostępne dla funkcji składowych danej klasy, jej klas potomnych oraz klas zawartych w tym samym pakiecie.

2. W jaki sposób i kiedy wywołuje się konstruktor superklasy?


W przypadku potrzeby odwołania się do konstruktora superklasy, należy go wywołać w odpowiedni sposób. Wywołanie takie wymaga konstrukcji ze słowem super, słowo to oznacza w tym przypadku wywołanie konstruktora superklasy:

Public
Class klasa_potomna extends klasa_bazowa
{
Klasa_potomna()
{
Super(argumenty); // wywołanie konstruktora superklasy
/*
…dalszy ciąg konstruktora
*/
}
}

3. W jaki sposób uzyskuje się dostęp do pól i metod superklasy?

Pola i metody mogą mieć różne rodzaje dostępu:



Wyszukiwarka